Schrödinger 方程的差分方法
引言
Schrödinger 方程奠定了近代量子力学的基础, 揭示了微观世界中物质运动的 基本规律. Schrödinger 方程在量子力学中的地位如同牛顿三定律之于经典力学、麦克斯韦方程之于电磁学. Schrödinger 方程在等离子物理、非线性光子学、水波及双分子动力学等领域也有重要应用.
考虑如下 Schrödinger 方程初边值问题
i u t + u x x + q ∣ u ∣ 2 u = 0 , 0 < x < L , 0 ⩽ t ⩽ T , u ( x , 0 ) = φ ( x ) , 0 ⩽ x ⩽ L , u ( 0 , t ) = 0 , u ( L , t ) = 0 , 0 < t ⩽ T , (1) \begin{aligned} &\mathrm{i} u_{t}+u_{x x}+q|u|^{2} u=0, \quad 0<x<L, 0 \leqslant t \leqslant T, \\ &u(x, 0)=\varphi(x), \quad 0 \leqslant x \leqslant L, \\ &u(0, t)=0, \quad u(L, t)=0, \quad 0<t \leqslant T, \end{aligned}\tag{1} iut+uxx+q∣u∣2u=0,0<x<L,0⩽t⩽T,u(x,0)=φ(x),0⩽x⩽L,u(0,t)=0,u(L,t)=0,0<t⩽T,(1)
其中 q q q 为实常数, i = − 1 \mathrm{i}=\sqrt{-1} i=−1 为虚数单位, φ ( x ) \varphi(x) φ(x) 为复值函数, φ ( 0 ) = φ ( L ) = 0 , u ( x , t ) \varphi(0)=\varphi(L)=0, u(x, t) φ(0)=φ(L)=0,u(x,t) 为末知复函数.
三层线性化差分格式
差分格式的建立
在点 ( x j , t 1 2 ) \left(x_{j}, t_{\frac{1}{2}}\right) (xj,t21) 处考虑控制方程, 有
i u t ( x j , t 1 2 ) + u x x ( x j , t 1 2 ) + q ∣ u ( x j , t 1 2 ) ∣ 2 u ( x j , t 1 2 ) = 0 , 1 ⩽ j ⩽ m − 1. \mathrm{i} u_{t}\left(x_{j}, t_{\frac{1}{2}}\right)+u_{x x}\left(x_{j}, t_{\frac{1}{2}}\right)+q\left|u\left(x_{j}, t_{\frac{1}{2}}\right)\right|^{2} u\left(x_{j}, t_{\frac{1}{2}}\right)=0, \quad 1 \leqslant j \leqslant m-1 . iut(xj,t21)+uxx(xj,t21)+q∣∣∣u(xj,t21)∣∣∣2u(xj,t21)=0,1⩽j⩽m−1.
由微分公式可得
i δ t U j 1 2 + δ x 2 U j 1 2 + q ∣ u ^ j ∣ 2 U j 1 2 = P j 0 , 1 ⩽ j ⩽ m − 1 , (2) \mathrm{i} \delta_{t} U_{j}^{\frac{1}{2}}+\delta_{x}^{2} U_{j}^{\frac{1}{2}}+q\left|\hat{u}_{j}\right|^{2} U_{j}^{\frac{1}{2}}=P_{j}^{0}, \quad 1 \leqslant j \leqslant m-1,\tag{2} iδtUj21+δx2Uj21+q∣u^j∣2Uj21=Pj0,1⩽j⩽m−1,(2)
其中
u ^ j = u ( x j , 0 ) + τ 2 u t ( x j , 0 ) , 1 ⩽ j ⩽ m − 1 , \hat{u}_{j}=u\left(x_{j}, 0\right)+\frac{\tau}{2} u_{t}\left(x_{j}, 0\right), \quad 1 \leqslant j \leqslant m-1, u^j=u(xj,0)+2τut(xj,0),1⩽j⩽m−1,
且存在常数 c 8 c_{8} c8 使得
∣ P j 0 ∣ ⩽ c 8 ( τ 2 + h 2 ) , 1 ⩽ j ⩽ m − 1. \left|P_{j}^{0}\right| \leqslant c_{8}\left(\tau^{2}+h^{2}\right), \quad 1 \leqslant j \leqslant m-1 . ∣∣Pj0∣∣⩽c8(τ2+h2),1⩽j⩽m−1.
在点 ( x j , t k ) \left(x_{j}, t_{k}\right) (xj,tk)处考虑控制方程, 有
i u t ( x j , t k ) + u x x ( x j , t k ) + q ∣ u ( x j , t k ) ∣ 2 u ( x j , t k ) = 0 , 1 ⩽ j ⩽ m − 1 , 1 ⩽ k ⩽ n − 1. \mathrm{i} u_{t}\left(x_{j}, t_{k}\right)+u_{x x}\left(x_{j}, t_{k}\right)+q\left|u\left(x_{j}, t_{k}\right)\right|^{2} u\left(x_{j}, t_{k}\right)=0, \quad 1 \leqslant j \leqslant m-1,1 \leqslant k \leqslant n-1 . iut(xj,tk)+uxx(xj,tk)+q∣u(xj,tk)∣2u(xj,tk)=0,1⩽j⩽m−1,1⩽k⩽n−1.
由微分公式可得
i Δ t U j k + δ x 2 U j k ˉ + q ∣ U j k ∣ 2 U j k ˉ = P j k , 1 ⩽ j ⩽ m − 1 , 1 ⩽ k ⩽ n − 1 , (3) \mathrm{i} \Delta_{t} U_{j}^{k}+\delta_{x}^{2} U_{j}^{\bar{k}}+q\left|U_{j}^{k}\right|^{2} U_{j}^{\bar{k}}=P_{j}^{k}, \quad 1 \leqslant j \leqslant m-1,1 \leqslant k \leqslant n-1,\tag{3} iΔtUjk+δx2Ujkˉ+q∣∣Ujk∣∣2Ujkˉ=Pjk,1⩽j⩽m−1,1⩽k⩽n−1,(3)
且存在常数 c 9 c_{9} c9 使得
∣ P j k ∣ ⩽ c 9 ( τ 2 + h 2 ) , 1 ⩽ j ⩽ m − 1 , 1 ⩽ k ⩽ n − 1 , ∣ Δ t P j k ∣ ⩽ c 9 ( τ 2 + h 2 ) , 1 ⩽ j ⩽ m − 1 , 2 ⩽ k ⩽ n − 2. \begin{gathered} \left|P_{j}^{k}\right| \leqslant c_{9}\left(\tau^{2}+h^{2}\right), \quad 1 \leqslant j \leqslant m-1,1 \leqslant k \leqslant n-1, \\ \left|\Delta_{t} P_{j}^{k}\right| \leqslant c_{9}\left(\tau^{2}+h^{2}\right), \quad 1 \leqslant j \leqslant m-1,2 \leqslant k \leqslant n-2 . \end{gathered} ∣∣Pjk∣∣⩽c9(τ2+h2),1⩽j⩽m−1,1⩽k⩽n−1,∣∣ΔtPjk∣∣⩽c9(τ2+h2),1⩽j⩽m−1,2⩽k⩽n−2.
注意到初边值条件, 有
U j 0 = φ ( x j ) , 1 ⩽ j ⩽ m − 1 , U_{j}^{0}=\varphi\left(x_{j}\right), \quad 1 \leqslant j \leqslant m-1, Uj0=φ(xj),1⩽j⩽m−1,
U 0 k = 0 , U m k = 0 , 0 ⩽ k ⩽ n . U_{0}^{k}=0, \quad U_{m}^{k}=0, \quad 0 \leqslant k \leqslant n . U0k=0,Umk=0,0⩽k⩽n.
在 ( 2 ) (2) (2) 和 ( 3 ) (3) (3) 中略去小量项, 对问题 ( 1 ) (1) (1) 建立如下线性化差分格式
i δ t u j 1 2 + δ x 2 u j 1 2 + q ∣ u ^ j ∣ 2 u j 1 2 = 0 , 1 ⩽ j ⩽ m − 1 , i Δ t u j k + δ x 2 u j k ˉ + q ∣ u j k ∣ 2 u j k ˉ = 0 , 1 ⩽ j ⩽ m − 1 , 1 ⩽ k ⩽ n − 1 u j 0 = φ ( x j ) , 1 ⩽ j ⩽ m − 1 , u 0 k = 0 , u m k = 0 , 0 ⩽ k ⩽ n . \begin{aligned} &\mathrm{i} \delta_{t} u_{j}^{\frac{1}{2}}+\delta_{x}^{2} u_{j}^{\frac{1}{2}}+q\left|\hat{u}_{j}\right|^{2} u_{j}^{\frac{1}{2}}=0, \quad 1 \leqslant j \leqslant m-1, \\ &\mathrm{i} \Delta_{t} u_{j}^{k}+\delta_{x}^{2} u_{j}^{\bar{k}}+q\left|u_{j}^{k}\right|^{2} u_{j}^{\bar{k}}=0, \quad 1 \leqslant j \leqslant m-1,1 \leqslant k \leqslant n-1 \\ &u_{j}^{0}=\varphi\left(x_{j}\right), \quad 1 \leqslant j \leqslant m-1, \\ &u_{0}^{k}=0, \quad u_{m}^{k}=0, \quad 0 \leqslant k \leqslant n . \end{aligned} iδtuj21+δx2uj21+q∣u^j∣2uj21=0,1⩽j⩽m−1,iΔtujk+δx2ujkˉ+q∣∣ujk∣∣2ujkˉ=0,1⩽j⩽m−1,1⩽k⩽n−1uj0=φ(xj),1⩽j⩽m−1,u0k=0,umk=0,0⩽k⩽n.
建立代数系统
两层格式(启动层)
记
u k = ( u 0 k , u 1 k , ⋯ , u m − 1 k , u m k ) u^{k}=\left(u_{0}^{k}, u_{1}^{k}, \cdots, u_{m-1}^{k}, u_{m}^{k}\right) uk=(u0k,u1k,⋯,um−1k,umk)
由初值条件知第 0 0 0 层上的值 u 0 u^{0} u0 已知. 根据差分格式
i δ t u j 1 2 + δ x 2 u j 1 2 + q ∣ u ^ j ∣ 2 u j 1 2 = 0 , 1 ⩽ j ⩽ m − 1 \mathrm{i} \delta_{t} u_{j}^{\frac{1}{2}}+\delta_{x}^{2} u_{j}^{\frac{1}{2}}+q\left|\hat{u}_{j}\right|^{2} u_{j}^{\frac{1}{2}}=0, \quad 1 \leqslant j \leqslant m-1 iδtuj21+δx2uj21+q∣u^j∣2uj21=0,1⩽j⩽m−1
则关于第 1 1 1 层值的差分格式为
i u j 1 − u j 0 τ + 1 2 h 2 ( u j + 1 1 − 2 u j 1 + u j − 1 1 ) + 1 2 h 2 ( u j + 1 0 − 2 u j 0 + u j − 1 0 ) + q ∣ φ ( x j ) + τ 2 u t ( x j , 0 ) ∣ 2 ⋅ u j 1 + u j 0 2 = 0 , 1 ≤ j ≤ m − 1 , u 0 1 = 0 , u m 1 = 0. \begin{aligned} &\mathrm{i}\frac{u_{j}^{1}-u_{j}^{0}}{\tau}+\frac{1}{2h^2}(u_{j+1}^{1}-2u_{j}^{1}+u_{j-1}^{1})+\frac{1}{2h^2}(u_{j+1}^{0}-2u_{j}^{0}+u_{j-1}^{0})+q\mid\varphi(x_{j})+\frac{\tau}{2}u_t(x_j,0)\mid^2\cdot\frac{u_{j}^{1}+u_{j}^{0}}{2}=0 ,1\leq j\leq m-1,\\ &u_0^1=0,\ u_m^1=0. \end{aligned} iτuj1−uj0+2h21(uj+11−2uj1+uj−11)+2h21(uj+10−2uj0+uj−10)+q∣φ(xj)+2τut(xj,0)∣2⋅2uj1+uj0=0,1≤j≤m−1,u01=0, um1=0.
将第 1 1 1 层写在方程左边, 第 0 0 0 层写在方程右边
1 2 h 2 u j − 1 1 + ( 1 τ i − 1 h 2 + q 2 ∣ φ ( x j ) + τ 2 u t ( x j , 0 ) ∣ 2 ) u j 1 + 1 2 h 2 u j + 1 1 = − 1 2 h 2 u j − 1 0 + ( 1 τ i + 1 h 2 − q 2 ∣ φ ( x j ) + τ 2 u t ( x j , 0 ) ∣ 2 ) u j 0 − 1 2 h 2 u j + 1 0 \frac{1}{2h^2}u_{j-1}^{1}+(\frac{1}{\tau}\mathrm{i}-\frac{1}{h^2}+\frac{q}{2}\mid\varphi(x_{j})+\frac{\tau}{2}u_t(x_j,0)\mid^2)u_{j}^{1}+\frac{1}{2h^2}u_{j+1}^{1}=-\frac{1}{2h^2}u_{j-1}^{0}+(\frac{1}{\tau}\mathrm{i}+\frac{1}{h^2}-\frac{q}{2}\mid\varphi(x_{j})+\frac{\tau}{2}u_t(x_j,0)\mid^2)u_{j}^{0}-\frac{1}{2h^2}u_{j+1}^{0} 2h21uj−11+(τ1i−h21+2q∣φ(xj)+2τut(xj,0)∣2)uj1+2h21uj+11=−2h21uj−10+(τ1i+h21−2q∣φ(xj)+2τut(xj,0)∣2)uj0−2h21uj+10
写成如下矩阵形式
( b a a b a ⋱ ⋱ ⋱ a b a a b ) ( u 1 1 u 2 1 ⋮ u m − 2 1 u m − 1 1 ) + ( a u 0 1 0 ⋮ 0 a u m 1 ) = ( c − a − a c − a ⋱ ⋱ ⋱ − a c − a − a c ) ( u 1 0 u 2 0 ⋮ u m − 2 0 u m − 1 0 ) + ( − a u 0 0 0 ⋮ 0 − a u m 0 ) \begin{array}{l} \left(\begin{array}{ccccc} b & a & & & \\ a & b & a & & \\ & \ddots & \ddots & \ddots & \\ & & a & b & a \\ & & & a & b \end{array}\right)\left(\begin{array}{c} u_{1}^{1} \\ u_{2}^{1} \\ \vdots \\ u_{m-2}^{1} \\ u_{m-1}^{1} \end{array}\right) +\left(\begin{array}{c} au_{0}^{1} \\ 0 \\ \vdots \\ 0 \\ au_{m}^{1} \end{array}\right) =\left(\begin{array}{ccccc} c & -a & & & \\ -a & c & -a & & \\ & \ddots & \ddots & \ddots & \\ & & -a & c & -a \\ & & & -a & c\end{array}\right)\left(\begin{array}{c} u_{1}^{0} \\ u_{2}^{0} \\ \vdots \\ u_{m-2}^{0} \\ u_{m-1}^{0} \end{array}\right) +\left(\begin{array}{c} -au_{0}^{0} \\ 0 \\ \vdots \\ 0 \\ -au_{m}^{0} \end{array}\right) \end{array} ⎝⎜⎜⎜⎜⎛baab⋱a⋱a⋱baab⎠⎟⎟⎟⎟⎞⎝⎜⎜⎜⎜⎜⎛u11u21⋮um−21um−11⎠⎟⎟⎟⎟⎟⎞+⎝⎜⎜⎜⎜⎜⎛au010⋮0aum1⎠⎟⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎜⎛c−a−ac⋱−a⋱−a⋱c−a−ac⎠⎟⎟⎟⎟⎞⎝⎜⎜⎜⎜⎜⎛u10u20⋮um−20um−10⎠⎟⎟⎟⎟⎟⎞+⎝⎜⎜⎜⎜⎜⎛−au000⋮0−aum0⎠⎟⎟⎟⎟⎟⎞
根据边界条件 u 0 0 = u 0 1 = u m 0 = u m 1 . u_0^{0}=u_0^{1}=u_m^{0}=u_m^{1}. u00=u01=um0=um1.
矩阵形式可化简为
( b a a b a ⋱ ⋱ ⋱ a b a a b ) ( u 1 1 u 2 1 ⋮ u m − 2 1 u m − 1 1 ) = ( c − a − a c − a ⋱ ⋱ ⋱ − a c − a − a c ) ( u 1 0 u 2 0 ⋮ u m − 2 0 u m − 1 0 ) (4) \begin{array}{l} \left(\begin{array}{ccccc} b & a & & & \\ a & b & a & & \\ & \ddots & \ddots & \ddots & \\ & & a & b & a \\ & & & a & b \end{array}\right)\left(\begin{array}{c} u_{1}^{1} \\ u_{2}^{1} \\ \vdots \\ u_{m-2}^{1} \\ u_{m-1}^{1} \end{array}\right) =\left(\begin{array}{ccccc} c & -a & & & \\ -a & c & -a & & \\ & \ddots & \ddots & \ddots & \\ & & -a & c & -a \\ & & & -a & c\end{array}\right)\left(\begin{array}{c} u_{1}^{0} \\ u_{2}^{0} \\ \vdots \\ u_{m-2}^{0} \\ u_{m-1}^{0} \end{array}\right) \end{array} \tag{4} ⎝⎜⎜⎜⎜⎛baab⋱a⋱a⋱baab⎠⎟⎟⎟⎟⎞⎝⎜⎜⎜⎜⎜⎛u11u21⋮um−21um−11⎠⎟⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎜⎛c−a−ac⋱−a⋱−a⋱c−a−ac⎠⎟⎟⎟⎟⎞⎝⎜⎜⎜⎜⎜⎛u10u20⋮um−20um−10⎠⎟⎟⎟⎟⎟⎞(4)
求解以上代数系统, 可以得到关于 u u u 的第 1 1 1 层数值解 u 1 u^1 u1.

其中
a = 1 2 h 2 b = 1 τ i − 1 h 2 + q 2 ∣ φ ( x j ) + τ 2 u t ( x j , 0 ) ∣ 2 c = 1 τ i + 1 h 2 − q 2 ∣ φ ( x j ) + τ 2 u t ( x j , 0 ) ∣ 2 \begin{aligned} a&=\frac{1}{2h^2}\\ b&=\frac{1}{\tau}\mathrm{i}-\frac{1}{h^2}+\frac{q}{2}\mid\varphi(x_{j})+\frac{\tau}{2}u_t(x_j,0)\mid^2\\ c&=\frac{1}{\tau}\mathrm{i}+\frac{1}{h^2}-\frac{q}{2}\mid\varphi(x_{j})+\frac{\tau}{2}u_t(x_j,0)\mid^2 \end{aligned} abc=2h21=τ1i−h21+2q∣φ(xj)+2τut(xj,0)∣2=τ1i+h21−2q∣φ(xj)+2τut(xj,0)∣2
注: u t ( x j , 0 ) u_t(x_j,0) ut(xj,0) 通过控制方程结合初值条件可求得, 具体过程如下.
在点 ( x j , 0 ) (x_j,0) (xj,0) 考虑控制方程, 有
i u t ( x j , 0 ) + u x x ( x j , 0 ) + q ∣ u ( x j , 0 ) ∣ 2 u ( x j , 0 ) = 0 , 0 < x < L , 0 ⩽ t ⩽ T , \mathrm{i} u_{t}(x_j,0)+u_{x x}(x_j,0)+q|u(x_j,0)|^{2} u(x_j,0)=0, \quad 0<x<L, 0 \leqslant t \leqslant T, iut(xj,0)+uxx(xj,0)+q∣u(xj,0)∣2u(xj,0)=0,0<x<L,0⩽t⩽T,
结合初值条件
u ( x , 0 ) = φ ( x ) , 0 ⩽ x ⩽ L u(x, 0)=\varphi(x), \quad 0 \leqslant x \leqslant L u(x,0)=φ(x),0⩽x⩽L
得
i u t ( x j , 0 ) + φ ′ ′ ( x ) + q ∣ φ ( x ) ∣ 2 φ ( x ) = 0 , 0 < x < L , 0 ⩽ t ⩽ T , \mathrm{i} u_{t}(x_j,0)+\varphi\prime\prime(x)+q|\varphi(x)|^{2} \varphi(x)=0, \quad 0<x<L, 0 \leqslant t \leqslant T, iut(xj,0)+φ′′(x)+q∣φ(x)∣2φ(x)=0,0<x<L,0⩽t⩽T,
在方程两边同时乘以 − i -\mathrm{i} −i 得
u t ( x j , 0 ) − i φ ′ ′ ( x ) − i q ∣ φ ( x ) ∣ 2 φ ( x ) = 0 , 0 < x < L , 0 ⩽ t ⩽ T , u_{t}(x_j,0)-\mathrm{i}\varphi\prime\prime(x)-\mathrm{i}q|\varphi(x)|^{2} \varphi(x)=0, \quad 0<x<L, 0 \leqslant t \leqslant T, ut(xj,0)−iφ′′(x)−iq∣φ(x)∣2φ(x)=0,0<x<L,0⩽t⩽T,
于是
u t ( x j , 0 ) = i φ ′ ′ ( x ) + i q ∣ φ ( x ) ∣ 2 φ ( x ) , 0 < x < L , 0 ⩽ t ⩽ T , u_{t}(x_j,0)=\mathrm{i}\varphi\prime\prime(x)+\mathrm{i}q|\varphi(x)|^{2} \varphi(x), \quad 0<x<L, 0 \leqslant t \leqslant T, ut(xj,0)=iφ′′(x)+iq∣φ(x)∣2φ(x),0<x<L,0⩽t⩽T,
三层格式
由初值条件和求解代数系统 ( 4 ) (4) (4) , 第 0 0 0 层及第 1 1 1 层上的值 u 0 , u 1 u^{0},\ u^{1} u0, u1 已知. 设已确定出了第 k − 1 , k k-1,\ k k−1, k 层的值 u k − 1 , u k u^{k-1},\ u^{k} uk−1, uk. 根据差分格式
i Δ t u j k + δ x 2 u j k ˉ + q ∣ u j k ∣ 2 u j k ˉ = 0 , 1 ⩽ j ⩽ m − 1 , 1 ⩽ k ⩽ n − 1 \mathrm{i} \Delta_{t} u_{j}^{k}+\delta_{x}^{2} u_{j}^{\bar{k}}+q\left|u_{j}^{k}\right|^{2} u_{j}^{\bar{k}}=0, \quad 1 \leqslant j \leqslant m-1,1 \leqslant k \leqslant n-1 iΔtujk+δx2ujkˉ+q∣∣ujk∣∣2ujkˉ=0,1⩽j⩽m−1,1⩽k⩽n−1
则关于第 k + 1 k+1 k+1 层值的差分格式为
i u j k + 1 − u j k − 1 2 τ + 1 2 h 2 ( u j + 1 k + 1 − 2 u j k + 1 + u j − 1 k + 1 ) + 1 2 h 2 ( u j + 1 k − 1 − 2 u j k − 1 + u j − 1 k − 1 ) + q 2 ∣ u j k ∣ 2 ⋅ ( u j k + 1 + u j k − 1 ) = 0 , 1 ⩽ j ⩽ m − 1 , 1 ⩽ k ⩽ n − 1 \mathrm{i}\frac{u_{j}^{k+1}-u_{j}^{k-1}}{2\tau}+\frac{1}{2h^2}(u_{j+1}^{k+1}-2u_{j}^{k+1}+u_{j-1}^{k+1})+\frac{1}{2h^2}(u_{j+1}^{k-1}-2u_{j}^{k-1}+u_{j-1}^{k-1})+\frac{q}{2}\mid u_{j}^{k}\mid^2\cdot(u_{j}^{k+1}+u_{j}^{k-1})=0, \quad 1 \leqslant j \leqslant m-1,1 \leqslant k \leqslant n-1 i2τujk+1−ujk−1+2h21(uj+1k+1−2ujk+1+uj−1k+1)+2h21(uj+1k−1−2ujk−1+uj−1k−1)+2q∣ujk∣2⋅(ujk+1+ujk−1)=0,1⩽j⩽m−1,1⩽k⩽n−1
将第 k + 1 k+1 k+1 层写在方程左边, 第 k − 1 k-1 k−1 层及 k k k 层写在方程右边
1 2 h 2 u j − 1 k + 1 + ( i 2 τ − 1 h 2 + q 2 ∣ u j k ∣ 2 ) u j k + 1 + 1 2 h 2 u j + 1 k + 1 = − 1 2 h 2 u j − 1 k − 1 + ( i 2 τ + 1 h 2 − q 2 ∣ u j k ∣ 2 ) u j k − 1 − 1 2 h 2 u j + 1 k − 1 . \frac{1}{2h^2}u_{j-1}^{k+1}+(\frac{\mathrm{i}}{2\tau}-\frac{1}{h^2}+\frac{q}{2}\mid u_{j}^{k}\mid^2)u_{j}^{k+1}+\frac{1}{2h^2}u_{j+1}^{k+1}= -\frac{1}{2h^2}u_{j-1}^{k-1}+(\frac{\mathrm{i}}{2\tau}+\frac{1}{h^2}-\frac{q}{2}\mid u_{j}^{k}\mid^2)u_{j}^{k-1}-\frac{1}{2h^2}u_{j+1}^{k-1}. 2h21uj−1k+1+(2τi−h21+2q∣ujk∣2)ujk+1+2h21uj+1k+1=−2h21uj−1k−1+(2τi+h21−2q∣ujk∣2)ujk−1−2h21uj+1k−1.
写成如下矩阵形式
( e d d e d ⋱ ⋱ ⋱ d e d d e ) ( u 1 k + 1 u 2 k + 1 ⋮ u m − 2 k + 1 u m − 1 k + 1 ) + ( d u 0 k + 1 0 ⋮ 0 d u m k + 1 ) = ( f − d − d f − d ⋱ ⋱ ⋱ − d f − d − d f ) ( u 1 k − 1 u 2 k − 1 ⋮ u m − 2 k − 1 u m − 1 k − 1 ) + ( − d u 0 k − 1 0 ⋮ 0 − d u m k − 1 ) \begin{array}{l} \left(\begin{array}{ccccc} e & d & & & \\ d & e & d & & \\ & \ddots & \ddots & \ddots & \\ & & d & e & d \\ & & & d & e \end{array}\right)\left(\begin{array}{c} u_{1}^{k+1} \\ u_{2}^{k+1} \\ \vdots \\ u_{m-2}^{k+1} \\ u_{m-1}^{k+1} \end{array}\right) +\left(\begin{array}{c} du_{0}^{k+1} \\ 0 \\ \vdots \\ 0 \\ du_{m}^{k+1} \end{array}\right) =\left(\begin{array}{ccccc} f & -d & & & \\ -d & f & -d & & \\ & \ddots & \ddots & \ddots & \\ & & -d & f & -d \\ & & & -d & f\end{array}\right)\left(\begin{array}{c} u_{1}^{k-1} \\ u_{2}^{k-1} \\ \vdots \\ u_{m-2}^{k-1} \\ u_{m-1}^{k-1} \end{array}\right) +\left(\begin{array}{c} -du_{0}^{k-1} \\ 0 \\ \vdots \\ 0 \\ -du_{m}^{k-1} \end{array}\right) \end{array} ⎝⎜⎜⎜⎜⎛edde⋱d⋱d⋱edde⎠⎟⎟⎟⎟⎞⎝⎜⎜⎜⎜⎜⎛u1k+1u2k+1⋮um−2k+1um−1k+1⎠⎟⎟⎟⎟⎟⎞+⎝⎜⎜⎜⎜⎜⎛du0k+10⋮0dumk+1⎠⎟⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎜⎛f−d−df⋱−d⋱−d⋱f−d−df⎠⎟⎟⎟⎟⎞⎝⎜⎜⎜⎜⎜⎛u1k−1u2k−1⋮um−2k−1um−1k−1⎠⎟⎟⎟⎟⎟⎞+⎝⎜⎜⎜⎜⎜⎛−du0k−10⋮0−dumk−1⎠⎟⎟⎟⎟⎟⎞
其中
d = 1 2 h 2 e = 1 2 τ i − 1 h 2 + q 2 ∣ u j k ∣ 2 f = 1 2 τ i + 1 h 2 − q 2 ∣ u j k ∣ 2 \begin{aligned} d&=\frac{1}{2h^2}\\ e&=\frac{1}{2\tau}\mathrm{i}-\frac{1}{h^2}+\frac{q}{2}\mid u_{j}^{k}\mid^2\\ f&=\frac{1}{2\tau}\mathrm{i}+\frac{1}{h^2}-\frac{q}{2}\mid u_{j}^{k}\mid^2 \end{aligned} def=2h21=2τ1i−h21+2q∣ujk∣2=2τ1i+h21−2q∣ujk∣2
根据边界条件 u 0 k − 1 = u 0 k = u m k − 1 = u m k . u_0^{k-1}=u_0^{k}=u_m^{k-1}=u_m^{k}. u0k−1=u0k=umk−1=umk.
矩阵形式可化简为
( e d d e d ⋱ ⋱ ⋱ d e d d e ) ( u 1 k + 1 u 2 k + 1 ⋮ u m − 2 k + 1 u m − 1 k + 1 ) = ( f − d − d f − d ⋱ ⋱ ⋱ − d f − d − d f ) ( u 1 k − 1 u 2 k − 1 ⋮ u m − 2 k − 1 u m − 1 k − 1 ) (5) \begin{array}{l} \left(\begin{array}{ccccc} e & d & & & \\ d & e & d & & \\ & \ddots & \ddots & \ddots & \\ & & d & e & d \\ & & & d & e \end{array}\right)\left(\begin{array}{c} u_{1}^{k+1} \\ u_{2}^{k+1} \\ \vdots \\ u_{m-2}^{k+1} \\ u_{m-1}^{k+1} \end{array}\right) =\left(\begin{array}{ccccc} f & -d & & & \\ -d & f & -d & & \\ & \ddots & \ddots & \ddots & \\ & & -d & f & -d \\ & & & -d & f\end{array}\right)\left(\begin{array}{c} u_{1}^{k-1} \\ u_{2}^{k-1} \\ \vdots \\ u_{m-2}^{k-1} \\ u_{m-1}^{k-1} \end{array}\right) \end{array} \tag{5} ⎝⎜⎜⎜⎜⎛edde⋱d⋱d⋱edde⎠⎟⎟⎟⎟⎞⎝⎜⎜⎜⎜⎜⎛u1k+1u2k+1⋮um−2k+1um−1k+1⎠⎟⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎜⎛f−d−df⋱−d⋱−d⋱f−d−df⎠⎟⎟⎟⎟⎞⎝⎜⎜⎜⎜⎜⎛u1k−1u2k−1⋮um−2k−1um−1k−1⎠⎟⎟⎟⎟⎟⎞(5)
求解以上代数系统 ( 5 ) (5) (5) , 可以得到关于 u u u 的第 k + 1 k+1 k+1 层数值解 u k + 1 u^{k+1} uk+1.
数值解
求解程序基于
Matlab R2019b
主程序源代码
%% 三层线性化差分格式求解Schrodinger方程
% 考虑如下 Schrodinger 方程初边值问题
% $$
% \begin{aligned}
% &\mathrm{i} u_{t}+u_{x x}+q|u|^{2} u=0, \quad 0<x<L, 0 \leqslant t \leqslant T, \\
% &u(x, 0)=\varphi(x), \quad 0 \leqslant x \leqslant L, \\
% &u(0, t)=0, \quad u(L, t)=0, \quad 0<t \leqslant T,
% \end{aligned}\tag{1}
% $$
% 其中 $q$ 为实常数, $\mathrm{i}=\sqrt{-1}$ 为虚数单位, $\varphi(x)$ 为复值函数, $\varphi(0)=\varphi(L)=0, u(x, t)$ 为末知复函数.
%% 清空工作区和缓存
clc,clear
%% 初始化定解问题
q=2; % @q 薛定谔方程系数q
tau=0.01; % @tau 时间步长
h=0.01; % @h 空间步长
L=1; % @L 空间求解区域
T=1; % @T 时间求解区域
N=T/tau; % @N t被分割的区间数
M=L/h; % @M x被分割的区间数
t=0:tau:T; % @t 时间向量
x=0:h:L; % @x 空间向量
phi=@(x)exp(x); % @phi 初值函数
u=zeros(N+1,M+1); % @u 初始化数值解
u(1,:)=phi(x); % 定义初值条件
u(:,1)=0; % 定义左边界条件
u(:,M+1)=0; % 定义右边界条件
%% 两层格式(启动层)
k=2;
% 创建代数系统
a=1/(2*h^2);
b=@(x)1/tau*1i-1/(h^2)+q/2.*abs(phi(x)+tau/2.*(1i.*phi(x)+1i*q.*abs(phi(x)).^2.*phi(x))).^2;
c=@(x)1/tau*1i+1/(h^2)-q/2.*abs(phi(x)+tau/2.*(1i.*phi(x)+1i*q.*abs(phi(x)).^2.*phi(x))).^2;
% 系数矩阵
upper_diagonal_1=ones(M-2,1)*(a); %上对角线
main_diagonal_1=b(x); %主对角线
lower_diagonal_1=ones(M-2,1)*(a); %下对角线
A=diag(main_diagonal_1(2:length(x)-1),0)+diag(lower_diagonal_1,-1)+diag(upper_diagonal_1,1);
% 右端项
upper_diagonal_2=ones(M-2,1)*(-a); %上对角线
main_diagonal_2=c(x); %主对角线
lower_diagonal_2=ones(M-2,1)*(-a); %下对角线
B=diag(main_diagonal_2(2:length(x)-1),0)+diag(lower_diagonal_2,-1)+diag(upper_diagonal_2,1); %系数矩阵
% 求解代数系统(由0层求第1层的值)
u(k,2:M)=(A\(B*u(k-1,2:M)'))';
%% 三层格式
for k=3:N+1
% 创建代数系统
d=1/(2*h^2);
e=@(x)1i/(2*tau)-1/(h^2)+q/2.*abs(u(k-1,:)).^2;
f=@(x)1i/(2*tau)+1/(h^2)-q/2.*abs(u(k-1,:)).^2;
% 系数矩阵
upper_diagonal_1=ones(M-2,1)*(d); %上对角线
main_diagonal_1=e(x); %主对角线
lower_diagonal_1=ones(M-2,1)*(d); %下对角线
A=diag(main_diagonal_1(2:length(x)-1),0)+diag(lower_diagonal_1,-1)+diag(upper_diagonal_1,1);
%右端项
upper_diagonal_2=ones(M-2,1)*(-d); %上对角线
main_diagonal_2=f(x); %主对角线
lower_diagonal_2=ones(M-2,1)*(-d); %下对角线
B=diag(main_diagonal_2(2:length(x)-1),0)+diag(lower_diagonal_2,-1)+diag(upper_diagonal_2,1);
% 求解代数系统(由 k-2 层及第 k-1 层求第 k 层的值)
u(k,2:M)=(A\(B*u(k-2,2:M)'))';
if mod(k,1)==0
plot(x,real(u(k,:)),x,imag(u(k,:)))
axis([x(1) x(end) -5 5])
legend('实部','虚部');
getframe;
end
end
数值结果
参考文献
孙志忠.《非线性发展方程的有限差分方法》.科学出版社.
本人水平有限, 若有不妥之处, 恳请批评指正.
作者邮箱: [email protected]