2023년 12월 2일 토요일

2023년 12월 1일 금요일

QCY T1earphone bluetooth 블루투스 이어폰 링크

 How to Pair 

Push both EarBuds into charging case to activate them then take out from the case and they will auto power on and pair with each other. Right EarBud will auto enter pairing mode when LED on left EarBud turns off. On cellphone, search for QCY-T1_R and tap to connect cellphone to both EarBuds. (Please try the following steps, in case you fail to build connection.) Power off two EarBuds and tap and hold MFBs on both of them for 20s (LED will blink red and white then turn off and 10s later blink red and white 3 times). Tap and hold two EarBuds for 1s to power on(LED blinks red white twice) and two EarBuds will auto pair with each other. Then right EarBud will auto enter pairing mode(LED blinks red and white) when LED on left EarBud turn off. On cellphone, search for QCY-T1_R and tap to connect both EarBuds with cellphone. Notes: if two EarBuds fail to pair with each other in 20s, they will enter pairing mode(connectable to cellphone).

2023년 10월 31일 화요일

compile problems of various manybody codes (in Ubuntu)

List of compile problems for various manybody nuclear physics codes. 

 (1) BigstickPublick : https://github.com/cwjsdsu/BigstickPublick
            gfortran had problems with MPI commands. 
        --> ifort could compile without problem
        or add compile option "-fallow-argument-mismatch"

 (2) imsrg : https://github.com/ragnarstroberg/imsrg
               missing libraries have to be installed. But, python binding was problem. 
        --> include python3 path in Makefile. (replace 'python-config' into 'python3-config') 

 (3) NuHamil : https://github.com/Takayuki-Miyagi/NuHamil-public
                 no submodule
        --> "git submodule init" and "git submodule update"               
                   missing hdf5.mod 
        --> add include path " -I/usr/include/hdf5/serial" 
                   cannot find -lhdf5_fortran 
        --> add path "-L/usr/lib/x86_64-linux-gnu/hdf5/serial" 

(4) HartreeFock:  https://github.com/Takayuki-Miyagi/HartreeFock 
                    no submodule 
        --> same solution as above 
                     argument mismatch 
        --> edit Makefile, Debug=off and add compile option "-fallow-argument-mismatch"


 Tips: In general, if some library is already installed but could not be found, solutions are usually add correct path/location. How to find the path os installed library in Ubuntu? 
 try " dpkg --get-selections | grep -v deinstall | grep [name]
then " dpkg -L packagename "to find the path.

2023년 8월 8일 화요일

VMware mount shared folder in Linux Guest

(0) Enable Shared Folder in WMware Setting. 

(1) Make folder /mnt/hgfs if not exists.

(2) Mount shared folder (here named VMware_shared)

 sudo vmhgfs-fuse .host:/VMware_shared /mnt/hgfs/ -o allow_other -o uid=1000

2023년 5월 1일 월요일

여론조사 신뢰구간 의미

학생때나 지금이나 통계학은 잘 이해가 안된다. 

여기서는 내가 이해하는 내용과 이해가 안되는 부분을 정리해보도록 하자. 

동전 던지기나 여론 조사처럼, 어떤 질문에 대한 답이 yes/no 일 확률이 일정하다고 하자. 

(즉, 베르누이 시행 문제로 생각하자.) 

예를 들어 동전을 던졌을 때 앞면이 나오는 확률, 전체 집단에서 특정 인물을 지지할 확률이 p 라고 하자. (이때 전체 집단의 개체수가 충분히 크다고 가정한다.)  

동전 던지기를 n 번 또는 사람 n 명을 뽑아서 여론조사를 하면, 표본에서의 앞면의 비율 또는 지지율을 얻을 수 있다. 문제는 이것이 진짜 비율 p 와 일치한다고 얼마나 확신할 수 있을까? 예를 들어 p=0.5 일때, 아주 운이 나빠서, 10번 연속으로 앞면만, 또는 10명 모두 지지하는 사람만 나올 수도 있을 것이다. 이 경우 표본에서 얻은 비율은 100% 이지만, 실제로는 50% 가 된다. 당연히 이런 일이 일어날 확률은 작을 것으로 생각할 수 있지만, 얼마나 작은 것일까? 

베르누이 시행의 경우, n개를 뽑았을 때의 측정 값이 r 일 확률은 이항분포에 의해 구할 수 있다.    P(r) = n C r * p^r (1-p)^(n-r) 

즉, 예를 들어 5명을 뽑아서 여론 조사를 했을때, 지지자의 수가 0 일 확률은 1*p^0*(1-p)^5,

1일 확률은 5*p^1*(1-p)^4, 2일 확률... 5일 확률은 1*p^5(1-p)^0 이 된다. 

실제 지지율이 p=0.4 라고 하면, 5명중 2명이 지지할 때 정확한 값을 얻게 된다. 그러나, 각 확률을 보면 대략 P(0) ~ 7.7%, P(1) ~ 25.9%, P(2) ~ 34.6%, P(3)~ 23%, P(4) ~ 7.7%, P(5)~1% 정도가 된다.  즉, 여론 조사가 정확할 확률은 35% 정도에 불과하다. 여기서 기준을 조금 완화해서, 정확한 값이 아니라 1명 정도 틀리는 것을 포함한다고 하면 약 83.5% 정도의 확률이 된다. (대략 계산한 값이다.) 

즉, 5명 표본에서 여론 조사 결과 1명에서 3명 정도 지지자가 나올 확률이 83.5% 정도이고, 이정도의 신뢰도를 가지고 표본에서 얻은 지지자 수가  +/-1명 범위에서 맞을 것으로 생각할 수 있다. 이렇게 얼마나 신뢰할 것인지의 범위 (83.5 %)를 정하면, 정확한 값이 표본 값에서 구한 값에서 몇 명 범위에 있을 것인지(즉, 오차의 범위)가 정해지게 된다. 

당연히, 표본의 크기를 늘리면 늘릴 수록 표본에서 얻은 값이 정확한 값에 가까워질 것으로 예상할 수 있다. 

베르누이의 큰 값 정리 나 중심 극한 정리는  이렇게 표본의 크기 n를 키웠을 때, 표본의 값이 가지는 확률 분포가 정규분포에 가까워진다는 것이다. 

중심 극한 정리에 의하면, 표본의 크기가 충분히 클 경우, 이러한 표본을 여러번 뽑았을 때, 표본 값의 분포는 그 평균값이 모집단의 값과 같아지고 , 표준편차가 sigma=(모집단 표준편차)/sqrt(n) 이 된다고 한다. 

이것이 의미하는 바는 

(1) 표본의 크기가 크면 클수록 표본에서 얻은 평균 비율 값이 정확한 값에 가까워 진다. 

(2) 표본의 크기가 크면 클수록, 여러개의 표본 값의 분포가 좁아진다. (즉, 같은 표본 값을 가지는 비율이 커진다.) 

(3) 정규분포를 이용하면, 특정 표본의 값이 정확한 값의 p 부근의 (p-sigma,p+sigma) 범위에 있을 확률이 약 65%, (p-2 sigma, p+2 sigma) 범위안에 있을 확률이 약 95%, (p-3 sigma, p+3 sigma) 범위에 있을 확률이 약 99.7% 임을 알 수 있다. 


즉, 예를 들어 정확한 지지율이 0.4 일때, (이 경우 모집단의 표준편차는 sqrt(p(1-p)) = 0.49) 

1000명 정도의 표본을 사용할 경우, sigma ~0.49/sqrt(1000) ~ 0.015 가 얻어지고, 

 표본값이 (0.4 -0.015, 0.4+0.015) 범위에 있을 확률이 약 65%, 

(0.4-0.03,0.4+0.03) 범위에 있을 확률이 약 95% 라고 예상된다는 것이다. 


이렇게 정확한 확률 p를 아는 경우, 특정 표본의 크기에서 표본 값을 얻을 확률은 구할 수 있다.  문제는 우리는 실제 정확한 값 p 도 모집단의 표준편차값도 알 수 없다는 것이다.  (물론, 얻어진 표본의 값이 실제로 어디에 위치하는 것인지도 알 길이 없다. )

따라서, 사용하는 방법은 모집단의 표준편차가 가장 큰 경우 p=1/2을 이용하거나, 표본의 표준 편차를 이용하여 오차범위 를 추산하는 것이다.(이부분이 잘 이해가 안된다. 표본의 표준편차를 이용하는 것이 정말 믿을 만한 것일까?) 

 즉, 표본 지지율의 표준 편차는 2*sigma = 1/sqrt(n) 으로 추정할 수 있다. 표본에서 얻어진 지지율이 (p-2 sigma, p+2 sigma) 범위 안에 있에 있을 확률이 약 95% 가 된다고 볼 수 있고, 이때의 오차 범위는 2 sigma 정도라고 생각할 수 있다. 예를 들어, n~1000명일 경우,  2 sigma ~ 0.03 ~ 3% 가 된다. 따라서, 아마도 실제 지지율은 95% 신뢰도에서 표본에서 얻어진 지지율의 +/- 3% 범위 안에 있을 것이 예상된다. 물론, 이것은 하나의 표본에 대해서 얻어진 지지율이 틀릴 가능성이 있다. 사용된 표본이 역시 평균에서 벗어난 것일 확률이 여전히 있기때문이다. 보다 확실하게 하기 위해서는 표본의 크기를 늘리거나, 여러개의 다른 표본을 만들어서 그 평균값의 분포를 보는 것이 좋을 것이다. 


하지만, 여전히 정말 겨우 1000명 정도의 표본만 이용하여 얻은 결론이 정말 믿을 만한 것인지는 의문이다. ( 동전 던지기의 경우는 1000번 정도면 충분하지 않을까 하는 생각이 들지만. 여론조사의 경우 인구 1억인 나라에서 1000명 만으로 충분한 것일지 의문이 든다.

동전의 경우는 모든 시행에서 동전이 동일하다고 가정하는 것이 타당해 보이지만, 사람의 경우에는 모든 사람을 동일하게 취급하는 것이 정말 맞는 것일까? ) 

(위 계산에서 알 수 있는 것은 오차 범위는 모집단의 크기가 얼마이건 거의 영향을 받지 않는다는 것이다. 물론 처음부터 모집단의 크기가 충분히 크다고 가정했기 때문이다.) 아마도 핵심은 표본의 추출이 얼마나 고른가일 것이다. 1000명을 뽑는 과정에서 지역, 나이, 성별등에 따른 차이가 있을 경우에는 오차범위가 3%일 것이라는 추산이 틀릴 가능성이 있다고 생각된다.


추가: 표본의 분산값을 모평균으로 사용하는 경우에는 위식에서 표본평균의 표준 편차를 

sigma^2 = (모분산)/n 아니라 sigma^2 = (표본분산)/(n-1)로 계산한다고 한다. 왜 일까? 

먼저 용어의 정의를 명확히 하자. 


모평균 : 모집단 내에서의 평균값 mu = 1/N sum_{i=1}^N x_i 

모분산 : 모집단 내에서의 분산 (모분산) = (x^2 의 평균) - (x의 평균)^2 = 1/N*sum_i (x_i- <x>)^2


표본(내)평균: 주어진 표본(크기는 n이라고 하자)내에서 계산된 평균값. 

              (표본평균) = 1/n * sum_{i=1}^n x_i 

              이러한 표본 평균의 값은 경우에따라 모평균보다 클 수도 있고 작을 수도 있다. 

표본(내)분산: 주어진 표본에서 각 값들이 표본 평균으로 부터 얼마나 떨어져 있는 지를 나타내는 값.

             (표본(내)분산) = 1/n*sum_{i=1}^n (x_i - <x>)^2 

             이러한 표본(내)분산값은 각 표본마다 다를 것이다. (여기에 (내)는 내가 편의상 정한 이름이다.) 


표본평균 분산: 표본의 여러개 만들어서 각 표본평균의 분포를 보면, 

              표본평균의 평균값과 분산을 얻을 것이다. 

              이렇게 표본평균의 분포에서의 분산을 표본 평균 분산이라고 부른다.

              즉, 표본평균 분산과 표본(내)분산은 다른양이다. 

              중심극한 정리는 표본의 수가 커지면 

              표본평균의 평균값이 모평균과 같아지고, 

              표본평균의  분산이 모분산에 대해 

               (표본평균 분산) = (모분산)/n 

              이 된다는 것이다. 


극단적인 경우를 생각하면, 

n=N일 경우, 표본 평균의 분산은 0 이 될 것이고,(표본내분산은 모분산과 같아짐, N이 매우 크다고 가정)

n=1 인 경우에는 표본평균의 분산은 모분산과 같아질 것이다.  (표본내 분산은 0)

따라서, 표본내 분산, 모분산, 표본평균분산 사이에는 표본의 크기에 따라 일정한 관계가 있음을 알 수 있다. 


(모분산) ~ (표본(내)분산) + (표본평균 분산) = (표본(내)분산)+(모분산)/(n) 


이로부터 (표본(내)분산) ~ (n-1)/n*(모분산) 의 관계가 있다. 이것이 의미하는 바는 

표본(내)평균값은 모평균과 다를 수 있지만, 표본(내)분산은 원래의 모분산과 거의 같다는 것이다. 물론, 완전히 같지는 않고, 표본(내)분산은 모평균보다 항상 약간 작다. 

(물론, 이 경우에도 아주 극단적으로 치우쳐진 표본이라면, 표본내 분산과 모분산이 일치하지 않을 수도 있을 것이다. )

따라서 (표본(내) 분산)/(n-1)을 하면 (모분산)/n 을 이용하는 것과 비슷할 것으로 예상할 수 있다. 즉, 모분산을 모르더라도 표본(내)분산을 이용하여 추정할 수 있다. 

(당연히 이런 식이 성립하려면, 모집단의 크기와 표본의 크기가 모두 충분히 크고 균질해서, 표본 안에서의 분포가 모집단의 분포를 반영할 수 있어야 한다.) 




 


2023년 4월 3일 월요일

결착은 일본식 한자어

 적어도 10년전까지는 결착이란 단어를 본 적이 없었던 것 같은데 최근 들어 심심치 않게 들린다. 심지어는 방송에도 등장하는 것 같다. 혹시나 싶어 찾아보니, 일본식 한자어인 것이 거의 확실한 것 같다. 비록 사전에 등재되어 있다곤 하지만 일제 이전 과거 기록에서 사용된 예가 거의 없다고 한다. 개인적으로도 이전에 들어본 단어가 아니기 때문에 확실하다고 본다. 도대체 왜 이런 단어가 쓰이게 된 것일까? 아마도 일본  만화나 애니메이션 번역 과정에서 일본식 한자어를 그대로 사용했기 때문일 것이다. 충분히 승부,매듭을 짓다 등의 익숙한 표현들이 있는데  그대로 쓴 것은 번역자의 게으름이라고 볼 수 밖에 없다. 문제는 이런 사실을 모른체 사용하는 사람이 늘고 있다는 것이다. 심지어 열혈강호 라는 국산만화에서도 결착이라는 단어를 사용하는 것이 충격적이었다. 일본식 한자의 사용을 경계하는 것이 무리인 것일까?   일본 문화를 즐기는 것 자체는 문제가 없다고 볼 수도 있겠지만 아마도 더 큰 문제는 청소년들이 일본 문화를 즐기면서 자신도 모르게 일본에 동화되어 가는 것이 아닐까 싶다.

2023년 3월 22일 수요일

GEANT4 설치 Ubuntu 22.04

Geant4 , Ubuntu, Qt 등의 version이 바뀜에 따라 인터넷에서 찾아본 설치과정이 더 이상 옳지 않은 경우가 생겼다. 

그래서, 현재 버전 (Geant 4 v.11, Ubuntu 22, Qt 5)에 맞는 설치 방법을 찾아야 했다.

설치 과정은 다음 링크를 주로 참고 했다.  

 https://evanote.mew.kr/course/g4install/ubuntu/g4install-111-ubt2204/


List of steps to install Geant4 in Ubuntu

(1) 시스템 업데이트 

sudo apt update -y && sudo apt upgrade -y && sudo apt autoremove -y

(2) 필수 프로그램 설치

sudo apt install -y build-essential

sudo apt install -y cmake

sudo apt install -y libexpat1-dev

sudo apt install -y libxmu-dev

(3) Qt 설치:

웹페이지에는

sudo apt install -y qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools

이면 충분하다고 되어 있으나,Qt53D 실행에 문제가 있어서, 아예 remove하고

새로 Qt 를 정식 홈페이지에서 다운 받아 설치 했다.

(4) Geant4 source 코드를 다운 받음.

(5) cmake를 이용하여 build 준비 

sudo cmake <source path > -DCMAKE_INSTALL_PREFIX="<install path>" -DGEANT4_BUILD_MULTITHREADED=ON -DGEANT4_INSTALL_DATA=ON -DCMAKE_PREFIX_PATH="< Qt path >Qt/5.15.2/gcc_64/lib/cmake/" -DGEANT4_USE_QT=ON

(6) build and install
sudo make && make install


예제코드를 compile하기 위해서는 

cmake < example path > && make 

를 하면 된다. 

2023년 2월 13일 월요일

c++로 짜여진 코드에서 흔히 보는 세 연산자 "::" , "->", "." 의 차이

 c++로 짜여진 코드에서 흔히 보는 세 연산자 "::" , "->", "."   의 차이 


세 연산자 모두 멤버 함수나 변수에 접근하기 위해 사용된다.

그 차이는 접근하는 방법에 있다. 


https://stackoverflow.com/questions/11902791/what-is-the-difference-between-and-in-c


(1) Dot operator is used in direct member selection scenarios.

print(a.b)

Here, we are accessing b, which is a direct member of an object a. So, primarily, a is an object and b is a member (function/ variable etc) of a.

즉 여기서 a 는 object 


(2) Arrow operator is used in indirect member selection scenarios.

print(a->b)

Here, we are accessing b which is a member of the object, that is pointed to by a. It is shorthand of (*a).b and so here, a is primarily a pointer to an object and b is a member of that object.

즉, 이 경우 a 는 pointer 

(3) Double Colon (Scope) operator is used in namespace related direct member selection scenarios.

print(a::b)

Here, we are accessing b which is a member of the class/namespace a.So, primarily, a is a class/namespace and b is a member (function/ variable etc) of a.


즉, 이 경우 a 는 class/namespace. 

2023년 2월 7일 화요일

일생소애 一生所爱

 얼마전 넷플릭스에서 선리기연을 오래간만에 다시 보았다. 이미 여러번 보았기 때문에, 예전과 같은 재미나 감동을 느끼지는 못했지만, 여전히 일생소애(一生所爱) 노래가 흘러나오는 부분에서는 아련함을 느낄 수 있었다. 노래의 가사를 잘 몰랐기 때문에 인터넷으로 한 번 찾아보았는데, 중국어를 하나도 모름에도 대강의 뜻을 파악할 수 있었다. 오히려 한국식 한자 음을 붙여보니, 신선한 재미가 있었기에, 여기에 적어본다. (한 번 한국식 한자음으로 노래를 불러보라. 색다를 것이다.) 

인터넷에서 찾아본 바로는 가사의 한자가 조금 다른 경우가 있었다. 어느 쪽이 맞는지 모르므로, 그냥 한자와 해석을 나무 위키에 있는 것을 가져왔다.(중국어 해석이 맞는지 모름) 중국음은 역시 나무위키를 볼 것. 여기서는 각 한자를 풀어 보기만 하겠다.

從前現在過去再不來
종전현재과거재불래
(쫓을 종, 앞 전, 나타날 현, 있을 재, 지날 과, 갈 거, 두 재, 아니 불, 올 래)
흘러간 시간은 한 번 가면 다시 오지 않는 것이라

紅紅落葉長埋塵土內
홍홍낙엽장매진토내
(붉을 홍, 붉을 홍, 떨어질 락, 잎 엽, 길 장, 묻을 매, 티끌 진, 흙 토,안 내)
울굿불긋한 낙엽이 흙먼지에 묻혀만 가듯이

開始終結總是沒變改
개시종결총시몰변개
(열 개, 비로소 시, 마칠 종, 맺을 결, 다 총, 이 시,빠질 몰, 변할 변 ,고칠 개)
시작이 있으면 끝이 있음은 바꿀 수는 없는 법인 즉

天邊的你飄泊在白雲外
천변적니표박재백운외
(하늘 천, 가장자리 변, 과녁 적, 너 니(이), 나부낄 표,머무를 박,
있을 재 ,흰 백,구름 운,바깥 외)하늘가의 당신은 흰 구름 저 멀리에서 아른거릴 뿐이오

苦海翻起愛恨
고해번기애한
(쓸 고, 바다 해,날 번,일어날 기,사랑 애,
한 한)
고해속에서 반복되는 사랑과 미움은,

在世間難逃避命運
재세간난도피명운
( 있을 재, 인간 세,사이 간,어려울 난,도망할 도,
피할 피 ,목숨 명, 옮길 운)
속세에서는 피하기 어려운 운명이라네

相親竟不可接近
상친경불가접근
(서로 상, 친할 친,마침내 경, 아닐 불, 옳을 가, 이을 접,가까울 근)
서로 사랑하지만 끝내 곁에 두지 못하는

或我應該相信是緣份
혹아응해상신시연분
(혹 혹,나 아,응할 응,갖출 해,서로 상, 믿을 신,이 시/옳을 시,인연 연,부분 분)
이것이 운명임을 받아들여야겠지


情人別後永遠再不來
정인별후영원재불래
(뜻 정,사람 인,나눌 별,뒤 후, 길 영,
멀 원 , 두 재, 아닐 불, 올 래)
떠나간 사랑은 다시 돌아올 수 없으리니

(消散的情緣)
소산적정연
(사라질 소, 흩을 산, 과녁 적, 뜻 정, 인연 연)
(사라져버린 정분이여)

無言獨坐放眼塵世外
무언독좌방안진세외
(없을 무, 말씀 언, 홀로 독, 앉을 좌,
놓을 방 , 눈 안, 티끌 진,인간 세,
바깥 외 )
말없이 홀로 앉아, 눈은 저 멀리 속세 밖을 보네.

(願來日再續)
원내일재속
(원할 원 , 올 래,날 일,두 재,이을 속)
(내일은 다시 이어지기를)

鮮花雖會凋謝(只願)
선화수회조사(지원)
(고울 선, 꽃 화,비록 수 ,모일 회, 시들 조,사례할 사, 다만 지,원할 원 )
곱던 꽃은 이내 시들어버리지만 (바라건대)

但會再開(為你)
단회재개(위니)
(다만 단,모일 회,두 재, 열 개,할 위 , 너 니(이) )
다시 피어날지어다 (당신을 위하여)

一生所愛隱約(守候)
일생소애은약(수후)
(한 일 ,날 생 ,바 소,사랑 애,숨을 은 , 맺을 약,지킬 수 ,살필 후)
평생 사랑했던 그대지만 이젠 그대 모습 마음에 어렴풋하네. (기다리고)

在白雲外(期待)
재백운외(기대)
(있을 재 ,흰 백, 구름 운, 바깥 외, 기약할 기, 기다릴 대)
흰 구름 밖에서... (또 기다리리라)