chunshui2003 发表于 2012-8-9 11:51

Runge-Kutta法积分结果出现复数是什么情况造成的

二阶系统运动微分方程,采用Runge-Kutta法求解。当选取了一组迭代后的初值再次进行计算时,结果出现了复数,以前没有遇到过类似的情况。并且积分周期越长,结果越发发散,实数部分越来越大。
补充一点,我的计算是求系统的周期解及判断其稳定性。有的参数可以得到满意的结果,但有的参数就出现了上述情况。这是否意味着在此参数条件下周期解不存在。
请大家帮忙分析一下,谢谢。

dfg25aw 发表于 2012-9-3 14:31

可能方法不稳定

犟牛 发表于 2012-9-6 09:32

方程中是否存在开根号之类的项?

chunshui2003 发表于 2012-9-7 09:13

回复 3 # 犟牛 的帖子

是存在开根号的部分,但是轴心轨迹的幅值必须要开根号啊。以前也没有发现这样的情况,这次是采用打靶法计算周期解的迭代过程中产生的。也不知道是怎么回事。如果有类似经历,希望能给解释一下。

犟牛 发表于 2012-9-7 09:25

chunshui2003 发表于 2012-9-7 09:13 static/image/common/back.gif
回复 3 # 犟牛 的帖子

是存在开根号的部分,但是轴心轨迹的幅值必须要开根号啊。以前也没有发现这样的情况 ...

matlab处理负数开根号的时候就出现了复数
如果使用fortran之类的话,那计算就终止了

这里出现符号说明转子的振动已经超出了轴承间隙,显然是不合理的
某些计算迭代过程中缺失经常会出现这种情况
出现这种情况想收敛很难
记得论坛以前讨论的相关问题
你可以找找看看是否有帮助

chunshui2003 发表于 2012-9-7 19:01

回复 5 # 犟牛 的帖子

转子的振动u=sqrt(x^2+y^2),在给定初值非复数的情况下,它一定是正值。因为研究的是碰摩系统,当u>间隙值delta时,碰摩力才会出现。据我观察,在给定一组初值再次通过RK法计算后就出现了复数,怀疑是不是算法出了问题,但感觉又不应该。
谢谢你的建议和帮助,我在论坛里搜索一下。

hsfy919 发表于 2012-9-7 21:07

回复 6 # chunshui2003 的帖子

这种情况我也出现过,不过一般情况是模型不够合理造成的,通过修改模型解决,我个人认为你先查查模型问题,以及是否输入错误,也希望你反馈一下你的解决方法,应该很多人都遇到过。

chunshui2003 发表于 2012-9-8 09:04

回复 7 # hsfy919 的帖子

学长,你好。
如果采用同样的初值,循环计算不同参数下的积分数值,结果没有问题。我想目前出现的状况可能是和打靶法的迭代过程中某些步骤的设置有关,随后我会向一些学长和老师请教。如果问题解决了,第一时间来和大家分享。

犟牛 发表于 2012-9-11 15:30

先找到复数是什么地方,什么情况下出的吧

chunshui2003 发表于 2012-9-12 08:54

回复 9 # 犟牛 的帖子

不太清楚你的意思。给了一组比较特殊的初值后(由迭代得到),再次由ode45计算就出现复数了。
页: [1]
查看完整版本: Runge-Kutta法积分结果出现复数是什么情况造成的