请教多自由一阶非线性微分方程组数值解法?
我现在的方程是有14个变量的一阶非线性微分方程组,而且这个系统是非稳定的chaotic系统.在用数值方法求解的时候,我发现6变量的同样的系统用ode45,ode23等都没有什么问题,差别也不大.但是对于14个变量的系统,ode45和ode23对于实数变量经常出现虚数的解,而ode15s和ode23s时间很长,结果也是一样.所以我想针对我这个14个变量非线性系统是不是不能简单的利用ode函数求解? 我所有的系数都是实数! 经常提示
警告: X、Y引数の複素数部分を無視します
回复 #1 nymy 的帖子
你这种问题确实存在,建议一下几方面:1、检查系统的参数;
2、将ode的求解误差改大点试试;
3、适当改变初值(这个看运气);
2、考虑用newmark方法,或者直接用定步长的试一下; 我发现是系统参数的问题,
对于小的实数系数可以得到解.
但是当系数实数增大时候,就出现复数的解了.
不知道该怎么解决?
回复 #5 nymy 的帖子
是参数的问题,那可能引起系统为刚性方程了,你还是换一下其他的方法吧,因为求解的时候不收敛了,所以运行就一直进行下去, 原帖由 无水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解决么? 问题1、是不是你的系统参数中引出的复数? 系统参数中没有引出复数, 只是增大了. 哦那就比较奇怪了,一般不会遇到这样的情况,因为ode求解不可能出现复数。
还有你不要用i,j作为变量 1 系统的参数增大的时候就出现复数解, 不知道原因?
这句话什么意思 原帖由 咕噜噜 于 2007-11-28 13:51 发表 http://www.chinavib.com/forum/images/common/back.gif
1 系统的参数增大的时候就出现复数解, 不知道原因?
这句话什么意思
因为我想考虑系统的参数对变量的解有什么影响.
所以改变6个变量系统的参数发现,增大参数的数值时候出现复数解.
但是对于我的14个变量系统,一开始都是复数解,即使对于小数值的参数. 但是我的方程中变量的物理意义应该是实数的,所以应该实数的解才有意义的. 这么说的话肯定就是你的参数问题了,单自由度、多自由度系统一样的,系统系数为实数解为虚数或者复数都是有可能的,只不过虚数对于系统分析来说有时候没有物理意义,或者说有只是现在人们还不知道应该如何很好得去理解他
这里就需要你在改变参数的时候注意参数的取值范围了啊,并不是说这些系数可以随便取值得 我不能上传pdf文件?