[카테고리:] 학술
-
나머지 하나
0, 1, 2의 인덱스를 가지는 어떤 놈이 있다. 즉, a[0], a[1], a[2]가 있다. 이 셋의 인덱스를 순서대로 재 배열해야 하는데, a[0]은 셋중 가장 작은 것, a[2]는 셋중 가장 큰 것, a[1]는 나머지 하나. 가장 큰 것과 가장 작은 것은 알아낼 수 있는데 나머지 하나가 어떤 것인지 알아내야 한다. 그냥 정렬하면 되지 않나 싶은데, 원래 어떤 인덱스를 갖고 있었는지 보존시켜야 하는 상황이다.인덱스 중 가장 작은 것이 갖고 있던 걸 m, 가장 큰 것이 갖고 있는 것을 M이라고 하자. 그럼 나머지 하나의 인덱스 x는
x = (m + M) * 2 % 3
으로 표현된다.
(0,1)인 경우 2, (0,2)인 경우 1, (1,2)인 경우 0이 나온다.아무튼 이런 함수가 필요한 상황이어서 만들었다.
-
평균과 분산이 바뀔 때
프로그램을 만들다 보니 별걸 다 하게 되는 상황이다. (납땜하다가 사포질하다가 왜 프로그래밍이냐면, 웃지요 -_-; 내 일이 원래 그렇다. 뭐든지 다 하는…)실험 결과를 분석하는 프로그램인데, 분석은 별게 아니라 입력값의 평균과 표준편차(분산의 제곱근)를 계산하는 프로그램이다. 문제는 입력값을 적절히 구분해야 한다는 점이다. 즉, 지금 읽어온 입력값이 마지막 값이 아닐 수도 있다는 것이 문제점이다. 원래는 다음과 같이 프로그램을 설계해야 한다.
항목이 여러개 있다. A샘플, B샘플 …
각 샘플마다 실험 측정값이 있다. 1번, 2번, …
당연히 각 샘플마다 평균과 분산을 구해야 한다. 문제는 샘플이 순서대로 정렬되어 있지 않고 뒤섞여 있다는 점이다.1. 샘플을 순서대로 정렬한다.
2. DB에 넣어서 Group by로 묶은 후 평균과 분산을 구한다.알고리즘은 이게 가장 단순한데 실제 구현은 삽질이다. 왜냐하면 난 VB.net에서 개발을 하려고 하고 있고, 여기서 DB를 쓰려면 MSSQL을 쓰든가 전에 여기서 언급했던 SQLite의 VB 포트를 쓰든가 해야 하는데, 어쨌거나 SQL까지 다루는 건 골치아픈 일이다. 따라서 저 정렬 부분을 직접 구현해야 하나 하는 고민이 들다가 귀찮으니까 그러지 말자고 생각했다.
1. 데이터 테이블을 싹 읽어서 샘플이 어떤 종류가 있는지 목록을 만든다.
2. 목록에서 순서대로 읽어다가 평균과 분산을 구한다. 즉, 데이터 테이블을 읽으면서 A샘플 값만 골라서 평균과 분산을 구하고, 데이터 테이블을 또 읽으면서 B샘플 값만 골라서 구하고 … 끝날때까지 반복.그나마 조금 단순하지만 데이터 테이블을 너무 여러번 읽는다. 더군다나, 항목 구분이 샘플로만 이뤄지는게 아니라 실험 날짜와 샘플의 위치에 따라서도 달라진다. 즉, 같은 샘플이라도 다른 날짜라면 따로 분석해야 하고, 다른 위치라고 해도 따로 분석해야 한다. 이러면 항목 구분 목록을 여러개 만든 후 각각의 목록을 이용해서 모든 경우의 수를 다 따지는 루틴을 넣어야 하는데 이건 다시 삽질이다.
그래서
1. 데이터 테이블에서 한줄을 읽어온다.
2. 기존에 없던 항목 구분이면? 새로 항목 구분을 만들어 주고 데이터 분석을 갱신한다
2. 기존에 있던 항목 구분이면? 해당 항목 구분에 데이터 분석을 갱신한다
3. 끝까지 간다.여기에 데이터 분석을 갱신하는 루틴이 추가되는데 이게 조금 수학적이다. 그래서 이 글은 수학에 구분되어 있다.
지금까지 N개의 자료를 이용해서 평균과 분산을 계산했다고 하자. 이걸 $m$과 $\sigma^2$라고 하자. 그런데 여기에 N+1번째 자료인 $x_{N+1}$가 새로 들어왔다. 어쩌지?
새로운 평균 $m’$은 다음과 같이 구할 수 있다. (왜 그런가는 암산으로 해보자.)
$m’ = \frac{mN+x_{N+1}}{N+1}$그리고 새로운 분산 $\sigma ‘ ^2$은 다음과 같이 구할 수 있다. 왜 그런가는 직접 계산해 보자.
$\sigma ‘ ^2= \frac{N(\sigma ^2 + m^2) + x_{N+1}^2}{N+1} – m’^2$
어쨌든 위와 같은 간단한 계산으로 자료가 추가될 때마다 평균과 분산을 갱신할 수 있다. 물론 이게 위에서 여러번 읽어오는 알고리즘보다 더 계산양이 적을지 어떨지는 모르겠다. 난 단지 이런 방식으로 프로그램을 만들고 싶었을 뿐이다.
————-
최근에 이 알고리즘을 다시 사용해야 해서 생각해보니, 그냥 단순하게 계산해도 된다.
N개의 자료의 평균과 분산을 알고 싶으면, x(i)의 합과 x(i)의 제곱의 합을 일단 다 계산한다.
그리고 자료를 출력하라고 요청하는 시점에 평균과 분산을 한번만 계산하면 된다.처음에 생각한 공식은 점화식으로 주어진 공식이었고 좀 더 흥미로운 계산이지만, 컴퓨터한테 일 시키려면 새로 생각한 방법이 좀 더 나을 것 같다. (물론, 처음의 공식도 쓸모가 있긴 하다.)
-
얼마나 대충 살면 적당할까?
http://blog.aladin.co.kr/sanga/4740583
“영원히 살 것 처럼 배우고 내일 죽을것 처럼 살아라” 라는 말이 있다. 누가 했는지 그 말 참 멋있다. 그러나 그렇게 살기는 좀 힘들어 보인다.
아무리 생각해도 내가 내일 죽을 것 같진 않기 때문이다. (영원히 살 것 같지도 않다.) 극단적으로 치열한 삶의 한 단면이랄까.
어느정도로 적당히 살면 적당할까? 어차피 죽긴 죽을텐데 말이다.
내 생각에는, 100년 정도 살 것 처럼 배우고, 한 5년후에 죽을 것 처럼 살면 적당하지 않을까 싶다.
이런 생각의 반대쪽 극단에는 영원히 살 것처럼 그냥 살고, 내일 죽을 것 처럼 배우는 것이 있겠다. 잘 생각해보면 이것도 그렇게 사는 것이 가능하기만 하다면, 뭔가 그럴듯하게 느껴진다.
어떻게 살 것인가. 정하는 것도 본인의 몫이고 지키는 것도 본인의 몫이며 바꾸는 것도 본인의 몫이다.
-
노란색
http://popsci.hankooki.com/popsci_news/view.php?news1_id=7628
빛은 삼원색만 있는게 아니요…
노란색이 다 같은 노란색이 아니고, 두 파장의 빛이 섞인 경우도 있고 한 파장의 빛으로만 이루어진 경우도 있겠지.
둘이 섞인거라면 붉은 유리를 통과한 후에 붉은색과 노란색을 구별할 수 없겠지만, 단일 파장으로 이루어진 경우라면 붉은 유리를 통과한 후에도 붉은색과 노란색을 구별할 수 있을 것이다.
앞부분에는 제대로 된 과학적 사실을 적어두고서 막판에 반전이 있는 기사를 쓴건지 모르겠다.
-
중성미자 검출실험 RENO
지난 토요일에 교수님의 초청으로 RENO 실험실에 다녀왔다.피자를 먹느라 자세히 보지는 못했지만 (어차피 자세한 설명은 물리학회에서 들었지만) 아무튼 꽤 큰 물통에 섬광검출기용 액체를 채워넣는 과정이 거의 마무리 되어 가는 중이라고 한다. 아마 다음달부터는 중성미자 검출을 시작하지 않을까 싶다. (내 추측임. 공식적인 일정은 모름.)
차에서 찍은 원거리 검출기쪽 실험동 사진. 물론, 보다시피 컨테이너다.-_-;
지옥의 입구는 아니고, 중성미자 검출기가 있는 동굴로 들어가는 입구이다. 300미터쯤 들어간다.
내 스마트폰은 셀카를 찍기가 참 곤란하다. 저 뒤에 있는게 액체 섬광 검출기에 들어가는 액체를 혼합하는 탱크다. 매우 복잡한 공정을 거쳐서 만들어지는 용액이다.
뒤에 있는게 뭔지 모르겠다. 덜 흔들려서 맘에 드는 사진. 왼쪽에 보이는 분은 나의 석사 지도교수님이시다. 심령사진 아님.
다 구경하고 교수님과의 토론을 마치고 집에 가는 길에 잠깐 찍었다. 내비게이션에 안 나오더라.
중성미자 검출 실험인 RENO실험을 간략히 설명하자면, 중성미자 섞임각 중 1-3 섞임에 해당하는 각도를 측정하는 실험이다. 입자물리학의 표준모형에서 예언된 값들 중에 아직 모르는 것이 힉스 입자이고 이것은 LHC에서 열심히 찾고 있다. 그리고 중성미자 섞임은 입자물리학의 표준모형에서는 예측되지 않는 현상이다. 그리고 그중 1-2섞임과 2-3섞임, 그리고 질량 사이의 차이값은 어느정도 밝혀져 있다. 아무튼 그중 모르는게 1-3섞임각인데, 이걸 알기 위해서는 2개의 검출기가 필요하다.
기본적으로는, 입자물리학 실험이므로 입자를 만들어야 하고 입자를 검출해야 하는데, 입자를 만드는 것은 원자력 발전소에서 한다. 원자력 발전에서 사용되는 핵 반응은 매우 잘 알려져 있고 거기에서 나오는 중성미자가 어떤 종류이며 어떤 에너지를 갖는지는 이론적으로 잘 예측할 수 있다. 또한, 원자력 발전소의 출력을 알고 몇번의 교정을 거치면 어떤 종류에서 몇개의 중성미자가 나오는지도 알아낼 수 있다. 즉, 입자의 출발은 잘 알려져 있다. 그럼, 이제 1-3섞임각을 측정하기 위해서는 얼마나 많이 사라지는지를 알아내야 하는데, 이걸 위해서 가까운 곳과 먼 곳에 하나씩 검출기를 둔다. 두 곳에서 검출되는 중성미자의 비율을 잘~~ 분석하면 1-3섞임각을 얻어낼 수 있다. 교수님께서 내년에 시간 있으면 나보고 그 분석을 조금 도와달라고 하셨다. (레이저-플라즈마 실험실에서 일하느라 잊고 살지만, 전공은 입자물리학이며 석사학위논문은 중성미자에 대해서 썼다. -_-;;)
올해 하반기부터는 주말마다 시간 있으면 오라고 하시는데…
나는 시간이 있어야 하는건가…-_-;;;
아무튼 그 결과가 기대되는 실험이다. 좋은 결과(논문 쓸만한 결과)가 많이 나오기를 기대한다. 나도 좀 쓰게.
-
공정한 사회
요새 정부에서 공정한 사회를 만들자고 외치고 있다. 좋은 일이다.
1
공정함이란 무엇일까?
억울함이 없으면 공정한가? 원칙이 지켜지면 공정할까? 기회가 균등하면 공정할까?
그리고 공정함이 필요하긴 할까?
공정함과 공평함은 어떻게 다를까?
집안에 돈이 많아 고액 과외를 받은 학생이 집안이 가난하여 공부를 많이 하지 못한 학생보다 시험을 잘 보는 것은 공정한 것일까? 아니면 공정하지 않은 것일까?
어딘가의 노점상은 대통령이 와서 맛있게 먹고 갔다는데, 그래도 도시 미관을 위해 단속되어 철거되었다. 어쨌든 단속 과정은 법대로 한 것이다. 법과 원칙이 지켜지는 아름다운 세상은 공정한가? 조금 느낌이 이상하니까, 법이 틀렸다고 하자. 그렇다면, 노점상을 허용하는 쪽으로 법이 개정되어서 길거리가 노점상으로 뒤덮인다면 그것은 공정한가? 노점상으로 뒤덮이지는 않고, 적절히 몇개 정도 있는, 미관도 해치지 않고 나라의 자랑거리가 되었다고 하자. 이 경우에 노점상을 살리기 위해 법을 개정한 것은 공정할까?
웬만한 남자들은 다 가는 군대를, 치과 치료를 받고 몇번 연기했다가 정신차려보니 면제가 되어 있었던 사람이 있다. 이 과정은 위법하다고 오해받을 수도 있지만 병역법 위반은 아니므로 면제 판정을 받은 것은 합법적인 과정이다. 군대에 꼭 가고 싶다는데, 이 사람은 법을 어기고 군대를 보내는 것이 공정한가? 그냥 면제로 두는 것이 공정한가?
아니면, 이 사람을 위한 특별법을 만들어서 군대를 합법적으로 갈 수 있도록 하는 것이 공정한가? 일단, 군 면제 판정을 받았다는 것 자체가 정상적인 군 생활을 할 수 없다는 점을 염두에 두자.무상급식에 관해 이야기 하는 것이 요즘 대세중의 하나인데, 돈이 많은 사람의 자식들까지 모두 전면 무상급식을 하는 것이 공정할까? 아니면 돈이 없는 사람들의 자식들만 무상급식을 하고 돈이 많은 사람들은 유상급식을 하는 것이 공정할까? 예산 문제는 공정함과 관련이 없으므로 생각하지 않는다. 선별적 무상 급식의 경우에 무상 급식을 먹는 아이들이 가난한 사람으로 찍혀버린다는 낙인 효과는 공정함과 관련이 있을 수 있지만, 무상급식의 직접적인 효과가 아니라 간접적인 효과이므로 이것도 생각하지 않는다. 어느 쪽이 공정한가?
http://fair.korea.kr/newsWeb/pages/special/fair/fairSection/fair.jsp
여기에 보면, 출발은 물론 경쟁 과정을 공평하게 함으로써 경쟁자들이 그 결과에 대해 공감하고 스스로 책임지게 하는 것을 말한다. 부패가 없고 균등한 기회가 보장되며 약자를 배려해 그들이 다시 일어설 수 있게 뒷받침하는 사회이다.
2
경쟁 과정이 공평하면 경쟁자들은 그 결과에 공감할까? 자동차 경주를 생각해 보자. 출발선을 똑같이 두었다. 이것은 출발이 공평한 것이다. 똑같은 차를 이용하도록 했다. 이것은 경쟁 과정이 공평한 것이다. 그러나, 경쟁자 중에 돈이 많은 사람은 돈을 더 들여서 더 빠른 차를 사용하고 싶을 것이다. 그런 경쟁자는 그 결과에 절대 공감할 수 없다. 그럼, 돈이 많은 사람에게 자신이 구입한 차를 사용할 수 있도록 하자. 그럼 돈이 없는 사람은 역시 그 결과에 절대 공감할 수 없다. 누군 그런차 쓰기 싫어서 안쓰나? 돈이 없으니 못쓰는거지. 경쟁자들이 모두 공감할 수 있는 경쟁은 불가능하다.
http://fair.korea.kr/newsWeb/pages/special/fair/fairSection/fair5.jsp
공정사회 구현을 위해서 여러가지 얘기들을 하고 있는데.
“나부터 실천”을 외치지 말고, “너부터 실천”해라.공정. 과연 그것은 먹는 것인가?
