图

Crank-Nicolson 算法(一维)

   薛定谔方程为

\begin{equation} -\frac12 \pdvTwo[2]{\psi}{x} + V\psi = \I \pdvTwo{\psi}{t} \end{equation}
用 Crank-Nicolson 或 Caley scheme1 得到的结果是
\begin{equation} \qtyRound{1+\frac{\I}{2}\mat H\Delta t}\psi^{n+1} = \qtyRound{1-\frac{\I}{2}\mat H\Delta t}\psi^n \end{equation}
其中二阶导数用三点差分计算, 得
\begin{equation} \ali{ \psi_i^{n+1} - \psi_i^n &= \frac{\I\Delta t}{4\Delta x^2} (\psi_{i-1}^n - 2\psi_i^n + \psi_{i+1}^n + \psi_{i-1}^{n+1} - 2\psi_i^{n+1} + \psi_{i+1}^{n+1})\\ &\qquad\qquad - \frac{\I\Delta t}{2}(V_i^n\psi_i^n + V_i^{n+1}\psi_i^{n+1}) }\end{equation}
令 $\alpha = \I\Delta t/(4\Delta x^2), \beta = \I\Delta t/2$, 整理可得
\begin{equation} \ali{ &\quad -\alpha\psi_{i-1}^{n+1} + (1+2\alpha + \beta V_i^{n+1})\psi_i^{n+1} - \alpha \psi_{i+1}^{n+1}\\ &= \alpha\psi_{i-1}^n + (1 - 2\alpha - \beta V_i^n)\psi_i^n + \alpha \psi_{i+1}^n }\end{equation}
其中 $\psi_i^n = \psi(x_i, t_n)$, $V_i^n = V(x_i, t_n)$.

   我们把一个区间划分成 $N_x - 1$ 段等长的区间, 并令 $N_x$ 个格点为 $x_1\dots x_{N_x}$. 最简单的边界条件是取 $\psi(x_1) = \psi(x_{N_x}) = 0$. 这样式 4 中的 $i$ 可以取 $i = 2\dots N_x - 1$, 得到 $N_x - 2$ 条式子, 其中只有 $\psi_2^{n+1}\dots \psi_{N_x-1}^{n+1}$ 这 $N_x - 2$ 个未知量, 每条式子最多包含连续 3 个未知量. 将线性方程用矩阵表示, 就可以得到一个三对角矩阵(第一行和最后一行只有两个系数).

   但事实上, 还可以继续减少计算量. 将式 2 整理后得

\begin{equation} \qtyRound{\frac12 + \frac{\I}{4}\mat H\Delta t}\qtyRound{\psi^{n+1}+\psi^n} = \psi^n \end{equation}
解这个方程, 再减去 $\psi^n$ 即可.

虚时间

   使用虚时间后, 式 2 式 5 分别变为

\begin{equation} \qtyRound{1+\frac12\mat H\Delta t}\psi^{n+1} = \qtyRound{1-\frac12\mat H\Delta t}\psi^n \end{equation}
\begin{equation} \qtyRound{\frac12 + \frac14\mat H\Delta t}\qtyRound{\psi^{n+1}+\psi^n} = \psi^n \end{equation}


1. 二者是一回事, 见 Numerical Recipes 19.2

致读者: 小时物理百科一直以来坚持所有内容免费且不做广告,这导致我们处于日渐严重的亏损状态。长此以往很可能会最终导致我们不得不选择商业化,例如大量广告,内容付费,会员制,甚至被收购。因此,我们鼓起勇气在此请求广大读者热心捐款,使网站得以健康发展。如果看到这条信息的每位读者能慷慨捐助 10 元,我们几天内就能脱离亏损状态,并保证网站能在接下来的一整年里向所有读者继续免费提供优质内容。感谢您的支持。
—— 小时(项目创始人)

编辑词条 返回目录 返回主页 捐助项目 © 小时物理百科 保留一切权利