无水1324 发表于 2007-12-9 13:11

数值计算发散问题分析的一个实例

在用ode求解的时候经常遇到一些问题如题,计算着就发散了,根本得不到稳定的解。
本人一直认为主要有两种原因:
1、系统的参数有问题;
2、算法的问题;
3、二者之间的相互作用引起的;
4、我还不知道......

现在给出一个很简单的实例:d2x/dt2+(dx/dt)^2+x/2=0
做数值分析得到的图,如图1-3所示。
选用的算法为ode45,初值为时得到的图如图1所示

[ 本帖最后由 无水1324 于 2007-12-16 21:50 编辑 ]

无水1324 发表于 2007-12-9 13:12

图2

无水1324 发表于 2007-12-9 13:16

图3

无水1324 发表于 2007-12-9 13:20

回复 #3 无水1324 的帖子

三楼图为全局的一个相图,从以上图我们可以得到,
初值对系统解有很大的影响,初值没有选对的时候可能得到的是一个发散的解,选对了可能是稳定的周期解。至于怎么选取,最好还是解析分析系统的相图特征,如图3中,然后选择适合的初值,即可得到需要的解!

octopussheng 发表于 2007-12-9 20:12

用maple做全局相图的时候,取值区域不同对相图的影响也是很大的!
无水这个经验值得借鉴!

无水1324 发表于 2007-12-9 21:30

回复 #5 octopussheng 的帖子

取值区域不同,只能说明maple计算的精度有问题,画的图确实也存在很多差异,特别是在另外一个帖子中用中心流形做分岔图时,有深刻的体会,matlab中是相交的曲线,而在maple中画图确没有相交。

octopussheng 发表于 2007-12-10 08:15

不完全吧,有些时候参数或变量取值对相图结构是否收敛也有一定的影响的!呵呵!

无水1324 发表于 2007-12-10 09:38

回复 #7 octopussheng 的帖子

参数的变化将使相图变化,这样的会初值取得不对就不会收敛的。仔细想想上面就会发现它们之间是有联系的

octopussheng 发表于 2007-12-10 11:00

回复 #8 无水1324 的帖子

对,联系是肯定存在的!

shenyongjun 发表于 2007-12-16 20:00

无水的这个方程是线性的吧?怎么会有初值敏感性?

无水1324 发表于 2007-12-16 21:50

回复 #10 shenyongjun 的帖子

不好意思方程写错了
阻尼项是非线性的。

fineshang 发表于 2007-12-17 14:43

请问如何选取初值呢?

发散的主要原因是初值没选好么?那请问如何选取收敛的初值呢?谢谢!!

fineshang 发表于 2007-12-17 14:47

我的问题很类似图2 ,发散的!!

按照解析,应该是初值没选好,可是怎么根据相图来确定初值呢?我的方程是10个自由度的!请指教啊!!

无水1324 发表于 2007-12-17 19:39

回复 #13 fineshang 的帖子

10个自由度的旧很难确定这个初值了,一般只能用试算的方法。

fineshang 发表于 2007-12-17 21:55

请无水1324留个联系方式好么?!

我觉得您这方面比较懂,所以想多多交流,请留个QQ好么?!我的QQ12700731
页: [1] 2
查看完整版本: 数值计算发散问题分析的一个实例