数值计算发散问题分析的一个实例
在用ode求解的时候经常遇到一些问题如题,计算着就发散了,根本得不到稳定的解。本人一直认为主要有两种原因:
1、系统的参数有问题;
2、算法的问题;
3、二者之间的相互作用引起的;
4、我还不知道......
现在给出一个很简单的实例:d2x/dt2+(dx/dt)^2+x/2=0
做数值分析得到的图,如图1-3所示。
选用的算法为ode45,初值为时得到的图如图1所示
[ 本帖最后由 无水1324 于 2007-12-16 21:50 编辑 ] 图2 图3
回复 #3 无水1324 的帖子
三楼图为全局的一个相图,从以上图我们可以得到,初值对系统解有很大的影响,初值没有选对的时候可能得到的是一个发散的解,选对了可能是稳定的周期解。至于怎么选取,最好还是解析分析系统的相图特征,如图3中,然后选择适合的初值,即可得到需要的解! 用maple做全局相图的时候,取值区域不同对相图的影响也是很大的!
无水这个经验值得借鉴!
回复 #5 octopussheng 的帖子
取值区域不同,只能说明maple计算的精度有问题,画的图确实也存在很多差异,特别是在另外一个帖子中用中心流形做分岔图时,有深刻的体会,matlab中是相交的曲线,而在maple中画图确没有相交。 不完全吧,有些时候参数或变量取值对相图结构是否收敛也有一定的影响的!呵呵!回复 #7 octopussheng 的帖子
参数的变化将使相图变化,这样的会初值取得不对就不会收敛的。仔细想想上面就会发现它们之间是有联系的回复 #8 无水1324 的帖子
对,联系是肯定存在的! 无水的这个方程是线性的吧?怎么会有初值敏感性?回复 #10 shenyongjun 的帖子
不好意思方程写错了阻尼项是非线性的。
请问如何选取初值呢?
发散的主要原因是初值没选好么?那请问如何选取收敛的初值呢?谢谢!!我的问题很类似图2 ,发散的!!
按照解析,应该是初值没选好,可是怎么根据相图来确定初值呢?我的方程是10个自由度的!请指教啊!!回复 #13 fineshang 的帖子
10个自由度的旧很难确定这个初值了,一般只能用试算的方法。请无水1324留个联系方式好么?!
我觉得您这方面比较懂,所以想多多交流,请留个QQ好么?!我的QQ12700731
页:
[1]
2