nymy 发表于 2007-11-28 08:39

请教多自由一阶非线性微分方程组数值解法?

我现在的方程是有14个变量的一阶非线性微分方程组,而且这个系统是非稳定的chaotic系统.在用数值方法求解的时候,我发现6变量的同样的系统用ode45,ode23等都没有什么问题,差别也不大.但是对于14个变量的系统,ode45和ode23对于实数变量经常出现虚数的解,而ode15s和ode23s时间很长,结果也是一样.

所以我想针对我这个14个变量非线性系统是不是不能简单的利用ode函数求解?

nymy 发表于 2007-11-28 09:58

我所有的系数都是实数!

nymy 发表于 2007-11-28 09:59

经常提示

警告: X、Y引数の複素数部分を無視します

无水1324 发表于 2007-11-28 10:00

回复 #1 nymy 的帖子

你这种问题确实存在,建议一下几方面:
1、检查系统的参数;
2、将ode的求解误差改大点试试;
3、适当改变初值(这个看运气);
2、考虑用newmark方法,或者直接用定步长的试一下;

nymy 发表于 2007-11-28 10:08

我发现是系统参数的问题,

对于小的实数系数可以得到解.

但是当系数实数增大时候,就出现复数的解了.

不知道该怎么解决?

无水1324 发表于 2007-11-28 10:13

回复 #5 nymy 的帖子

是参数的问题,那可能引起系统为刚性方程了,你还是换一下其他的方法吧,因为求解的时候不收敛了,所以运行就一直进行下去,

nymy 发表于 2007-11-28 10:14

原帖由 无水1324 于 2007-11-28 10:00 发表 http://www.chinavib.com/forum/images/common/back.gif
你这种问题确实存在,建议一下几方面:
1、检查系统的参数;
2、将ode的求解误差改大点试试;
3、适当改变初值(这个看运气);
2、考虑用newmark方法,或者直接用定步长的试一下;


1 系统的参数增大的时候就出现复数解, 不知道原因?

2 将ode的求解误差改大. 一般情况可以, 就是把ode45变成ode23, 但是继续增大系统的参数就不行了.

3适当改变初值没有效果

4直接用定步长的,没有效果

5用newmark方法?? 可以直接用matlab解决么?

无水1324 发表于 2007-11-28 10:23

问题1、是不是你的系统参数中引出的复数?

nymy 发表于 2007-11-28 10:36

系统参数中没有引出复数, 只是增大了.

无水1324 发表于 2007-11-28 11:13

哦那就比较奇怪了,一般不会遇到这样的情况,因为ode求解不可能出现复数。
还有你不要用i,j作为变量

咕噜噜 发表于 2007-11-28 13:51

1 系统的参数增大的时候就出现复数解, 不知道原因?
这句话什么意思

nymy 发表于 2007-11-28 14:05

原帖由 咕噜噜 于 2007-11-28 13:51 发表 http://www.chinavib.com/forum/images/common/back.gif
1 系统的参数增大的时候就出现复数解, 不知道原因?
这句话什么意思


因为我想考虑系统的参数对变量的解有什么影响.

所以改变6个变量系统的参数发现,增大参数的数值时候出现复数解.

但是对于我的14个变量系统,一开始都是复数解,即使对于小数值的参数.

nymy 发表于 2007-11-28 14:15

但是我的方程中变量的物理意义应该是实数的,所以应该实数的解才有意义的.

咕噜噜 发表于 2007-11-28 14:21

这么说的话肯定就是你的参数问题了,单自由度、多自由度系统一样的,系统系数为实数解为虚数或者复数都是有可能的,只不过虚数对于系统分析来说有时候没有物理意义,或者说有只是现在人们还不知道应该如何很好得去理解他
这里就需要你在改变参数的时候注意参数的取值范围了啊,并不是说这些系数可以随便取值得

nymy 发表于 2007-11-28 14:33

我不能上传pdf文件?
页: [1] 2 3
查看完整版本: 请教多自由一阶非线性微分方程组数值解法?