求教 病态方程的解决方法
在数值迭代解法如龙哥库塔法(龙格-库塔)中若遇到病态方程除了减小步长 还有什么解决方法啊[ 本帖最后由 octopussheng 于 2007-8-8 12:38 编辑 ]
回复 #1 sssssxxxxx921 的帖子
减小步长可能病得更重,最好还是换一种解法 换过了ode45和用VC自己按算法编的GILL方法都不收敛啊能试的参数基本试遍了看了一些资料还说这两种算法对病态方程效果还可以,后一种还更好点 可也不行啊
步长和精度不管取大取小都很快就发散了郁闷啊一个多星期了看着程序实在没有
再改得了 模型也检查了几遍参数也实在没法再改了都改过了无奈。。。
回复 #3 sssssxxxxx921 的帖子
不要失去耐性,我曾经遇到一个跟你一样的情况,调试了一两个月,到最后才发现参数编程的时候出现一些微小的错误导致的回复 #3 sssssxxxxx921 的帖子
把这个事情放一阶段,忘记它,过段时间再来检查回复 #3 sssssxxxxx921 的帖子
你的问题是不是stiff问题,如果是这样那么由于ode45采用的是显式Runge-Kutta,不能求解stiff微分方程,好像Gill方法也是显式4阶Runge-Kutte方法,也不能求解stiff微分方程,只有隐式方法才能求解stiff微分方程,你可以试试matlab带的这4个能求解stiff微分方程的求解器,
ode15s
ode23s
ode23t
ode23tb 我现在也碰到这个问题了,刚开始也是换算法,用ode15s ode23s ode23t ode23tb都试过了,还是不行,看来还是要从参数方面动脑经啊!
回复 #6 mxtfirst 的帖子
在求一个对称模型中我用龙格库塔算法能求解的,可是换了GILL方法就发散了按很多人的说法GILL是龙格库塔算法上发展的一种更适合高精度的算法,对于病态方程也更具适应性,可我现在真有点怀疑了,要知道我被GILL编的程序折磨了一个多星期然后把代码复制到四阶龙格库塔程序中就可以了而且结果也在理想范围之内。
对于现在的动力学系统我想很少用隐式积分的就精度和计算速度来说总是不太理想的
另外对于最终的多自由度模型 那几种算法都试过的一样发散到10的几十次
回复 #4 无水1324 的帖子
这几天不能上网快憋死了谢谢啊那会确实有点失去耐心了
只能放一放了 :victory:
回复 #7 octopussheng 的帖子
我想对于高维的非线性方程在收敛性方面很不好把握,我前两天做了一个对称模型的,在Matlab里ODE45出来的分岔图不是很好,用VC的变步长龙格库塔算法求解后画图,更是不能看,整个分岔图只能说太让人失望了^_^ 现在还没时间调参数,不知道会不会出来一个好的分岔图, 真担心啊 这个问题确实很难难受的,不过只能一点一点调了,希望早日有结果哦! 是啊再有两个月就得弄个阶段性成果出来了 现在还这样真着急啊我做的是双转子动力学系统你做的什么啊
回复 #12 sssssxxxxx921 的帖子
哦,不一样的,我是搞汽车方面的!要不你试试把一些参数进行调节,这些路子应该都是可行的 那个最终的非对称模型我对调参数已经失去信心了,对称模型的那个估计会有可能
不过按现在的进度下个星期才能有精力去调那参数啊呵呵
祝你早日出来希望的结果 呵呵,谢谢你啦!
做非线性的东西还是需要耐心的啊!