======변분을 통해 에너지 준위 찾기====== 1차원의 시간 무관 슈뢰딩거 방정식 $H \psi_n = E_n \psi_n$을 고려하자 ($n=0,1,2,\ldots$). 임의의 파동함수 $\psi$에 대해 에너지의 기대값은 $$\left< H \right> = \frac{\int \psi^\ast H \psi ~dx}{\int \psi^\ast \psi ~dx}$$ 인데 이 값은 언제나 바닥 상태 에너지 $E_0$보다 크거나 같으며, 바닥 상태가 유일하면 $\psi = \psi_0$일 때에 성립한다. 그 이유는 아래와 같다: 먼저 $\psi$를 에너지 고유벡터들로 분해하여 쓰자: $\psi = \sum_n c_n \psi_n$. 그러면 \begin{eqnarray} \left< H \right> &=& \frac{\int \psi^\ast H \psi ~dx}{\int \psi^\ast \psi ~dx} = \frac{\sum_n |c_n|^2 E_n}{\sum_n |c_n|^2}\\ &=& E_0 + \frac{\sum_n |c_n|^2 (E_n - E_0)}{\sum_n |c_n|^2} \ge E_0. \end{eqnarray} 그러니까 개념적으로는 시험 삼아 파동함수를 적어보고, 그 모양을 잡아주는 맺음변수들 $\alpha_1, \alpha_2, \ldots, \alpha_r$을 이리저리 바꿔가면서 에너지의 기대값을 최소화하면 될 것이다. 수식으로 적어보면 $\psi = \psi(x;\alpha_1, \alpha_2, \ldots, \alpha_r)$에 대해서 $$E = \frac{\int \psi^\ast H \psi ~dx}{\int \psi^\ast \psi ~dx}$$ 가 정의되고 이를 편미분해서 $$\frac{\partial E}{\partial \alpha_1} = \frac{\partial E}{\partial \alpha_2} = \ldots = \frac{\partial E}{\partial \alpha_r} = 0$$ 으로 하면 될 것이다. ======라그랑주 곱수의 사용====== 실제 계산에서는 라그랑주 곱수를 사용해서 $E$의 분모에 표현된 규격화 조건을 유지하면서 분자를 최소화하는 쪽이 더 간편하다. 변분의 표현으로는 $$\delta \left( \int \psi^\ast H \psi ~dx - \epsilon \int \psi^\ast \psi ~dx \right) = 0,$$ $$\int \delta\psi^\ast (H-\epsilon) \psi ~dx + \int \psi^\ast (H-\epsilon) \delta \psi ~dx = 0.$$ 여기에서 $H \psi = \epsilon \psi$가 나오므로 라그랑주 곱수의 물리적 의미는 에너지 고유값이다. ======기저함수로 전개====== 라그랑주 곱수를 사용해 범함수 $$G[\psi] = \int \psi^\ast H \psi ~dx - \epsilon \int \psi^\ast \psi ~dx$$ 를 적고 직교정규화된 $N$개의 기저함수로 파동함수를 표현하자. 즉 기저함수 $b_1, b_2, \ldots, b_N$은 $$\int b_i^\ast b_j ~dx = \delta_{ij}$$ 을 만족하며 $\psi \approx \sum_i c_i b_i$로 표현한다. 그러면 범함수는 사실상 $c_1, c_2, \ldots, c_N$의 함수여서 $$G[c_1, \ldots, c_N] = \sum_{ij} c_i^\ast c_j H_{ij} - \epsilon \sum_{ij} c_i^\ast c_j \delta_{ij}$$ 이며 여기서 $$H_{ij} \equiv \int b_i^\ast H b_j ~dx$$ 로 정의된다. $H$가 에르미트 성질을 가지므로 $H_{ij} = H_{ji}^\ast$를 만족해야 한다. 이제 $\partial G / \partial c_i = 0$을 풀어야한다. 위에 적힌 $G[c_1, \ldots, c_N]$을 미분해보면 이는 $$\sum_j (H_{ij} - \epsilon \delta_{ij}) c_j = 0,$$ 행렬식으로 표현하면 $$(H - \epsilon I) \vec{c} = 0$$ 임을 의미한다. 즉 변분의 해 $c_1, c_2, \ldots, c_N$을 찾는 일은 해밀토니안 행렬의 고유값 문제 $H \vec{c} = \epsilon \vec{c}$로 귀착된다. ======예제====== 입자가 $0 from __future__ import print_function,division from math import pi from numpy import array, empty from numpy.linalg import eigvalsh # symmetric or hermitian hbar = 1.0546e-34 # Planck constant / (2*pi) m, eV = 9.1094e-31, 1.6022e-19 # electron mass and 1eV = 1.6022e-19J L = 5.2918e-11 # box size N = 10 # number of basis functions V0 = 10**4*eV H = empty([N,N], float) for n in range(N): for k in range(N): n1,k1 = n+1,k+1 # the physical indices start from 1 if n==k: # diagonal elements H[n,k] = hbar**2*pi**2*n1**2/(2*m*L**2) \ - V0*(pi**2*n1**2+3)/(6*pi**2*n1**2) else: # off-diagonal elements H[n,k] = 4*V0*n1*k1*(1+(-1)**(k1+n1))/(pi**2*(n1-k1)**2*(n1+k1)**2) e = eigvalsh(H) print(e/eV) # output in units of eV 위 코드의 변분법으로는 $N=10$개의 기저함수만을 사용해도 $E_0 \approx -2128.8767 eV$를 얻는다. 같은 상수값들을 가지고 [[:전산물리학:사격법]]을 사용할 경우 $E_0 \approx -2128.879 eV$를 얻는다. 분명 변분법의 결과가 더 크기는 하지만 그 차이는 매우 작다. ======함께 보기====== [[수학:범함수]] ======참고문헌====== * http://www.fisica.uniud.it/~giannozz/Corsi/MQ/LectureNotes/mq.pdf