정상상태의 수치해석


정상상태의 수치해석 전략

이제 슈뢰딩거 방정식을 풀이하는 전략을 세워보자.

우선 파동함수가 특정한 영역 내부에서만 존재하는 상황이라고 가정한다. 이는 오목한 퍼텐셜이 주어지고, 이 내부에 속박된 상태라는 제한이다. 따라서 여기서의 방법으로는 연속적인 에너지 고윳값을 가지지 않고 띄엄띄엄한 값을 가진 경우에 대해서만 풀이할 수 있게 된다. 이에 따라 우리가 주목하는 영역을 포함하여 이보다 훨씬 넓은 영역을 설정하고, 이의 가장자리의 파동함수를 강제로 0 으로 둔다. 이는 가장자리에 무한히 높은 퍼텐셜의 장벽을 설치하는 효과와 동등하다.

그리고, 규격화 이전의 파동함수는 일정한 값이 곱해져 있어도 마찬가지이므로 전체적으로 파동함수의 수열에 일정한 값을 곱해도 된다. 즉, 0 이 아닌 한 지점의 파동함수의 값을 임의의 값으로 삼아도 된다. 따라서 왼쪽이나 오른쪽 바로 가장자리 안쪽의 파동함수를 임의의 값으로 부여한다.

예를 들어 왼쪽 끝($x_0$)의 파동함수 $\psi_0=0$, 한 칸 오른쪽($x_1$)의 파동함수 $\psi_1$를 임의의 값 $A$라고 두자. 이로부터 그 이후 오른쪽의 모든 지점의 파동함수가 다 구해진다. 그러나 아무 $E$를 가지고 이러한 절차를 밟았다면 당연히 오른쪽 끝($x_N$)의 파동함수가 0 이 아닐 것이다. 이는 $E$가 합당하지 않았기 때문이다. (이것이 $A$의 선택과는 관련이 없는 것은 쉽게 알 수 있다. 한편 $A$를 0 으로 선택하는 경우는 모든 지점에서의 파동함수 값이 0 이라는 의미 없는 결과만 나온다)

따라서 $E$를 잘 선택해야 오른쪽 끝에서의 파동함수의 요구가 수용된다. 바로 에너지 고윳값이 이러한 절차로 정해지는 것이다. $E$를 정확하게 구하는 일은 수치해석으로 방정식의 근을 찾는 문제와 닮아 있어 이분법(bisection method), 할선법(secant method), 뉴턴-랩슨(Newton-Rahpson)의 반복법 등 효율적인 여러 방안들을 적절히 이용할 수 있다.

하나의 에너지 고윳값이 정해지면 이 과정에서 파동함수는 이미 정해지며 단지 규격화의 과정만 남는다.

그렇다면, 모든 가능한 고윳값과 고유함수를 다 찾아낼 수 있는가? 고윳값이 아주 조밀하여 거의 연속적이거나 마디간의 거리가 짧아져서 $\varepsilon$에 비견할 정도인 경우를 제외하고는 1차원에서 이들을 모두 찾는 것도 가능하다. 이는 파동함수의 마디의 수가 들뜬 순위에 해당한다는 일반적인 성질이 있기 때문이다.

이제 전략을 순차적으로 정리하면,

1. 격자의 수 $N-1$를 적절히 정한다. 그리고 관심을 가지진 영역을 포괄하는 양쪽 가장자리의 좌표를 선택한다. 이 과정에서 $\varepsilon$이 정해진다.

2. 주어진 퍼텐셜을 이산적인 수열로 바꾼다.

3. 바닥상태의 에너지가 퍼텐셜의 최솟값보다는 반드시 큰 값에서 시작되므로 이 최솟값을 추정 에너지의 하한값으로 삼는다. 이 하한값보다 상당히 큰 값으로 에너지를 두고 이에 대한 파동함수의 수열을 계산한다. 이 과정에서 파동함수의 부호가 바뀌는 마디점을 모두 검사한다.

4. 만일 중간에 마디가 1개 이상 나타났다면 이는 바닥상태보다는 높은 상태이다. 만일 마디가 하나도 나타나지 않는다면 $E$를 낮게 잡은 것이므로 추정값을 보다 높여서 마디가 1개 이상 나타나도록 하여 이것을 상한값으로 삼는다. 이렇게 하한값과 상한값을 정하여 이를 각각 $E_{a}, E_{b}$라 하자.

5. 바닥상태의 에너지는 $E_{a}$ 와 $E_{b}$의 사이에 반드시 있다. 이제 둘의 중앙값 $E_{c}$를 새로운 후보로 도입한다. 이 값으로 마디 수와 발산을 검사한 결과 마디가 1개 이상 나타나면 $E_{c}$를 새로운 상한값 $E_{b}$로, 또한 마디가 하나도 나타나지 않으면 $E_{c}$를 새로운 하한값 $E_{a}$로 교체한다.

6. $E_{a}$ 와 $E_{b}$ 사이를 반으로 나누어 계속 추적하면 점차 그 범위는 축소되어 20회 정도에 백만분의 1 정도의 정밀도로 에너지 고윳값이 정해질 것이다. 이렇게 범위를 반씩 줄여나가서 원하는 답을 얻는 방법을 이분법(bisection method)이라 한다. 발산의 정도 등을 참고로 해서 이분법보다 빠른 속도로 해를 구하는 여러 절차들을 도입할 수도 있을 것이다.

7. 바닥상태를 구했다면 이제 이 에너지보다 약간 높은 에너지에서 첫째 들뜬상태의 에너지를 구할 수 있다. 즉 마디수가 1개와 2개 사이에서 위와 같은 절차를 반복한다.

8. 순차적으로 같은 과정을 되풀이한다. 즉, 마디수가 $n$과 $n+1$개 사이에서 추적하여 $n$ 번째 들뜬상태($n+1$ 번째 상태)를 구해낸다.

9. 각각의 파동함수의 수열을 규격화 하여 전 영역에서 입자를 발견할 확률을 1이 되게 한다.

10. 공간에 대한 의존성을 가진 파동함수에 시간의존항 $e^{-i \frac{E}{\hbar}t}$을 추가하여 완전한 형태의 파동함수를 구성할 수 있다.

아래 프로그램에서 이 절차대로 주어진 퍼텐셜에서의 고유에너지와 고유함수를 구하는 과정을 보여준다. 구간수를 달리하여 0 ~ 4개의 마디를 갖는, 즉 다섯 번째까지의 상태를 구할 수 있다. 구간수를 점차 크게 하면서 결과가 어떻게 달라지는가를 잘 살펴보자.

sim

슈뢰딩거 방정식의 수치해석 과정_ 우선 '시작' 버튼을 눌러보자. 처음에 주어진 왼쪽 끝의 두 점의 파동함수 값으로부터 오른쪽으로 한 칸씩 계산해 간다. 이때 함수의 부호가 바뀌는 것을 처음부터 세어서 설정한 마디수 2보다 크면 보다 적은 에너지를 선택하여 다시 추적을 반복한다. 한편 지나친 마디수가 2 이하이면 보다 큰 에너지를 선택하여 되풀이 한다. 이때 화면에서 붉은색과 푸른색으로 나타낸 에너지의 상한선과 하한선을 반분하는 점을 계속 선택하고, 횟수가 거듭되면 범위가 1/2 로 압축되어 찾는 마디수를 가진 상태의 에너지를 결정할 수 있게 된다. 슬라이더 등으로 공간의 분할수, 원하는 마디수를 바꿀 수 있으며, 계산 결과의 에너지 고윳값은 $E$로, 그때의 파동함수는 보라색으로 나타낸다. 그래프는 가로는 $x=-1 ~ 1$, 세로는 $E = 0 ~ 100$의 축척으로 표현하였으며, 'x^2 형'은 $U(x) = 100 x^2$, '상자형'은 내부에 퍼텐셜이 0 이어서 가장자리에 무한히 높은 퍼텐셜이 설치된 것으로 이해할 수 있다.

프로그램 설명

1. 프로그램은 왼쪽 두 점의 파동함수 값으로 부터 오른쪽 한 점의 파동함수를 결정해 나가면서 마디수를 검사하여 원하는 마디수를 넘기는 경우에는 에너지를 줄여서 다시 추적한다.

2. 처음의 에너지의 상한과 하한은 각각 100, 0 으로 하고, 이들의 중앙의 에너지로 시도하여 마디수가 마디수를 넘기면 중앙 에너지를 상한으로 다시 설정하고, 아니면 중앙 에너지를 하한으로 설정하여 과정을 되풀이 한다.

3. 1회의 반복에 대해 에너지의 범위가 1/2 씩 좁혀져서 10회를 수행하면 1/1024, 20회를 수행하면 약 백만분의 1로 된다. 따라서 프로그램에서 설정한 25회가 되면 처음 범위인 100 에서 약 0.000003 으로 줄어들어 거의 정확한 고유에너지를 구할 수 있게 된다.

4. 비록 (3)의 절차로 고유에너지는 정교하게 정해지더라도 파동함수가 오른쪽 가장자리에서 원하는 대로 0 이 되지 않는 경우가 있다.

관찰 사항

1. 처음의 $x^2$ 형 퍼텐셜은 $\omega = 20$이어서 바닥상태의 에너지의 참값은 10 이다. 그러나 구간수에 따라 결과가 크게 벗어나는 경우가 있다. 구간수를 달리하여 각 결과의 오차를 서로 비교해 보자. 이를 통해 구간수를 늘인다는 것이 좋은가를 판단해 보자.

2. $x^2$ 형 퍼텐셜은 마디수가 올라가면 가장자리 효과가 커져서 점점 이론적인 결과와 달라진다. 가장자리 효과의 영향이 문제가 되는 경우, 가장자리에서의 파동함수의 행동을 관찰해 보자. 이런 문제를 피하기 위해서는 어떻게 해야할까?

3. 상자형 퍼텐셜은 무한 퍼텐셜 장벽에 갇힌 입자로서 가장자리 효과가 이미 반영되어 수치해석에서 확실한 결과가 나와야 한다. 마디수 0 ~ 4까지 모두에 대해 수치해석을 실행해 보자. (1)과 같은 질문에 대한 답을 해 보라.

4. |x| 형의 퍼텐셜은 마디수 4에서 프로그램에서 미리 설정한 에너지의 상한 100을 넘기는 것처럼 보인다. 이를 확인하라.



[질문1] 인접한 두 점의 파동함수로부터 오른쪽의 한 점의 파동함수를 구하는 데 소요되는 시간이 $\delta$라 할 때, 구간수에 따라 25회의 순환과정을 다 밟는 데 필요한 전체 시간은 얼마인가?

[질문2] 상자형의 퍼텐셜인 경우 마디수가 늘어나면 같은 간격으로 마디의 수는 점차 늘어난다. 이때 마디의 간격보다 $x$를 이산값으로 나눈 간격 $\varepsilon$이 더 좁아야 한다. 인접한 마디 사이에 공간의 격자점이 몇 개이상 있도록 해야 할까? 상자의 구간을 100개로 나누었을 때 대략 몇 번째 들뜬 상태까지를 수치해석으로 구할 수 있을까? (신호의 디지털화에 대한 나이키스트의 정리(nyquist theorem)를 참고할 수 있다)

[질문3] 'x^2'형의 퍼텐셜은 해석적인 풀이를 '조화진동자의 양자론' 단원에서 다루었다. 여기서의 수치해석에서 마디 4 는 비록 구간수를 넓게 잡더라도 그 결과는 크게 벗어난 것을 알 수 있다. 이를 피하기 위해 적어도 얼마나 넓은 범위에서 수치해석을 해야 하는지를 해석적인 풀이의 결과를 이용하여 추정해 보라.


_ 조화진동자의 양자론_ 슈뢰딩거 방정식_ 퍼텐셜 장벽_ 고유함수_ 들뜬상태_ 바닥상태_ 파동함수_ 마디점_ 규격화_ 고윳값_ 격자

정상상태 수치해석의 제한점과 개선책

앞에서의 방법으로 상당한 정밀도로 에너지 고윳값이 구해진다. 그러나 이로부터 파동함수를 계산하는 데는 문제가 있는 경우가 있다. 퍼텐셜에 따라 오른쪽 끝의 파동함숫값은 $E$에 아주 민감하게 의존하는 경우가 많은데 예를 들어 오른쪽 영역에서 $U(x)-E$ 가 큰 경우 파동함수가 기하급수적으로 증가하거나 감소하여 곧 무한대에 가까워저 버린다. 따라서 조금만 $E$를 변화시켜도 +(-)무한대에서 -(+) 무한대로 바뀌어버리는 것이다. 이 문제는 $\varepsilon$을 줄이거나 수치의 정도를 높여도 쉽게 해결되지 않으며, 이는 이산적인 값만 취급하는 컴퓨터의 근본적인 한계라고 할 수 있다.

이러한 문제는 파동함수를 검증하는 지점을 오른쪽 끝에서 파동함수가 적정한 값을 가지는 영역으로 이동하면 거의 해소된다. 즉, 일단 출발을 왼쪽 끝과 오른쪽 끝에서 동시에 시도하고, 중간의 적정한 지점($x_c$)에서 둘이 매끈하게 이어 붙여지는 $E$를 찾는 것이다.

이 경우 오른쪽으로의 전개에서 $\psi_0 = 0, \psi_1 = A$로, 왼쪽으로의 전개에서 $\psi_N = 0, \psi_{N-1}=B$로 삼았다고 하자. 이 $A$와 $B$는 임의로 설정된 것이므로 서로 다른 배율의 파동함수를 생성하게 된다. 따라서 둘을 이어 붙이는 지점에서 상수배 만큼의 차이가 있어도 문제가 없다. 그러나 퍼텐셜이 유한한 경우 언제나 파동함수가 연속이고, 아울러 1차 미분도 연속이어야 하므로 둘이 비록 다른 배율을 갖더라도 이들의 함숫값과 1차 미분값의 비는 다음과 같이 연속이어야 한다. \[ \frac{\psi'_L}{\psi_L} \Bigg|_{x_c} = \frac{\psi'_R}{\psi_R} \Bigg|_{x_c} \] 여기서 왼쪽 항은 왼쪽 끝에서 오른쪽로 전개한 것이고, 오른쪽 항은 오른쪽에서 왼쪽으로 전개한 것으로 중간 부근인 둘을 이어 붙이는 지점으로 이르게 된 값이다.

이후에 보여주는 프로그램에서는 이러한 절차를 따라서 수치해석한 것이다. 아울러 2차 미분이나 1차 미분에서 앞에서 설명한 방법보다 더 정교한 근사식을 이용한다. 여기서 사용한 수치해석의 오차는 $O(\varepsilon^6)$이다.



[질문1] 파동함수는 일반적으로 복소수 값을 가진다. 그러나 여기서는 공간의존 파동함수 $\psi(x)$를 실수로 두고 수치해석하는 절차를 설명하고 있다. 이처럼 실수함수로 $\psi(x)$를 취급할 수 있는 이유는 무엇인가?

[질문2] 앞서 이론적으로 설명한 2차 미분에 대한 근사공식보다 더 정교한 근사공식들은 수치해석 교재에서 찾을 수 있다. 2차 미분에서의 오차가 $O(\varepsilon^6)$인 정교한 공식을 도입해서 해를 구하는 절차를 구성해 보자.

[질문3] 이분법을 더 개선하여 더 빠르게 고유에너지를 찾는 방법이 있다. 근을 찾는 문제에서 선형내삽법(linear interpolation)은 근에서 벗어난 정도를 가중치로 하여 추정치를 보다 효율적으로 압축해 간다. 앞의 '슈뢰딩거 방정식의 수치해석 과정'의 프로그램에서 선형내삽법을 적용하는 알고리즘을 플롯차트 형태로 정리하라.

[질문4] 어떤 영역에서 퍼텐셜이 거의 일정하고, 참값에서 벗어난 고유에너지의 추정값보다 100 정도로 높다고 하자. 즉 $U(x)-E \approx 100$ 정도이다. 이때에는 파동함수가 + 이면 아래로 볼록한 파동함수가 되어 오른쪽으로 전개될수록 기하급수적으로 증가하여 발산해 버린다. 만일에 이 영역에 접어든 파동함수가 이와 같을 때 진행하는 길이에 따른 파동함수의 발산하는 정도를 추정해 보자. 만일 컴퓨터가 취급하는 숫자의 한계를 10100정도라 할 때 어떤 상황에서 over flow 가 발생하는가? 프로그램에서 이를 피할 수 있는 방안은 무엇일까?


_ 슈뢰딩거 방정식의 수치해석_ 파동함수_ 복소수_ 고윳값_ 배율



Copyright ⓒ 1999~ physica.gnu.ac.kr All rights reserved