system: [SYSTEM]

user: 2. 快速高效的数值方法 在本节中，我们先分别介绍如何利用时间分裂紧致差分格式法离散一维非线性薛定谔泊松方程组、二维非线性薛定谔泊松方程组、三维非线性薛定谔泊松方程组，然后介绍如何基于一维的快速Sine变换、二维的快速Sine变换、三维的快速Sine变换来求解上述方法离散后的方程组，最后写出详细的离散求解过程。 2.1. 一维非线性薛定谔泊松方程组的求解方法 考虑如下一维非线性薛定谔泊松方程组初边值问题： i ψ t = − 1 2 ψ x x + V ( x ) ψ + ϕ ψ + β | ψ | 2 ψ ，     a < x < b ，   0 < t < T ， (2.16) − ϕ x x = | ψ | 2 ， ψ ( a ， t ) = 0 ， ψ ( b ， t ) = 0 ， (2.17) ψ ( x ， 0 ) = ϕ 0 ( x ) ， 其中 Δ = ∂ x x ， a < x < b 。 a ， b ， β ， T 为常数， V ( x ) ， ϕ 0 ( x ) 为已知函数， ψ ( x ， t ) ， ϕ ( x ， t ) 为未知函数。 先将[a，b]等分成M份，则空间步长为 h x = b − a M ，节点为 x j = a + j h x ， j = 0 ， 1 ， ⋯ ， M ；再将[0，T]等分成N份，则时间步长为 τ = T L ，节点为 t n = n τ ， ( n = 0 ， 1 ， ⋯ ， L ) ，记 ψ j n ， v j ， ϕ j n 分别为 ψ ( x j ， t n ) ， v ( x j ) ， ϕ ( x j ， t n ) 的 近似值。 通过观察会发现：方程(2.16)类似于非线性薛定谔方程，(2.17)是一个泊松方程。对于(2.16)方程，在一个时间步长 [ t n ， t n + 1 ] 上，我们利用时间分裂法将该方程分两步求解： 先求解非线性部分 i ψ t = V ( x ) ψ + β | ψ | 2 ψ + ϕ ψ 。可巧妙地利用共轭与积分性质：等式两边同时乘ψ的共轭 ψ ¯ ，得： i ψ t ψ ¯ = V ( x ) | ψ ( x ， t ) | 2 + β | ψ ( x ， t ) | 4 + ϕ | ψ ( x ， t ) | 2 ，再对它两边同时取共轭，得： − i ψ ¯ t ψ = V ( x ) | ψ ( x ， t ) | 2 + β | ψ ( x ， t ) | 4 + ϕ | ψ ( x ， t ) | 2 ， (2.18) 注意到ϕ是一个实值函数，将以上两式相减得： i ( ψ ψ ¯ t + ψ ¯ ψ t ) = 0 ，也即 ( | ψ | 2 ) t = 0 。我们可以得到 | ψ ( x ， t ) | 2 = | ψ ( x ， t n ) | 2 ( t n ≤ t ≤ t n + 1 ) 。再从泊松方程 − Δ ϕ = | ψ | 2 可知 ϕ ( x ， t ) = ϕ ( x ， t n ) ( t n ≤ t ≤ t n + 1 ) 。因此，非 线性部分方程的求解变为： i ψ t ( x ， t ) = V ( x ) ψ ( x ， t ) + β | ψ ( x ， t n ) | 2 ψ ( x ， t ) + ϕ ( x ， t n ) ψ ( x ， t ) ， (2.19) i ψ t ψ = V ( x ) + β | ψ ( x ， t n ) | 2 + ϕ ( x ， t n ) ， (2.20) ψ ( x ， t n + 1 ) = ψ ( x ， t n ) e − i τ ( V ( x ) + β | ψ ( x ， t n ) | 2 + ϕ ( x ， t n ) ) ， (2.21) 记 ψ ( x ， t * ) = ψ ( x ， t n + 1 ) ， ψ ( x ， t * ) 作为时间分裂法的中间变量，但在方程(2.21)中，仍有未知量 ϕ ( x ， t n ) 。由已知条件 − Δ ϕ = | ψ | 2 ，即 − ϕ x x ( x j ， t n ) = f j ，其中记 f j = | ψ ( x j ， t n ) | 2 。可先利用四阶紧致差分格式离散一维泊松方程 − Δ ϕ = | ψ | 2 ，然后对离散后的方程组做Sine变换得 − ϕ ^ x x = f ^ j (详细过程见 [ 25 ] )。该式子右边 f ^ j 是由f j 做Sine变换得到；同时由基于Sine变换的四阶紧致差分格式，得到关系式： ϕ ^ j x x = − ϕ ^ j ( 24 s i n 2 ( j π 2 M ) h x 2 ) ( c o s ( j π M ) + 5 ) − 1 ， − ϕ ^ j x x = f ^ j ， ϕ ^ j = f ^ j ( 24 s i n 2 ( j π 2 M ) h x 2 ) − 1 ( c o s ( j π M ) + 5 ) ， (2.22) 其中 1 ≤ j ≤ M − 1 ，这样就可以通过式子(2.22)求出 ϕ ^ j 。再利用一次Sine变换这样就求出 ϕ j n 的值，将其带入到方程(2.21)，就可以求出中间变量 ψ ( x ， t * ) 。 再考虑线性部分： i ψ t = − 1 2 Δ ψ 的求解。此时以 ψ j * 做为初始条件，对于该方程时间方向上采用 Crank-Nicolson公式离散： i ψ j n + 1 − ψ j * τ = − 1 4 ( ( ψ j * ) x x + ( ψ j n + 1 ) x x ) ， ( 1 − i τ 4 Δ ) ψ j n + 1 = ( 1 + i τ 4 Δ ) ψ j * ， ψ j n + 1 − i τ 4 ( ψ j n + 1 ) x x = ψ j * + i τ 4 ( ψ j * ) x x ， (2.23) 对上述方程，空间上采用四阶紧致差分格式来离散。由于等式右边 ψ j * 已知，对上述离散后的新系统做Sine逆变换得 ψ ^ j * 。再结合关系式： ( ψ ^ j * ) x x = − ψ ^ j * 24 s i n 2 ( j π 2 M ) h x 2 ( c o s ( j π M ) + 5 ) ， (2.24) 得 ( ψ ^ j * ) x x 。再做Sine变换就得 ( ψ j * ) x x 。这样方程(2.23)的右边函数值全部已知，记 g j = ψ j * + i τ 4 ( ψ j * ) x x ，对(2.23)两边同时做Sine变换 ψ ^ j n + 1 − i τ 4 ( ψ ^ j n + 1 ) x x = g ^ j ，其中 g ^ j 是 g j 经过一维的Sine逆变换得到的。对方程 (2.23)左边，我们利用基于Sine变换的四阶紧致差分格式的关系式： ( ψ ^ j n + 1 ) x x = − ψ ^ j n + 1 24 s i n 2 ( j π 2 M ) h x 2 ( c o s ( j π M ) + 5 ) (2.25) 得到 ψ ^ j n + 1 = g ^ j 1 + i τ 4 24 s i n 2 ( j π 2 M ) h x 2 ( c o s ( j π M ) + 5 ) ， (2.26) 这样 ψ ^ j n + 1 可以被求出，利用一次Sine变换，就可求出 ψ j n + 1 。在时间方向上就形成了一次完整的迭代过程。体算法可以总结如下： 1) 输入a，b，T，M，L，β，以及 ϕ 0 ( x ) ； 2) 计算 x j = a + j h x ， j = 0 ， 1 ， ⋯ ， M ， t n = n τ ， ψ 0 n = ψ M n = 0 ， n = 0 ， 1 ， ⋯ ， L 。从 n = 0 出发； 3) 计算 f j = | ψ j n | 2 ，通过Sine逆变换得 f ^ j ，利用 ϕ ^ j n = f ^ j ( 24 s i n 2 ( j π 2 M ) h x 2 ) − 1 ( c o s ( j π M ) + 5 ) ，再对 ϕ ^ j n 做Sine 变换得 ϕ j n ； 4) 由式子 ψ j * = ψ j n e − i τ ( V ( x j ) + β | ψ ( x j ， t n ) | 2 + ϕ j n ) ，计算出 ψ j * ( j = 0 ， 1 ， ⋯ ， M )； 5) 通过Sine逆变换求出 ψ ^ j * ，再利用关系式(2.24)，求出 ( ψ ^ j * ) x x 。利用Sine变换求出 ψ j * x x ，再从 g j 的Sine逆变换求出 g ^ j ； 6) 由 ψ ^ j n + 1 = g ^ j 1 + i τ 4 24 s i n 2 ( j π 2 M ) h x 2 ( c o s ( j π M ) + 5 ) 得到 ψ ^ j n + 1 ，再对其做一次Sine变换就可得到 ψ j n + 1 。再令 n = n + 1 ，重复3~6直到 n = L 为止。 2.2. 二维非线性薛定谔泊松方程组的求解方法 考虑二维零边界的非线性薛定谔泊松方程组的初边值问题： i ψ t = − 1 2 Δ ψ + V ψ + β | ψ | 2 ψ + ϕ ( x ， y ， t ) ψ ，   a < x < b ，   c < y < d ，   t > 0 ， (2.27) − Δ ϕ ( x ， y ， t ) = | ψ | 2 ， (2.28) ψ ( a ， y ， t ) = 0 ; ψ ( b ， y ， t ) = 0 ， ψ ( x ， c ， t ) = 0 ; ψ ( x ， d ， t ) = 0 ， ψ ( x ， y ， 0 ) = ϕ 0 ( x ， y ) ， 其中 Δ = ∂ x x + ∂ y y ， a < x < b ， c < y < d ， a ， b ， c ， d ， β 均为常数， ϕ 0 ( x ， y ) ， V = V ( x ， y ) 均是已 知函数，而 ψ ， ϕ 是未知函数。 首先，将区域 [ a ， b ] 等分成M份，步长为 h x = b − a M ，节点为 x j = a + j h x ， j = 0 ， 1 ， ⋯ ， M ；将区域 [ c ， d ] 等分成N份，步长为 h y = d − c N ，节点为 y k = c + k h y ， k = 0 ， 1 ， ⋯ ， N ；将区域 [ 0， T ] 等分成L份，步长为 τ = T L ，节点为 t n = n τ ， n = 0 ， 1 ， ⋯ ， L ；我们记 ψ j k n ， ϕ j k n ， V j k 分别为 ψ ( x j ， y k ， t n ) ， ϕ ( x j ， y k ， t n ) ， V ( x j ， y k ) 的近似值。 在下面的计算过程中，我们需要定义关于 u ^ k l 的离散二维Sine变换以及关于 u i j 的离散二维Sine逆变换，它们的形式分别如下 u i j = ∑ k = 1 M − 1   ∑ l = 1 N − 1   u ^ k l sin ( i k π M ) sin ( j l π N ) ，   1 ≤ i ≤ M − 1 ，   1 ≤ j ≤ N − 1 ， (2.29) u ^ k l = 2 M 2 N ∑ i = 1 M − 1   ∑ j = 1 N − 1   u i j sin ( i k π M ) sin ( j l π N ) ，   1 ≤ k ≤ M − 1 ，   1 ≤ l ≤ N − 1. (2.30) 类似于一维的求解方法，在一个时间步长 [ t n ， t n + 1 ] 上，假设 ψ ( x j ， y k ， t n ) 已知。采用时间分裂法，先求解方程(2.27)的非线性部分： i ψ t = V + β | ψ | 2 ψ + ϕ ( x ， y ， t ) ψ ，利用共轭变换与定积分性质得： ψ ( x ， y ， t * ) = ψ ( x ， y ， t n ) e − i τ ( V ( x ， y ) + β | ψ ( x ， y ， t n ) | 2 + ϕ ( x ， y ， t n ) ) ， (2.31) ψ ( x ， y ， t * ) 作为时间分裂法的中间变量，即为第二部分的初始值。但是，等式右边仍然有未知量 ϕ ( x ， y ， t n ) 。为了求解它，我们要利用方程 − ( ϕ j k n ) x x − ( ϕ j k n ) y y = | ψ j k n | 2 ，记 f j k = | ψ j k n | 2 。对于上式做二维的Sine变换得： − ( ψ ^ j k n ) x x − ( ψ ^ j k n ) y y = f ^ j k ，观察发现：等式右边可由已知函数 f j k 做二维的Sine逆变换求得；等式 左边出现了二阶导，利用关系式： ( ϕ ^ j k n ) x x = − ϕ ^ j k n 24 s i n 2 ( j π 2 M ) h x 2 ( c o s ( j π M ) + 5 ) ，1 ≤ j ≤ M − 1， (2.32) ( ϕ ^ j k n ) y y = − ϕ ^ j k n 24 s i n 2 ( k π 2 N ) h y 2 ( c o s ( k π N ) + 5 ) ，1 ≤ k ≤ N − 1， (2.33) 将上述两个关系式带入到方程 − ( ϕ ^ j k n ) x x − ( ϕ ^ j k n ) y y = f ^ j k ，得 ϕ ^ j k n = f ^ j k 24 s i n 2 ( j π 2 M ) h x 2 ( c o s ( j π M ) + 5 ) + 24 s i n 2 ( k π 2 N ) h y 2 ( c o s ( k π N ) + 5 ) . (2.34) 这样 ϕ ^ j k n 就可求出，再利用一次二维的Sine变换就得到 ϕ j k n 。然后将其带入到方程(2.31)中，等式左边的中间变量 ψ j k * 就可以表示出来，进而可以作为第二部分的初始值。 考虑线性部分： i ψ t = − 1 2 Δ ψ ，对于此方程，我们在时间方向上采用crank-nicolson法，空间上采用四 阶紧致差分格式来离散，具体如下： i ψ j k n + 1 − ψ j k * τ = − 1 4 ( Δ ( ψ j k * ) + Δ ( ψ j k n + 1 ) ) ( 1 − i τ 4 Δ ) ψ j k n + 1 = ( 1 + i τ 4 Δ ) ψ j k * ψ j k n + 1 − i τ 4 Δ ( ψ j k n + 1 ) = ψ j k * + i τ 4 Δ ( ψ j k * ) ψ j k n + 1 − i τ 4 ( ( ψ j k n + 1 ) x x + ( ψ j k n + 1 ) y y ) = ψ j k * + i τ 4 ( ( ψ j k * ) x x + ( ψ j k * ) y y ) ， (2.35) 对于(2.35)，我们同时对等式两边做Sine变换得到： ψ ^ j k n + 1 − i τ 4 ( ( ψ ^ j k n + 1 ) x x + ( ψ ^ j k n + 1 ) y y ) = ψ ^ j k * + i τ 4 ( ( ψ ^ j k * ) x x + ( ψ ^ j k * ) y y ) ， (2.36) 等式右边的 ψ ^ j k * ，可以由 ψ j k * 做Sine逆变换得到。由于有关系式： ( ψ ^ j k * ) x x = ψ ^ j k * 12 ( h x ) 2 c o s ( j π M ) − 1 c o s ( j π M ) + 5 ， (2.37) ( ψ ^ j k * ) y y = ψ ^ j k * 12 ( h y ) 2 c o s ( k π N ) − 1 c o s ( k π N ) + 5 ， (2.38) 然后分别对 ( ψ ^ j k * ) x x ， ( ψ ^ j k * ) y y 进行Sine变换，这样就可以得到 ( ψ j k * ) x x ， ( ψ j k * ) y y 。所以等式(2.36)右边就可以当做已知，等式左边也是利用Sine逆变换及二维的Sine变换关系式，将其换算成只含有 ψ ^ j k n + 1 。具体如下： ( ψ ^ j k n + 1 ) x x = ψ ^ j k n + 1 12 ( h x ) 2 c o s ( j π M ) − 1 c o s ( j π M ) + 5 ， (2.39) ( ψ ^ j k n + 1 ) y y = ψ ^ j k n + 1 12 ( h y ) 2 c o s ( k π N ) − 1 c o s ( k π N ) + 5 . (2.40) 将上两式带入到等式(2.36)的左边，得到的就是一个只含有 ψ ^ j k n + 1 的表达式，等式(2.36)的右边记为 g ^ j k 。 综合等式(2.36)、等式(2.39)、等式(2.40)可得关系式： ψ ^ j k n + 1 = g ^ j k 1 − i τ 4 ( 12 ( c o s ( j π M ) − 1 ) h x 2 ( c o s ( j π M ) + 5 ) + 12 ( c o s ( k π N ) − 1 ) h y 2 ( c o s ( k π N ) + 5 ) ) . (2.41) 由于等式右边均可知，所以就可求得 ψ ^ j k n + 1 ，在利用一次Sine变换得 ψ j k n + 1 。这样时间方向上 就形成了完整迭代，然后利用MATLAB程序进行编写，称为计算法则2： 1) 输入a，b，c，d，T，M，N，L，β，以及 ϕ 0 ( x ， y ) ， h x ， h y ， τ ； 2) 计算 x j = a + j h x ， j = 0 ， 1 ， ⋯ ， M ， y k = c + k h y ， k = 0 ， 1 ， ⋯ ， N ， t n = n τ ， ψ 0 k n = ψ M k n = 0 ， ψ j 0 n = ψ j N n = 0 ， n = 0 ， 1 ， ⋯ ， L 。 从 n = 0 出发； 3) 计算 f j k = | ψ j k n | 2 ，通过二维的Sine逆变换得 f ^ j k ，利用关系式： ϕ ^ j k n = f ^ j k − 12 ( c o s ( j π M ) − 1 ) h x 2 ( c o s ( j π M ) + 5 ) − 12 ( c o s ( k π N ) − 1 ) h y 2 ( c o s ( k π N ) + 5 ) ， (2.42) 再对 ϕ ^ j k n 作二维的Sine变换得 ϕ j k n 4) 由 ψ j k * = ψ j k n e − i τ ( V ( x j ， y k ) + β | ψ ( x j ， y k ， t n ) | 2 + ϕ j k n ) ，计算出 ψ j k * ； 5) 通过二维的Sine逆变换求出 ψ ^ j k * ，再利用关系式(2.39)，(2.40)，求出 ( ψ ^ j k * ) x x ， ( ψ ^ j k ) y y ； 6) 最后由关系式(2.41)，求出 ψ ^ j k n + 1 ，对其作二维的Sine变换得 ψ j k n + 1 。再令 n = n + 1 ，重复3~6直到 n = L 为止。 2.3. 三维非线性薛定谔泊松方程组的求解方法 考虑三维薛定谔泊松方程组： − i ψ t = − 1 2 Δ ψ + V ψ + β | ψ | 2 + ϕ ψ ， (2.43) − Δ ϕ ( x ， y ， z ， t ) = | ψ | 2 ， (2.44) ψ ( a ， y ， z ， t ) = ψ ( b ， y ， z ， t ) = 0 ， ψ ( x ， c ， z ， t ) = ψ ( x ， d ， z ， t ) = 0 ， ψ ( x ， y ， e ， t ) = ψ ( x ， y ， f ， t ) = 0 ， ψ ( x ， y ， z ， 0 ) = ϕ 0 ( x ， y ， z ) ， 其中 Δ = ∂ x x + ∂ y y + ∂ z z ， a < x < b ， c < y < d ， e < z < f ， t > 0 ，a，b，c，d，e，f，T，β均是给定常数， ϕ 0 ， v = v ( x ， y ， z ) 已知函数，ϕ，ψ为未知函数。 首先，我们将区域[a， b]等分成M份，步长为 h x = b − a M ；将区域[c， d]等分成N份，步长为 h y = d − c N ；将区域[e， f]等分成P份，步长为 h z = f − e P ；将区域[0， T]等分成L份，步长为 τ = T N ；记 ψ j k l n ， ϕ j k l n 为 ψ ( x j ， y k ， z l ， t n ) ， ϕ ( x j ， y k ， z l ， t n ) 的近似值，其中 x j = a + j h x ， y k = c + k h y ， z l = e + l h l ， t n = n τ ， 0 ≤ j ≤ M ， 0 ≤ k ≤ N ， 0 ≤ l ≤ P ， 0 ≤ n ≤ L 。 在下面的计算过程中，我们需要定义关于 u ^ k l q 的离散三维Sine变换以及关于 u i j p 的离散三维Sine逆变换，它们的形式分别如下 u i j p = ∑ k = 1 M − 1   ∑ l = 1 N − 1   ∑ q = 1 P − 1   u ^ k l q s i n ( i k π M ) s i n ( j l π N ) s i n ( q p π P ) ， (2.45) u ^ k l q = 2 M 2 N 2 P ∑ i = 1 M − 1   ∑ j = 1 N − 1   ∑ p = 1 P − 1   u i j p sin ( i k π M ) sin ( j l π N ) sin ( q p π P ) ， (2.46) 下面讨论具体的求解过程。在时间方向上采用时间分裂法，在空间方向上采用基于快速Sine变换的四阶紧致差分格式。首先考虑在一个时间步长 [ t n ， t n + 1 ] 上，假设 ψ j k l n 已知，然后将方程(2.43)分为两步求解： 1) 考虑非线性部分： i ψ t = V ψ + β | ψ | 2 ψ + ϕ ψ ，利用共轭变换与积分性质得： ψ ( x ， y ， z ， t * ) = ψ ( x ， y ， z ， t n ) e − i τ ( V ( x ， y ， z ) + β | ψ ( x ， y ， z ， t n ) | 2 + ϕ ( x ， y ， z ， t n ) ) . (2.47) 由于 ϕ ( x ， y ， z ， t n ) 是未知量，所以等式右边无法直接求出。考虑方程(2.44)类似于泊松方程， 我们采用基于Sine变换的四阶紧致差分格式来求解： − ϕ x x − ϕ y y − ϕ z z = | ψ j k l n | 2 ， − ϕ ^ x x − ϕ ^ y y − ϕ ^ z z = | ψ ^ j k l n | 2 ， (2.48) 记 f ^ j l k n = | ϕ j k l n | 2 ，由基于Sine变换的四阶紧差分格式有如下关系式： ( ψ ^ j k l n ) x x = ψ ^ j l k n 12 ( c o s ( j π M ) − 1 ) h x 2 ( c o s ( j π M ) + 5 ) ， ( ψ ^ j k l n ) y y = ψ ^ j l k n 12 ( c o s ( k π N ) − 1 ) h y 2 ( c o s ( k π N ) + 5 ) ， ( ψ ^ j k l n ) z z = ψ ^ j l k n 12 ( c o s ( l π P ) − 1 ) h z 2 ( c o s ( l π P ) + 5 ) . (2.49) 将上面三个等式带入到(2.48)，得： ϕ ^ j k l n = f ^ j k l n − ( 12 ( c o s ( j π M ) − 1 ) h x 2 ( c o s ( j π M ) + 5 ) + 12 ( c o s ( k π N ) − 1 ) h y 2 ( c o s ( k π N ) + 5 ) + 12 ( c o s ( l π P ) − 1 ) h z 2 ( c o s ( l π P ) + 5 ) ) . (2.50) 再利用一次Sine变换求出 ϕ j k l n ，这样对于时间分裂法的中间变量 ϕ k j l * 就可以直接被表示出来。 2) 考虑线性部分方程的求解： i ψ t = − 1 2 Δ ψ ，其中 ψ j l k * 作为起始值，在时间方向上，采用crank-nicolson 来离散，在空间方向上采用基于Sine变换的四阶紧致差分格式来离散，具体如下： i ψ j k l n + 1 − ψ j k l * τ = − 1 4 ( Δ ψ j k l n + 1 + Δ ψ j k l * ) ， ψ j k l n + 1 − i τ 4 Δ ( ψ j k l n + 1 ) = ψ j k l * + i τ 4 Δ ( ψ j k l * ) ， 对上式两边同时作Sine变换得： ψ ^ j k l n + 1 − i τ 4 [ ( ψ ^ j k l n + 1 ) x x + ( ψ ^ j k l n + 1 ) y y + ( ψ ^ j k l n + 1 ) z z ] = g ^ j k l ， (2.51) 这里 g ^ j k l = ψ ^ j k l * + i τ 4 [ ( ψ ^ j k l * ) x x + ( ψ ^ j k l * ) y y + ( ψ ^ j k l * ) z z ] . (2.52) 对于等式(2.51)的右边，只要对 ψ j k l * 做Sine逆变换得 ψ ^ j k l * ，再利用关系式： ( ψ ^ j k l * ) x x = ψ ^ j k l * 12 ( c o s ( j π M ) − 1 ) h x 2 ( c o s ( j π M ) + 5 ) ， ( ψ ^ j k l * ) y y = ψ ^ j k l * 12 ( c o s ( k π N ) − 1 ) h y 2 ( c o s ( k π N ) + 5 ) ， ( ψ ^ j k l * ) z z = ψ ^ j k l * 12 ( c o s ( l π P ) − 1 ) h z 2 ( c o s ( l π P ) + 5 ) . 就可以得到等式(2.51)右边的函数值。而对于等式(2.51)的左边，也利用关系式： ( ψ ^ j k l n + 1 ) x x = ψ ^ j k l n + 1 12 ( c o s ( j π M ) − 1 ) h x 2 ( c o s ( j π M ) + 5 ) ， ( ψ ^ j k l n + 1 ) y y = ψ ^ j k l n + 1 12 ( c o s ( k π N ) − 1 ) h y 2 ( c o s ( k π N ) + 5 ) ， ( ψ ^ j k l n + 1 ) z z = ψ ^ j k l n + 1 12 ( c o s ( l π P ) − 1 ) h z 2 ( c o s ( l π P ) + 5 ) . 等式(2.51)就可化简为： ψ ^ j k l n + 1 = g ^ j k l 1 − i τ 4 ( 12 ( cos ( j π M ) − 1 ) h x 2 ( c o s ( j π M ) + 5 ) + 12 ( cos ( k π N ) − 1 ) h y 2 ( c o s ( k π N ) + 5 ) + 12 ( cos ( l π P ) − 1 ) h z 2 ( c o s ( l π P ) + 5 ) ) ， (2.53) 因此，形成了一个时间步长 [ t n ， t n + 1 ] 上的一个完整迭代，具体实现步骤如下： 1) 输入a，b，c，d，M，N，P，L，e，f，T，β，以及 ϕ 0 ( x ， y ， z ) ，h x ，h y ，h z ，τ； 2) 计算 x j = a + j h x ， j = 0 ， 1 ， ⋯ ， M ， y k = c + k h y ， k = 0 ， 1 ， ⋯ ， N ， z l = e + l h z ， l = 0 ， 1 ， ⋯ ， P ， t n = n τ ， ψ 0 k l n = ψ M k l n = 0 ， ψ j 0 l n = ψ j N l n = 0 ， ψ j k 0 n = ψ j k P n = 0 。从 n = 0 出发； 3) 计算 f j k l = | ψ j k l n | 2 ，通过三维Sine逆变换得 f ^ j k l ，利用关系式(2.50)求出 ϕ ^ j k l n ，再做三维Sine变换得 ϕ j k l n ； 4) 由 ψ j k l * = ψ j k l n e − i τ ( V ( x j ， y k ， z l ) + β | ψ ( x j ， y k ， z l ， t n ) | 2 + ϕ j k l n ) ，计算出 ψ j k l * ； 5) 通过三维Sine逆变换求出 ψ ^ j k l * ，利用 ψ ^ j k l * 与 ( ψ ^ j k l * ) x x ， ( ψ ^ j k l * ) x x ， ( ψ ^ j k l * ) x x 的关系，求出(2.52)中的 g ^ j k l ； 6) 利用方程(2.53)得 ψ ^ j k l n + 1 ，对其做三维Sine变换得 ψ j k l n + 1 。再令 n = n + 1 ，重复3~6直到 n = L 为止。