注册 登录
编程论坛 Matlab

关于微分方程分段求解

thuwb 发布于 2007-04-10 11:09, 975 次点击

解微分方程时,如果设t0=0,tf=1000,
为什么用方法一:直接求t=t0~tf的值
与用方法二分段求解t=0~500,t=500~1000算出来的值不一样呢?
方法二种将第一时间段算出的t=500时的值作为第二时间段的初始值。

哪位大侠解释一下,谢谢!

function dy=rigid(t,y)
dy=zeros(3,1);
dy(1)=y(2)*y(3);
dy(2)=-y(1)*y(3);
dy(3)=-0.51*y(1)*y(2);

方法一:
[T,Y]=ode45(@rigid,[0:10:1000],[0 1 1]);
方法二:
[T1,Y1]=ode45(@rigid,[0:10:500],[0 1 1]);
[T2,Y2]=ode45(@rigid,[500:10:1000],[Y1(51,1) Y1(51,2) Y1(51,3)]);

1 回复
#2
abingchem2007-04-10 20:00
这主要是由于ode45算法是采取了多个点的斜率平均值来算的,你的第二段就没有办法利用第一段的多点平均
1