24小时热门版块排行榜    

查看: 3525  |  回复: 2

chnzhn

木虫 (小有名气)

[求助] ODE45能解非线性方程组吗?

今有一非线性微分方程组,欲求解,下列做法怎么求解不了,请教各位是为何?
function Ad_gene
[t,y]=ode45(@hyperliu2,[0:0.01:10],[20;20;30;20;1;1]);
figure;
plot(t,y);

function dy=hyperliu2(t,y)
dy=zeros(6,1);
dy(1)=y(5)*(y(2)-y(1))+y(2)*y(3);
dy(2)=25*y(1)-y(1)*y(3)-y(2)-y(4);
dy(3)=y(1)*y(2)-8/3*y(3);
dy(4)=y(6)*y(1)+0.5*y(2)*y(3)+y(4);
dy(5)=-y(1)+1;
dy(6)=-2*y(4);
以上编程不知错在哪里,运行很久都不出结果,是否进入死循环呢?
回复此楼

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sogooda

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
chnzhn: 金币+10, ★★★很有帮助, 你说的很好,与初始值、步长都有关,谢谢了 2012-04-06 09:35:26
xiegangmai: 金币+1, 谢谢应助! 2012-04-06 10:13:44
1. ode45可以解非线性方程组。
2. 计算时间很长有多长呢?
[t,y]=ode45(@hyperliu2,[0:0.01:10],[20;20;30;20;1;1]);
这句改成
[t,y]=ode45(@hyperliu2,[0,10],[20;20;30;20;1;1]);
试试。因为ode45默认自动步长的,会比你指定的步长更有效率。
3. 计算慢的原因可能是方程存在刚性,试试换成ode15s求解。
2楼2012-04-06 09:28:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chnzhn

木虫 (小有名气)

送鲜花一朵
问题找到了,初始值太大,溢出了
3楼2012-04-06 09:33:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 chnzhn 的主题更新
信息提示
请填处理意见