Fortran Coder
标题:
求助:蛙跳算法计算复数类型的方程出现了发散
[打印本页]
作者:
石子
时间:
2021-5-2 22:50
标题:
求助:蛙跳算法计算复数类型的方程出现了发散
本帖最后由 石子 于 2021-5-2 22:55 编辑
用蛙跳算法求解如下方程:
[latex]i 2 \frac{\partial \phi}{\partial t}= \phi [/latex]
[latex]\phi=R+i I[/latex]
其中,R和I分别是φ的实部和虚部,将方程分成实部和虚部分别求解,采用蛙跳算法,实部和虚部分别在不同是时间节点计算,然后进行同步。通过推导可以发现(R**2+I**2)这个量(也就是模平方)是不随时间变化的,可是单独看R或者I的方程,R和I都会随着时间步的推进而增长,具体如下:
[latex]\frac{\partial R}{\partial t}=-0.5 I[/latex]
[latex]\frac{\partial I}{\partial t}=0.5 R[/latex](这里的时间步长归一化过了,Delta t最小取1,也就意味着R和I都是放大的),且是同时增长,进而会导致模平方的增长。前面提到了,模平方这个量应该是守恒的,因此就出现了发散。请问这种问题应该怎么解决呢,是不是我的求解方法有问题或者是存在其他问题?
作者:
风平老涡
时间:
2021-5-4 21:11
本帖最后由 风平老涡 于 2021-5-5 02:49 编辑
这是个数学问题。因为单独看R或者I的方程意为着R和I是独立的,相互间没有限制。而推导结果表明这两个变量间是有联系的。可以设定[latex]\phi =r(t)e^{i\theta t}[/latex]进行推导。
欢迎光临 Fortran Coder (http://bbs.fcode.cn/)
Powered by Discuz! X3.2