[카테고리:] 학술

  • 큰거 재기 #5 – 태양까지 거리

    이제 태양까지 거리를 재 보자.



    출처: 위키백과

    http://en.wikipedia.org/wiki/Sun

    http://en.wikipedia.org/wiki/Moon

    http://en.wikipedia.org/wiki/Earth

    *위의 그림에 관한 저작권은 http://creativecommons.org/licenses/by-sa/3.0/deed.en 에서 참고할 수 있다.

    이제 태양의 크기를 잴 수 있는데, 우리는 달까지의 거리와 달의 크기를 알고 있다. 삼각형으로 말하자면, A와 E사이의 길이를 알고 있고, A와 B사이의 거리를 알고 있다는 뜻이다.

    그리고 일식이 일어날 때 태양이 달에 완전히 겹쳐진다는 사실을 알고 있다. 즉, 태양과 달의 겉보기 크기가 같다는 뜻이다.

    그러므로 삼각형의 닮음으로부터 태양의 크기와 지구에서 태양까지의 거리의 비율은 달의 크기와 달에서 지구까지의 거리의 비율과 같다.

    공식으로 쓰자면,

    AE:AB=CE:CD

    가 된다는 뜻이다.

    문제는, 태양의 크기를 지난번에 알아내기는 했지만, 그게 아주 정확하다고는 말할 수 없다는 점이다. 지구의 그림자는 지구 대기 때문에 경계가 뚜렷하지 않기 때문이다.

    그럼, 지구와 태양 사이의 거리를 알아내기 위해서 반달을 살펴보자.



    여기서 달의 위치를 잘 살펴보면, 반달일 때에는 달을 꼭지점으로 하여 지구과 태양이 이루는 각도가 직각이라는 사실을 알 수 있다. 지구를 꼭지점으로 하는거 아니냐고 생각할 수도 있는데, 잘 생각해 보면 달을 꼭지점으로 해서 직각이 되어야 한다.

    그럼, 이제 지구에서 봐서 달과 태양이 이루는 각도를 재면 된다. 달과 지구 사이의 거리는 알고 있으므로 이 각도의 코사인 값은 지구-달-태양이 이루는 직각삼각형의 코사인 값이 된다. 정확히 말해서, 지구-달 사이의 거리를 지구-태양 사이의 거리로 나누면 직각삼각형의 코사인 값이 나온다. 따라서, 지구-달 사이의 거리를 이 코사인 값으로 나누면 지구-태양 사이의 거리를 얻을 수 있다.


    http://ko.gravity.wikia.com/wiki/%EC%A7%80%EA%B5%AC_%ED%83%9C%EC%96%91%EA%B0%84_%EA%B1%B0%EB%A6%AC

    사실 이 방법은 틀리기 쉬운데, 워낙 태양이 멀리 떨어져 있어서 언제가 반달인지 정확히 재기 어렵기 때문이다. 지구-달 사이의 거리에 대해서 지구-태양의 거리는 약 390배 더 큰데, 그럼 대략 89.95도 정도가 나온다. 0.05도는 작은 오차로 재기가 힘들다.

    그럼 실제로는 어떻게 잴까? 우선 금성과의 거리를 먼저 측정한다.



    *금성 사진은 위키백과에서 가져왔고, 원본은

    http://www.astrosurf.com/nunes

    의 소유이다.

    A에 있는건 금성인데, 마침 금성이 태양과 가장 멀어졌을 때 재는 것이 좋다. 이 시점에서 A와 B의 거리를 측정한다. 두 점 사이의 거리는 금성에 강력한 전파를 발사해서 되돌아오는 시간을 측정한다. 즉, 시간을 측정하는 것이 매우 중요하다. 정확하게 하려면 지구의 자전, 공전과 금성의 공전을 모두 고려해서 보정해 주겠지만, 아무튼 그런 오차에 비해서 지구와 금성 사이의 거리는 매우 멀리 떨어져 있으므로 비교적 정확하게 잴 수 있다.

    B에서 A사이의 거리를 알면 각A는 직각이고, 각 B는 방금 본 그 각도이므로 역시 정확하게 측정할 수 있다. 이 방법의 장점은 금성이 달보다 더 멀리 있기 때문에 ‘어느 점이 금성이다’라고 콕 찝어서 말할 수 있다는 것이다.

    이제 방금 달에 썼던 방법 그대로, 각 B의 코사인 값이 길이 AB를 길이 CB로 나눈 값이므로, 우리가 필요한 값 CB를 얻기 위해서는 방금 얻은 코사인 값으로 길이 AB를 나눠주면 된다.

    물론 태양과 지구의 거리를 알았으므로 태양의 크기를 알아내는 것은 더 간단한 일이다.

    덤으로 금성의 거리를 알게 되었다. 역시 덤으로 길이 CA를 알아낼 수 있는데, 이것은 금성과 태양의 거리이자 금성의 공전 반지름이 된다.

    수성까지의 거리는 방금 이 값으로부터 수성의 최대이각인 각 CBA를 측정하면 거꾸로 길이 CB를 알고 있으므로 잴 수도 있다.

    이것으로 내행성까지의 거리는 다 알았다.

    그렇게 알아낸 거리들은 위키백과에 따르면 다음과 같다.

    지구-태양 거리 = 1억 4천 9백 60만 킬로미터

    태양의 크기 = 69만 5500킬로미터

    금성-태양 거리 = 1억 8백 20만 킬로미터

    수성-태양 거리 = 5천 7백 90만 킬로미터

    화성을 비롯한 외행성까지의 거리는 다음 시간에.

  • 근거없는 불안감


    http://www.hani.co.kr/arti/society/society_general/604897.html

    한겨레에서 생선의 방사선 측정에 관한 보도를 했다.

    이 보도에 따르면, 원전 사고시 방출되는 200가지 방사성 물질 중 세슘과 요오드만 측정하는 것은 문제가 있다고 보인다.

    하지만 기사를 잘 읽어보면, 불안해 하기에는 턱없이 부족한 근거들이 있는데 다음과 같다.

    1. 9월 25일에 22톤의 수산물, 가공식품 217톤이 일본에서 수입되었는데 방사선이 검출되지 않았다.

    2. 2011년 3월 이후 131차례의 방사선이 검출되었는데 그중 7건이 10베크렐 이상 100베크렐 이하의 방사선이 검출되었다. 나머지는 모두 10 베크렐 이하 검출.

    3. 2013년 1월부터 9월까지 수산물 방사선 안전 검사를 345번 했는데 그중 6번이 미량 검출되었다. 검출은 모두 다시마.

    4. 25일 새벽 1시, 휴대용 방사선 검사 장비는 자연방사선 수준인 1.5cps를 나타냈다.

    한국에서 유통되는 제품 중에 기준치 이상의 방사선이 검출되었다는 보도는 없다.(도저히 못찾겠다. 혹시 찾으면 알려주었으면 좋겠다.)

    사람들이 불안해하는 이유는 다음과 같다.

    1. 전수조사가 아니다. 검사하지 않은 부분에 어떤 방사성 물질이 숨어있을지 모르겠다.

    2. 200가지의 방사성 물질 중 세슘과 요오드만 검사하는 것은 나머지 물질에 대해서는 모른다는 뜻 아니냐.

    3. 극미량이라도 몸에 영향을 줄 수 있다.

    일단, 위의 이유들은 매우 타당한 불안감의 근거라는 점을 알아두자. 위의 이유들을 고려하면 불안할 수밖에 없다.

    사실 위의 3가지 불안감의 이유는 정부에서 ‘이정도만 검사해도 괜찮다’는 확신을 국민들에게 주지 못했기 때문이다. 131차례의 방사선이 검출되기까지 몇번의 시행을 했을지는 모르겠지만, 매일 한다고 치면 천번 정도는 했으리라고 보인다. 또, 345번의 검사 중 6번이 검출되었다. 통계적으로 볼 때, 2%정도에서 방사선이 기준치 이하로 미량 검출되었다는 뜻이다. 무작위로 검사하는데 검사할 때마다 기준치 이하라면, 전반적으로 방사성 물질이 없다는 뜻으로 해석하는 것이 정상적인 해석이다. ‘아직 검사하지 않은 부분에 뭔가 있을 것 같다’는 것은 정말 통계와 통계학을 믿지 못하는데서 비롯된 근거없는 불안감에 불과하다. 물론 이 불안감은 정부에서 더 키우고 있는데, 특히 검사 결과를 뚜렷히 공개하고 있지 않기 때문으로 보인다.


    http://en.wikipedia.org/wiki/Banana_equivalent_dose

    재미로 보고 맛으로 먹는 개념을 하나 소개하자면, 바나나 등가 선량이라는 개념이 있다. 1 BED는 바나나 1개를 먹었을 때 노출될 수 있는 방사선량인데, 환산하면 ‘무려’ 15베크렐이나 된다. 당장 마트에 가서 바나나를 싸그리 폐기처분할지어다. 위의 기사에 나온 근거없는 불안감에 따르면, 바나나 수천개가 쌓여있는 방사선 폐기물이다. 아니, 그 수준이라면 마트에 가는 것 자체가 위험하다.

    세슘과 요오드만 검사하는 이유는 정확히는 모르겠다. 저 검출장치는 세슘과 요오드의 화학적 원소를 검출하는 장비가 아니라 분명 동위원소 분석기일 것으로 보이는데, 그렇다면 매우 비싼 장비일 것이다. 만약 이 장비가 방사선량만 검출한다면, ‘세슘과 요오드에서만 나오는 세슘 방사선, 요오드 방사선’ 따위는 없으므로 더 포괄적으로 검사한 셈이고 그 경우 더 안전한 경우이므로, 아마도 세슘과 요오드 동위원소 분석기일 것 같다.

    기사에서는 플루토늄과 스트론튬에 대해서 검출해야 한다고 주장하는데, 물론 그렇게 검사하면 더 좋다. 그러나 플루토늄과 스트론튬 검사 비용이 매우 비쌀 것 같다.

    극미량이라도 몸에 영향을 줄 수 있다는 사실은 아직 밝혀지지 않았고, 여러 학자들이 추측하는 부분이다. 아무튼 일정량 이상 넘어가면 몸에 나쁜 영향을 준다는 것은 사실이므로, 쓸데없이 방사선에 노출되는 것은 무조건 피하는 것이 더 좋다. 그러나 일상적인 상황에서, 정상적으로 수입된 음식을 먹는 정도로는 위험할 정도로 많이 먹을 수 없다. 10베크렐이면 수 나노시버트 정도의 방사선인데, 자연방사선이 밀리시버트 수준이므로 그런 음식을 백만번 먹어야 한다. 1 킬로그램당 10베크렐 수준이라면, 자연방사선 수준으로 먹으려면 100톤을 먹어야 겨우 자연방사선 수준에 도달한다. 인간의 체중이 100킬로그램인데, 1년간 내가 먹은 음식으로 내 몸의 원자가 모두 대체된다고 쳐도 자연방사선의 1천분의 1 수준이다. 물론 ‘조금’이라도 더 방사선을 받는다면 위험할 수도 있다. 하지만 1천분의 1이나 1백분의 1수준은 자연방사선에서 흔히 나타나는 차이이다. 그정도를 위험하다고 생각한다면, 일본에서 수입된 수산물을 걱정할 것이 아니라 시멘트에서 방출되는 라돈, 비행기 탈 때 받는 우주 방사선을 더 걱정하기 바란다. 그게 훨씬 더 위험하다.


    사실 일본이 그동안 후쿠시마 원전 사고 처리하는 과정을 지켜볼 때, 솔직히 최소한 식품부분은 전면 수입금지를 하고, 후쿠시마 인근에서 생산된 공산품도 품목에 무관하게 수입금지를 하는 것이 좋다고 생각은 한다. 아마도 사태의 실체적 상황은 일본 정부가 발표한 것 보다 더 심각할 것이다.

    그러나, 어쨌든 수입된 물건에 대해서 전수조사는 아니어도 무작위 표본 조사를 했고 그 결과 전반적으로 인체에 영향이 없을 것으로 보이는 수준의 미량이 검출되었다면, 적어도 근거없는 공포는 없었으면 좋겠다. 그리고 정부는 방사선 검사를 지속적으로 확대해서 국민이 안심할 수 있도록 해야 한다.

    언론에서 좀 전문적인 보도를 해야 할 필요가 있는데, 방사성 물질에 대한 전량 조사시 들어가는 비용과 그것이 유통가격에 미치는 영향 등을 분석했으면 좋겠다. 그리고 전체 수입 물건 중 방사선 검사를 한 양을 조사해서, 통계적으로 얼마나 믿을 수 있는 수준인지도 분석했으면 좋겠다.

    방사선 검사 장비가 비싸서 맨날 돈 없다고 징징대는 정부가 과연 그렇게 할지는 모르겠지만. 복지예산도 없는데 방사선 검사장비 살 돈은 있을까. 없겠지. 아마 안할것 같다.

    아래 울진뉴스에 나온 독자기고문은, 정말 오해를 풀기 위해서 쓴 것 같은데 댓글에서 까이고 있다.


    http://www.uljinnews.co.kr/news/articleView.html?idxno=12941

    나라고 해서 정부의 발표를 믿고 있는건 아니지만, 방사성 물질이 함유된 식품을 일부러 찾아 먹으려고 노력하지 않는 한 문제 없다고 생각한다. 그리고 그 사실에 대해서 제대로 된 근거를 보여주지 못하는 정부는 xx다.

  • 전공 구분

    단어를 듣고 나온 말을 통해서 전공을 구분할 수 있는 기준을 한번 찾아보자.

    Differentiation – 미분(수학과), 세포의 분화(생명과)

    Integration – 적분(수학과), 통합(전산과)

    function – 함수(이과), 기능(문과)

    web – 인터넷(전산과), 거미줄(생명과)

    공명 – resonance(이과), 제갈량(문과)

    정의 – definition(이과), justice(문과)

    산란 – scattering(물리과), 알 낳기(생명과)

    플라스마 – 물질의 제 4의 상태(물리과), 혈액의 구성성분 중 혈장(생명과)

    current – 전류(이과), 현재(문과)

    conservative – 보존되는(이과), 보수적인(문과)

    Germanium – 저머늄(이과), 게르마늄(문과) (이건 논란의 여지가 있어 보인다.)

    power – 일률(이과), 권력(문과)

    complex function – 복소수 함수(이과), 복잡한 기능(문과)

  • 칼질 3번으로 5명이 나눠먹기 3

    칼질 3번으로 5명이 나눠먹는 방법에 대해서 새로운 방법이 떠올랐다.

    일단 칼질 2번을 해서 4등분한다. 즉, 직각 부채꼴이 4개 만들어진다. 그럼 이 4조각의 5분의 1씩을 한번에 썰어내면 되는데, 한번에 썰어내려면 겹쳐서 썰면 된다. 즉, 5분의 1을 만들어 내는 것이 관건이다. 90도의 5분의 1은 18도이므로, 18도를 작도할 수 있으면 된다.

    18도 작도법은 다음과 같다. 일단 정오각형을 작도한 다음, 중심에서 각 꼭짓점을 잇는 5개의 선을 그린다. 그럼 삼각형 5개가 만들어질 것이다. 그중 한 삼각형의 세 꼭짓점 중에서 정오각형의 중심을 꼭짓점으로 하는 한 내각은 360도의 5분의 1이므로 72도이다. 72도를 4등분하면 되는데, 일단 반으로 접자. 그럼 36도가 된다. 다시 반으로 접자. 그럼 18도가 된다.

    정오각형을 작도하는 방법은 다음 동영상을 찾아보자.



    이제 한명을 죽일 필요도 없고


    http://jinh.tistory.com/549

    애매하게 근사시킬 필요도 없고


    http://snowall.tistory.com/2897

    힘들게 옆으로 썰 필요도 없다.


    http://snowall.tistory.com/2899

    단지, 5명중 1명이 조금 양보해서 4조각으로 잘라진 5분의 1을 먹으면 된다.

    *검색해보니 2조각으로 잘라진 5분의 1이 되도록 하는 방법을 생각한 분도 있다.


    http://minsug.tistory.com/28

    게임 이론을 이용한 근사적인 방법도 가능하다. 이 경우는 정확히 5분의 1이라기보다는 다들 5분의 1을 먹었다고 생각하기로 하고 안 싸우는 방법이라고 할 수 있다.


    http://reznoa.wo.tc/blog/1642

  • 수치해석

    수치해석 커리큘럼

    (아직 안씀) 수치해석 0 – 방정식 근찾기

    수치해석 1 – 미분과 적분

    수치해석 2 – 상미분방정식

    수치해석 3 – 고유값 찾기, 고유벡터 찾기

    수치해석 4 – 빠른 푸리에 변환

    수치해석 5 – 상미분방정식 2: 경계값 문제 풀기, 총쏘기 방법(Shooting method)

    수치해석 6 – 라플라스/푸아송 방정식: 완화법(Relaxation method

    (아직 안씀) 수치해석 7 – 라플라스/푸아송 방정식: 유한 요소법(FEM)

    (아직 안씀) 수치해석 8 – 맥스웰 방정식: 유한차분시간영역법(FDTD)

    (아직 안씀) 수치해석 9 – 슈뢰딩거 방정식: 밀도범함수이론(DFT)

    (아직 안씀) 수치해석 10 – 경로 적분(Path integral): 격자게이지이론(LGT)

    (아직 안씀) 수치해석 11 – 아인슈타인 장 방정식: ?!

    (아직 안씀) 수치해석 12 – 네비어-스토크스 방정식(CFD)

    (아직 안씀) 수치해석 13 – 플라스마 시뮬레이션(PIC)

    (아직 안씀) 수치해석 14 – 최대값, 최소값 찾기

    (아직 안씀) 수치해석 15 – 안장점 찾기

    수치해석 16 – 적분, Monte-Carlo method

     

  • 수치해석6 – 라플라스/푸아송 방정식

    이번엔 왜 6번이냐고 물으신다면 몇번까지 했는지 기억이 나지 않기 때문…이라고.

    # Elementary Numerical analysis 6

    # based on Python

    # (C) 2013. Keehwan Nam, Dept. of physics, KAIST.

    # snowall@gmail.com / snowall@kaist.ac.kr

    # Relaxation method

    # http://snowall.tistory.com/2561 이 글의 개선된 버전이 되겠다.

    # 라플라스 방정식이나 푸아송 방정식을 풀기 위해서 사용하는 가장 대표적인 방법은 뭐니뭐니해도 가우스 법칙이다. 가우스 법칙은 표면에서 필드를 적분하면 내부에 존재하는 전하량에 비례한다는 사실을 말해준다. 여기서 완화법(relaxation method)이 왜 작동하는지 설명할 수 있다.

    # 라플라스 방정식의 해가 조화 함수(Harmonic function)이라고도 불리운다는 사실을 기억하자. 조화함수의 가장 중요한 특성 중 하나는 평균값 정리인데, 이 정리는 조화 함수가 잘 정의되는 임의의 점에서 성립한다. 주어진 임의의 점에서 거리가 일정한 점의 집합, 즉 어떤 ‘구면'(spherical surface)을 정의할 수 있다. 이 구면에서(3차원이나 2차원 표면이 아니라도) 조화함수의 함수값의 평균값은 구면의 중심점에서의 함수값과 같다.

    # 그런데, 우리가 해결하고자 하는 문제의 공간은 격자로 잘게 쪼개져 있다. 따라서, ‘구면’은 바로 옆에 있는 점들로 정의된다. 자, 이제 2차원 구면을 생각해 보자.

    # 함수 f(x, y)가 잘 정의되고, x0, y0에서 h만큼 떨어져 있는 ‘구면’은 다음과 같이 정의된다.

    # 구면 = {(x0+h, y0), (x0-h, y0). (x0, y0+h), (x0, y0-h)}

    # 2차원이고 네모난 격자이므로 이렇게 점 4개가 ‘구면’을 정의한다. 이 점 위에서의 함수값들의 평균값은 다음과 같이 정의된다.

    # f_mean(x0, y0) = (f(x0+h, y0)+f(x0-h, y0)+f(x0, y0+h)+f(x0, y0-h))/4

    # 적분은 덧셈으로 바뀌었고, 4개 있으니까 4로 나눈 것이다. 아주 쉽다.

    # 조화 함수의 특성으로부터, f_mean(x0, y0) = f(x0, y0) 이어야 한다.

    # 하지만, f(x,y)를 알고 있다면 당연히 이게 성립하는걸 확인할 수 있겠지만 모르는 마당에 어떻게 확인할 수 있을까?

    # 라플라스 방정식이나 푸아송 방정식을 공부해 본 사람이라면 누구나 알고 있겠지만, 이 방정식들의 해는 만약 존재한다면 유일하게 존재한다. 즉, 수단과 방법을 가리지 않고 그런 해를 찾아냈다면 그 해는 우리가 찾아 헤메이던 바로 그것이다.

    # 만약 함수값 f(x0, y0)을 위에서 계산한 f_mean(x0, y0)으로 대신한다면, 그래도 아무것도 모르는 것 보다는 답에 조금 더 가까울 것이다. f_mean(x0, y0)을 그렇게 두고, f_mean(x0+h, y0)을 계산하고, f_mean(x0, y0+h)를 계산하고, 그렇게 계산할 수 있다. 이렇게 h씩 움직이면서 모든 점을 한바퀴 돌고 나면, 아마 원래 알고 있던 함수보다는 조금 더 진짜 함수에 가까워진 모양이 될 것이다. 이 짓을 더이상 함수값이 변하지 않을 때 까지 반복하자.

    # 이 방법은 왜 정답에 수렴할까? 왜냐하면, 경계조건이 있기 때문이다. 경계에서 주어진 함수값은 정해져 있고, 따라서 경계 근처에서 평균을 내면 어떻게든 경계의 함수값을 따라갈 수밖에 없다. 경계 근처에서 라플라스, 푸아송 방정식을 만족한다면, 그 옆에서도, 그 옆에서도, 어떤 위치에서도 다 만족할 수 밖에 없다. 충분히 오래 반복한다면 답은 반드시 나올 것이다.

    # 이제, 예를 들어서 답을 찾아보자.

    import numpy as np

    f = []

    for i in range(52):

    f.append([])

    for j in range(52):

    f[-1].append(0)

    # 0으로 가득 찬 52 x 52 짜리 행렬을 만들었다.

    for i in range(52):

    f[0,i] = sin(float(i))

    f[-1,i] = sin(float(51-i))

    f[i,0] = sin(float(51-i))

    f[i,-1] = sin(i)

    # 네모난 경계에 경계조건을 주었다.

    desire = 1.e-10 # 내가 원하는 오차의 한계

    error = 1.

    while error>desire:

    error = 0.

    for i in range(1, 51):

    for j in range(1, 51):

    tmp_error= f[i, j]

    f[i, j] = (f[i-1, j]+f[i+1, j]+f[i, j+1]+f[i, j-1])/4. # 문제를 해결하는 핵심 코드.

    error+= abs(tmp_error-f[i, j])

    result = open(“solution.txt”, “w”)

    result.write(f)

    result.close()

    # 이게 루틴의 끝이다.

    # 심지어 문제를 푸는 루틴이 경계조건을 부여하는 루틴보다 간단하다!

    # 푸아송 방정식이라면?

    while error>desire:

    error = 0.

    for i in range(1, 51):

    for j in range(1, 51):

    tmp_error= f[i, j]

    f[i, j] = -h*h*rho(x[i], y[j])+(f[i-1, j]+f[i+1, j]+f[i, j+1]+f[i, j-1])/4. # 문제를 해결하는 핵심 코드.

    error+= abs(tmp_error-f[i, j])

    # -h*h*rho(x[i], y[i])이 추가된 것 외에 똑같다. rho는 푸아송 방정식에서 inhomogenius인 부분을 나타내는 함수이다. 저게 0이면 라플라스 방정식과 똑같다. x[i]와 y[j]는 i, j에서의 실제로 주어진 x, y값이다. 이것도 속도를 빠르게 하고 싶으면 미리 rho(x, y)를 rho[i, j]로 만들어 놓고 시작하면 된다.

    # 완화법의 문제는 느리다는 점이다. 이것을 해결하기 위해서, 해가 대충 알려져 있는 경우 f(x, y)를 위에서 쓴 것처럼 0으로 배치하지 말고 대충 알려진 근사함수로 미리 넣고 시작하면 보다 빠르게 수렴할 것이다. 사실 미리 넣어주는 함수를 아무 함수나 집어넣어도 함수가 무한대로 뻗치지 않는 한 무조건 수렴한다. 그러나 빠르게 값을 얻고 싶다면 미리미리 비슷해 보이는 함수에서 시작하는 것이 조금 더 빠른 답을 얻는데 도움이 된다.

    # 미리 넣고 시작하는 근사 함수를 얻기 위해서, 격자를 우선 성기게 잘라서 대충 답을 구하고, 이 답을 잘게 쪼갠 격자에 대입해서 시작하면 보다 빠르게 답을 얻을 수 있다. 이런 방법을 다중격자(multigrid) 방법이라고 한다.

    # 이 방법을 확장한 Successive Over-relaxation (SOR) method 라는 방법이 있다. 이것은 주변의 평균값을 더할 때 가중치를 주어서 더 빠르게 수렴하도록 하는 방법이다.


    # 라플라스 방정식과 푸아송 방정식 등, 타원꼴 편미분방정식은 이 방법으로 언제나 풀 수 있다. 고차원에서도 성립하므로, 2차원보다 높은 차원에 대해서도 손쉽게 확장할 수 있다. 문제는 격자를 쪼개는 것이 사각형이 아니면 매우 곤란해진다는 점이다. 이 문제를 해결하기 위해 유한요소법(Finite element method, FEM)이 도입되었다. 그러나 다음 시간에는 유한차 시간영역 법(Finite difference time domain, FDTD)을 다룰 것이다. FEM은 완화법을 보다 일반적으로 확장한 것이다. 어쨌든, 다음 시간에.

  • 자발적 대칭성 붕괴

    *내일 숙제 내는 사람들 베껴가기 없기.

    자발적 대칭성 붕괴(Spontaneous symmetry breaking)는 자연에서 흔히 일어나는 대칭성 붕괴 과정의 하나이다. 이것이 무엇인지 설명하기 위해서는 우선 대칭성을 이해해야 하고, 그 붕괴가 무엇을 의미하는지 알아야 한다. 그리고 그것이 자발적인 것과 그렇지 않은 것이 어떤 차이가 있는지 알아봐야 할 것이다.

    대칭성이란 일반적으로 변환에 대하여 변하지 않는 성질을 뜻한다. 물리학적으로는, 라그랑지안이나 해밀토니안 등 주어진 물리계를 설명하는 방정식이 변환을 작용하더라도 그 모양이 변하지 않는 것으로 정의한다. 그리고 물리계를 설명하는 라그랑지안에 대칭성이 있다면 그에 대응하는 보존량이 존재한다는 것이 알려져 있다. 실제로, 공간에 대한 이동이 물리 현상을 바꾸지 않는다는 사실(Space uniformity, translation symmetry)로부터 운동량 보존법칙이 성립하고, 보는 방향에 따라 물리 현상이 달라지지 않다는 사실(Rotation symmetry)으로부터 각운동량 보존법칙을 유도할 수 있다.

    대칭성 붕괴는 따라서 다루려는 물리계에 대한 해밀토니안이 변환에 대하여 대칭성을 갖지 못하는 경우에 나타난다. 가령, 수소원자를 설명하는 해밀토니안은 회전 연산자에 대하여 대칭적이다. 따라서 각운동량이 단일한 고유값으로 나타나며, 모든 각운동량에 대해 같은 에너지를 갖는 겹친 상태로 관찰된다. 그러나 수소원자가 강한 자기장 안에 들어가게 되면 해밀토니안이 더이상 회전에 대해 대칭적이지 않게 된다. 왜냐하면, 자기장과 수소원자의 각운동량이 상호작용하게 되는데, 이 상호작용에서 나타나는 에너지가 자기장과 각운동량이 서로 어느 방향을 향하고 있느냐에 따라 달라지기 때문이다. 따라서 이 경우 대칭성이 붕괴되고, 서로 겹쳐져 있던 상태들은 다른 에너지 상태로 분리되어 분광선에 나타나게 된다.

    물리계를 설명하는 해밀토니안이 본질적으로 공간에 대해 대칭성을 갖고 있는 경우더라도, 대칭적인 상태가 바닥상태가 아닐 수 있다. 가령, 강자성체의 경우 각각의 스핀 각운동량이 무작위적으로 배열된 상태보다 어떤 방향을 기준으로 동일하게 정렬된 상태가 더 낮은 에너지를 갖는다. 따라서, 이 경우 바닥상태는 대칭성이 깨진 상태이고 이 물리계는 대칭성이 깨진 상태에서 안정화된다. 이러한 현상은 우리 주변에서 흔히 발견할 수 있는데, 특히 가장 극적인 사례는 물질 입자의 질량을 만들어 내는 힉스 매커니즘이다.

    우리 우주를 기술하는 입자 물리학의 표준모형에서, 표준 모형을 그대로 적용하면 질량을 나타내는 항은 대칭성을 깨트리기 때문에 자연스럽게 도입되지 않는다. 여기에 힉스 입자와의 상호작용을 도입하면, 에너지가 높은 상태에서는 라그랑지안 자체의 대칭성을 깨트리지 않으면서 질량에 해당하는 항을 자연스럽게 유도할 수 있다. 즉, 힉스 입자의 진공기대값이 0이 아닌 유한한 값으로 수렴하면서 힉스 입자와 상호작용하는 모든 입자는 힉스 입자의 진공기대값에 결합상수를 곱한 크기만큼의 질량을 얻게 되는 것이다.


    자발적 대칭성 붕괴의 결과로 골드스톤 입자가 도입된다. 골드스톤 정리에 따르면, 연속 대칭성이 깨지는 경우 깨진 대칭성의 차원에 해당하는 골드스톤 입자가 나타나는데, 이는 대칭성이 깨지면서 해밀토니안이 대칭적이더라도 그 해밀토니안이 기술하는 물리계의 바닥상태가 대칭적이지 않기 때문이다. 대표적인 골드스톤 입자가 양성자와 중성자의 SU(2) 아이소스핀 대칭성의 붕괴에서 나타나는 파이온이다. (원래 골드스톤 입자는 질량이 없지만, 파이온은 질량을 갖고 있는데, 이건 어쨌든 사정이 있다. 이런 경우를 Pseudo-Goldstone boson이라 부른다.)

    이렇듯, 자발적 대칭성 붕괴 현상은 우리 우주의 곳곳에서 찾을 수 있으며, 물리를 이해하는데 매우 중요한 틀이다.

  • 수치해석2 – 상미분방정식

    2번이 왜 이제 올라오느냐도 역시 의미 없는 질문이다.


    # Elementary Numerical analysis 2

    # based on Python

    # (C) 2013. Keehwan Nam, Dept. of physics, KAIST.

    # snowall@gmail.com / snowall@kaist.ac.kr

    # Differential equation

    # 추천 참고자료: http://www.swarthmore.edu/NatSci/echeeve1/Ref/NumericInt/FrameNumInt.html

    # 미분방정식은 미분 변수가 1개인 상미분방정식(Ordinary differential equation:ODE)과 2개 이상인 편미분방정식(Partial differential equation:PDE)으로 나눠진다.

    # 일단 1개인 미방을 어떻게 푸는지 알아보자. 연립 미방은 아직 다루지 않고, 나중에 다룬다.

    # ODE는 선형 미방과 비선형 미방으로 나눠진다. 선형미방은 미방의 해가 두개 이상 있을 때, 두 해의 선형결합도 해가 되는 경우이다.

    # 즉, f1과 f2가 미방의 연산자 L에 대해서 L(f1)=L(f2)=0일 때 L(f1+f2)=0이 만족되는 경우이다. 물론 그 역을 선형 미방이라고 하지는 않는다.

    # 비선형 미방은 풀기 골치아프므로 일단 선형 미방을 어떻게 푸는지 알아보자.

    # 선형 미방은 다시 최대 차수인 도함수에 따라 n차 미방으로 구분된다. 즉, 가령 2차 도함수가 최대차수인 도함수라면 2차 미분방정식이 된다.

    # 1차 이상의 미분을 포함하는 고차 미분방정식은 여러개의 중간 변수를 도입하여 1차 연립 미분 방정식으로 간주할 수 있다. 따라서, 1차 미분방정식을 잘 풀 수 있다면 고차 미분방정식은 손쉽게 풀린다. 그러므로 1차 미방에 집중하자.

    # 1차 미분방정식을 이산화(discretize)하게 되면 차분방정식(difference dquation)이 된다. 차분방정식은 고등학교 때 배우는 계차수열의 한 형태이다.

    # 그럼, 이제 차분방정식을 풀어보자. 가장 간단하게, 오일러 풀이법이 있다.

    # 오일러 풀이법에서는 dy/dt + a*y(t) = f(t) 라는 문제를 풀게 된다. a는 값을 알고 있는 상수이고, f(t)는 이미 알고 있는 함수이다.

    # 오일러 풀이법은 정말 간단하다. 주어진 시간 t로부터 h만큼의 시간이 지난 후의 값인 y(t+h)를 다음과 같이 근사한다.

    # y(t+h)=y(t)+(dy/dt)h

    # 아주 간단한 1차 근사가 되겠다. 그럼, 이제 y(t+h)를 알았으니, 같은 방법으로 한번 더 계산하면 y(t+2h)도 알아낼 수 있다. 이 작업을 반복하면, y(t=t0)를 알고 있을 때 우리는 아주 많은 문제를 풀 수 있게 된다.

    # y(t+h) = y(t)+(dy/dt)h = y(t) + (- a*y(t) + f(t))*h

    # 잘 생각해보면, 이것은 아주 간단한 반복작업이 된다. 이를 위한 파이썬 코드를 쓴다면, 다음과 같을 것이다.

    import numpy as np

    a=2.

    f = lambda x, 3.*np.exp(-4.*x)

    y0 = 0. # t=t0일때의 값이라고 하자.

    h = 0.1 # time slice가 된다. 이 값은 작을수록 더 정확한 답을 얻게 되지만, 계산이 느려진다.

    y = [y0] # 일단 여기서 시작해 보자.

    t = 0.

    tmax = 10. # 얻고싶은 시간의 마지막 순간. 즉, 이 시간 이후에는 관심이 없고 그 전까지만 관심이 있다는 뜻이다.

    while t y.append(y[-1]+(f(t)-a*y[-1])*h)

    t+=h

    # while 안에 있는 코드가 가장 중요하다. 잘 보면, 별거 없다는 사실을 알 수 있을 것이다.

    # 이제 2차 미방을 1차 미방 2개로 쪼개는 기법을 아주 간단히 이해하고 넘어가자.

    # 주어진 2차 미방이 d(dy/dt)/dt + a*dy/dt + b*y(t) = f(t) 라고 하면, 일단 dy/dt = z 라고 하자. 그리고 z를 대입하면

    # dz/dt + a*z + b*y = f(t)

    # dy/dt = z

    # 이렇게 2개의 미분방정식으로 쪼개졌다. 한번 풀어보도록 하자.

    # 일단 y0와 z0=dy/dt(t=0)는 알려져 있다고 하자.

    y = [y0]

    z = z0.

    # z는 우리가 문제를 풀기를 원하는 값이 아니라 중간 저장 변수이므로 그냥 이렇게 두면 된다. 만약 2차 미분방정식인데 1차 미분도 같이 구해야 하는 경우(뉴턴 방정식에서 속도와 위치를 둘 다 구하는 경우, 회로 방정식에서 전하와 전류를 둘 다 구하는 경우) 등등에서는 z를 리스트로 선언해서 써도 된다.

    while t y.append(y[-1]+z*h)

    z+=(-a*z-b*y+f(t))*h

    t+=h

    # 2차 미방이지만 위와 같이 딱 1줄 더 늘어난 아름다운 코드로 만들 수 있다.

    # 오일러 풀이법은 가장 간단하지만 h가 상당히 작아야 정확한 답을 얻을 수 있다. 미분이나 적분을 할 때 함수값의 대칭성을 이용해서 같은 구간 h에 대해서도 보다 정확한 계산을 할 수 있었는데, 여기서도 마찬가지 테크닉을 사용할 수 있다.

    # 룽게-쿠타(Runge-Kutta) 풀이법은 한발 앞서 간 도함수와 평균을 내서 다시 구한다. 즉, 기울기 계산을 두번한다. 말로는 알아듣기 어려울 것이고, 직접 코드를 보는 것이 보다 이해하기 쉬울 것이다.

    # y(t+h) = y(t)+(dy/dt)h = y(t) + (- a*y(t) + f(t))*h

    # dy/dt + a*y(t) = f(t)

    y = [y0]

    while t y1= -a*y[-1]+f(t) # 일단 기울기 계산

    y.append(y1*h+y[-1]) # 일단 값 집어넣고

    y2 = -a*y[-1]+f(t+h) # 한칸 간 곳에서의 기울기 계산

    y[-1] = y[-2]+0.5*(y1+y2)*h # 실제 값은 두 기울기의 평균만큼만 증가하는 것으로.

    t+=h

    # 계산 시간을 아주 조금이라도 더 절약하고 싶으면 0.5*h를 미리 h2같은걸로 정의해놓고 0.5*h대신 h2를 곱하는 것으로 바꾸면 조금 빨라진다.

    # y2를 계산하는 부분은 그 다음줄로 한번에 집어넣을 수도 있지만, 읽기가 힘들어지므로 굳이 그렇게 할 필요는 없다.

    # 2차 룽게-쿠타 방법 뿐만 아니라 더 높은 차수의 룽게-쿠타 방법도 가능하다. 위와 같이 기울기 가중치를 어떻게 주느냐를 잘 생각하면 되는데, 아이디어는 비슷하므로 크게 어려울 것 없다.

    # 조금 더 일반화하면 predictor-corrector 방법이 된다.

    # 미분방정식이 dy/dt+f(y(t), t)=0으로 주어진 경우에 사용하는데, 위의 미분방정식은 f(y, t) = a*y-f(t)로 주어진 하나의 사례에 해당한다.

    # Predictor-corrector 방법은 그럼 RK방법을 그대로 갖고 오면 된다.

    y = [y0]

    while t y1= f(y[-1], t) # 일단 기울기 계산

    y.append(y1*h+y[-1]) # 일단 값 집어넣고

    y2 = f(y[-1], t+h) # 한칸 간 곳에서의 기울기 계산

    y[-1] = y[-2]+0.5*(y1+y2)*h # 실제 값은 두 기울기의 평균만큼만 증가하는 것으로.

    t+=h

    # 물리학에서 풀어야 하는 수많은 미분방정식들은 대체로 운동방정식이다. 운동방정식은 2차 미분방정식이므로, 2차 도함수를 알고 있다는 사실로부터 뭔가를 직접 해결할 수 있다.

    # 그래서 나온 방법이 벌레(Verlet) 방법이다. Verlet은 사람 이름이고, 프랑스 사람이라 t가 묵음이다.

    # 벌레 알고리즘에 대해서는 이 글을 참고해 볼 수 있다.

    # http://www.physics.udel.edu/~bnikolic/teaching/phys660/numerical_ode/node5.html

    # 일단, 테일러 전개로부터 다음과 같은 사실을 알 수 있다.

    # y(t-h) = y(t)-v(t)*h+a(t)*h*h/2

    # 여기서 v=dy/dt, a=dv/dt 이다.

    # -h가 아니라 +h에 대해서 다시 쓰면

    # y(t+h) = y(t)+v(t)*h+a(t)*h*h/2

    # 이렇게 될 것이다.

    # 두개를 더해보자.

    # y(t-h)+y(t+h) = 2y(t)+a(t)*h*h

    # v가 사라졌다!

    # 이제 다음과 같이 y(t+h)를 추정할 수 있다.

    # y(t+h) = 2y(t)-y(t-h)+a(t)*h*h

    # 물리 문제를 해결할 때, 이 공식은 매우 기가막힌 방법이다. 2차 미분방정식을 풀어야 하는데, 속력을 구하지 않고 힘으로부터 곧바로 위치를 얻어내기 때문이다.

    # 또한, 두개를 빼면 속력을 얻을 수 있다.

    # v(t) = (y(t+h)-y(t-h))/2h

    # 이 공식은 미분에서 공부했던 3점 공식과 같다.

    # 이렇게 계산하는 방법을 original Verlet 알고리즘이라고 한다. 그런데, 오리지널 벌레는 문제가 있다. y(t=0)일때를 알고 있어도, y(t+h)를 구하기 위해서는 y(t-h)를 알아야 한다. 즉, 최초 2점을 알아야 한다는 문제가 있다. 그래서 이 방법을 개선하기 위해서 velocity Verlet 알고리즘이 등장한다. 일단 공식부터 보고 시작하자.

    # y(t+h) = y(t)+v(t)*h+0.5*a(t)*h*h

    # v(t+h) = v(t)+0.5*(a(t+h)+a(t))*h

    # 왠지 앞에서 보았던 오일러 풀이법으로 2차 미분방정식을 푸는 것과 비슷해 보이지만, 그보다 더 정확하다. 그리고 이 경우 알지도 못하는 과거인 y(t-h)를 몰라도 문제를 해결할 수 있으므로 고민이 한층 덜어졌다.

    # 이 문제에서 a(t) 가 알려져 있다고 하면, 코드를 다음과 같이 짜볼 수 있을 것이다.

    y=[y0]

    v=v0 # 2차 미방이므로 y0와 v0는 알고 있어야 한다.

    while t y.append(y[-1]+v*h+0.5*a(t)*h*h)

    v+=0.5*(a(t+h)+a(t))*h

    t+=h

    # 이외에도 많은 알고리즘이 있지만 대체로 이런 아이디어들의 변형과 개선을 도모한 방법들이다. 실제로 자신이 풀려고 하는 문제에 적합한 알고리즘을 선정하고, 그 문제에 적합하게 알고리즘을 개조/개선해서 적용하는 것이 좋다.

    # 수치해석적인 방법의 장점은 선형 미분방정식 뿐만 아니라 비선형 미분방정식의 경우에도 적용할 수 있다는 것이다. 사실, 선형 제차 미분방정식의 해는 매우 쉽게 해석적으로 구할 수 있다. 그러나 비제차 미분방정식이나 비선형 미분방정식의 경우 해가 알려진 것이 매우 적으나, 실용적 관점에서 수치해석을 이용하여 문제를 해결할 수 있다.

    # 수치해석으로 비선형 미분방정식을 해결할 때 주의해야 하는 것은 오차의 전파이다. 비선형 효과에 의해 오차가 예상보다 커질 수 있으므로 오차를 줄이기 위해서 기존의 공식을 적절히 변형하는 것이 필요할 수 있다.

  • 산은 편하게 타면 안되나?


    http://news.khan.co.kr/kh_news/khan_art_view.html?artid=201309012128025&code=990100

    강신주 교수님을 싫어하지는 않지만, 칼럼에 동의할 수 없는 부분이 있어서 적어둔다.

    설악산에 케이블카를 설치하는 것이 환경을 파괴한다는 점은 동의한다. 그리고 설악산에 케이블카를 설치하는 것이 얻는 것 보다는 잃는 것이 더 많을 것이라고 생각한다. 또한 나는 설악산에 케이블카를 설치하는 것에도 반대하는 편이다.

    하지만 산을 오르는 것에 자신의 걸음으로만 올라가야 반드시 그 기쁨을 느낄 수 있다는 점에 있어서는 동의할 수 없다. 어떤 사람이 기쁨을 느끼는 행위는 다른 사람의 통제나 지시를 받을 수 없다. 그 자신에게는 자신의 다리로 걸어가는 것이 더 희열을 느낄 수 있을지 모르지만, 또 대다수의 사람들이 그렇게 생각할 수도 있겠지만 그럼에도 불구하고 그런 사람이 많다는 점이 누구나 그래야 한다는 결론을 짓는 근거가 되지는 않는다.

    어떤 사람은 다리가 불편해도 두 팔로 기어서 산의 정상을 정복할 수 있다. 어떤 사람은 다리가 불편하여 다른 사람의 등에 업혀서 정상을 오를 수 있다. 또 누구는 돈이 많아서 다리가 불편하지만 헬리콥터로 정상보다 더 높은 곳을 볼 수 있을지도 모른다. 다리가 멀쩡한 사람들도 이 세가지 사례를 마찬가지로 적용할 수 있다. 그럼 그중 누군가는 ‘진짜 기쁨’을 느끼지 못한채 가짜로 기뻐하고 있는 것일까?

    누구든지 ‘이렇게 해보니까 더 즐겁더라’라고 제안할 수는 있다. 자신이 소중하게 생각하는 어떤 사람에게 그렇게 꼭 해보라고 강력하게 추천할 수도 있다. 자신의 명령을 들어야 하는 하급자에게 굳이 그렇게 해야만 한다고 지시할 수도 있다. 하지만 그렇게 했을 때 너는 반드시 기뻐해야 한다고 강요할 수 없고, 그렇게 하지 않았을 때 진짜 즐거움을 모를 거라고 강요할 수도 없다. 강요된 감정이야말로 진짜 즐거움과 거리가 멀다.

  • 과학에는 쓸데없는 질문이란 없다

    과학을 연구하다가 등장한 질문은 단 하나도 버릴 질문이 없다.

    음…

    다 논문거리다. 이미 논문이 나와 있거나, 아직 논문이 나오지 않았거나 둘 중 하나일 뿐.