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