Fortran Coder

查看: 6020|回复: 1
打印 上一主题 下一主题

[通用算法] 求助:蛙跳算法计算复数类型的方程出现了发散

[复制链接]

36

帖子

17

主题

0

精华

专家

F 币
410 元
贡献
399 点
跳转到指定楼层
楼主
发表于 2021-5-2 22:50:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 石子 于 2021-5-2 22:55 编辑

用蛙跳算法求解如下方程:
i 2 \frac{\partial \phi}{\partial t}= \phi
\phi=R+i I
其中,R和I分别是φ的实部和虚部,将方程分成实部和虚部分别求解,采用蛙跳算法,实部和虚部分别在不同是时间节点计算,然后进行同步。通过推导可以发现(R**2+I**2)这个量(也就是模平方)是不随时间变化的,可是单独看R或者I的方程,R和I都会随着时间步的推进而增长,具体如下:
\frac{\partial R}{\partial t}=-0.5 I
\frac{\partial I}{\partial t}=0.5 R(这里的时间步长归一化过了,Delta t最小取1,也就意味着R和I都是放大的),且是同时增长,进而会导致模平方的增长。前面提到了,模平方这个量应该是守恒的,因此就出现了发散。请问这种问题应该怎么解决呢,是不是我的求解方法有问题或者是存在其他问题?

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩
欢迎交流

213

帖子

2

主题

0

精华

宗师

F 币
2142 元
贡献
875 点

规矩勋章

沙发
发表于 2021-5-4 21:11:07 | 只看该作者
本帖最后由 风平老涡 于 2021-5-5 02:49 编辑

这是个数学问题。因为单独看R或者I的方程意为着R和I是独立的,相互间没有限制。而推导结果表明这两个变量间是有联系的。可以设定\phi =r(t)e^{i\theta t}进行推导。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-25 17:47

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表