无水1324 发表于 2007-12-4 21:09

Runge-kutta法求解问题讨论!

如题,Rungge-kutta求解微分方程比较常见,也比较适用。但是遇到一些所谓的刚性方程的时候就会出现一些奇怪的现象。

最近我在用ode45求解以微分方程时计算到20s左右,解突然停止且变为NaN了?
这个我该怎么在源头上找到原因,是什么参数导致了这个结果?
用ode23时可以消除这种现象!

jinqiankun 发表于 2007-12-4 22:08

回复 #1 无水1324 的帖子

我用ode45的时候 开始也是老出现NAN
后来不知怎么回事,不是出现超大的数 例如2.5e+105
就是出现超小的数例如:1.02e-148
这个可是转子的振幅啊~~~吓死了

无水1324 发表于 2007-12-5 10:16

回复 #2 jinqiankun 的帖子

对我的也是
但是就是在某一个点还是0.06的突然在下一个计算点就变成NaN了

jinqiankun 发表于 2007-12-5 10:53

回复 #3 无水1324 的帖子

rk算法会不会出现所谓不收敛的情况?
如果出现,在什么情况下出现呢?

octopussheng 发表于 2007-12-5 10:54

还是参数导致的,我以前也遇到过,有激励的因素在里面!

但是从根本上说,系统参数影响是最大 的! 呵呵!

这个帖子开的好,继续!

咕噜噜 发表于 2007-12-5 11:35

主要还是系统参数问题吧,我认为刚性方程主要就是系统参数造成的,因此选用计算方法时需要慎重

jinqiankun 发表于 2007-12-5 12:36

回复 #6 咕噜噜 的帖子

当我 的 Ω=650时出现:Warning: Failure at t=1.710114e+000.Unable to meet integration tolerances without reducing the step size below the smallest value allowed (6.075546e-015) at time t.
(Type "warning off MATLAB:ode45:IntegrationTolNotMet" to suppress this warning.)
> In D:\MATLAB6p5\toolbox\matlab\funfun\ode45.m at line 335
程序在T=1.710114e+000 处停止
当我改为Ω=6500时没有出现warnning 这是什么原因呢?
如果我想要Ω=650时的数据怎么办?
还有就是 转速=6500时,转子基础松动的 庞加莱截面怎么去?

无水1324 发表于 2007-12-5 12:43

回复 #6 咕噜噜 的帖子

oct、咕噜是参数引起的有可能,但是为什么是在哪个时刻突然没有了,而不在其他的地方。这个应该有一个根本的原因吧?

无水1324 发表于 2007-12-5 12:44

回复 #7 jinqiankun 的帖子

我的情况跟你的还有一定的差别,我的没有偷任何提示!

五味瓶 发表于 2009-10-19 14:33

回复 7楼 jinqiankun 的帖子

我现在遇到的问题和你的一样,不知道你当时是怎么解决的,我搞了好几天了,不知道到底咋回事

htwei 发表于 2009-10-21 15:45

ode4 计算非光滑的系统时 混沌跟 步长的选择也有关系。。。不知道lz遇到过这种情况没有

octopussheng 发表于 2009-10-21 21:55

回复 11楼 htwei 的帖子

你说的是定步长算法?

能否举个例子说明一下?
页: [1]
查看完整版本: Runge-kutta法求解问题讨论!