声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4310|回复: 9

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

[复制链接]
发表于 2012-8-9 11:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

使用道具 举报

发表于 2012-9-3 14:31 | 显示全部楼层
可能方法不稳定
发表于 2012-9-6 09:32 | 显示全部楼层
方程中是否存在开根号之类的项?
 楼主| 发表于 2012-9-7 09:13 | 显示全部楼层
回复 3 # 犟牛 的帖子

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

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

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

评分

1

查看全部评分

 楼主| 发表于 2012-9-7 19:01 | 显示全部楼层
回复 5 # 犟牛 的帖子

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

这种情况我也出现过,不过一般情况是模型不够合理造成的,通过修改模型解决,我个人认为你先查查模型问题,以及是否输入错误,也希望你反馈一下你的解决方法,应该很多人都遇到过。
 楼主| 发表于 2012-9-8 09:04 | 显示全部楼层
回复 7 # hsfy919 的帖子

学长,你好。
如果采用同样的初值,循环计算不同参数下的积分数值,结果没有问题。我想目前出现的状况可能是和打靶法的迭代过程中某些步骤的设置有关,随后我会向一些学长和老师请教。如果问题解决了,第一时间来和大家分享。
发表于 2012-9-11 15:30 | 显示全部楼层
先找到复数是什么地方,什么情况下出的吧
 楼主| 发表于 2012-9-12 08:54 | 显示全部楼层
回复 9 # 犟牛 的帖子

不太清楚你的意思。给了一组比较特殊的初值后(由迭代得到),再次由ode45计算就出现复数了。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-3 10:49 , Processed in 0.083566 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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