ode45是最常用的求解非剛性微分方程(組)的指令,它採用變步長四、五階Runge-Kutta法,求解精度比ode23、ode15要高。但ode45的計算量比較大,而ode23計算量小,且誤差大
呼叫格式:[t,y]=ode45(odefun,tspan,y0)
odefun 用以表示f(t,y)的函式控制代碼或inline函式,t是標量,y是標量或向量;
tspan 如果是二維向量[t0,tf],表示自變數初值t0和終值tf;如果是高維向量[t0,t1,t2,。。。,tn],則表示輸出結點列向量;
y0 表示初值向量;
t 表示結點列向量(t0,t1,t2,。。。,tn)^T;
y 表示數值解矩陣,每一列對應y的一個分量。
例項說明:
例1 y"=y-2t/y,y(0)=1,0<t<4
odefun=inline("y-2*t/y","t","y");
[t,y]=ode45(odefun,[0,4],1)
plot(t,y,"o-")
例2 x"=-x^3-y,x(0)=1;y"=x-y^3,y(0)=0.5,0<t<30
首先,建立自定義函式檔案myfun.m
function f=myfun(t,x)
f(1)=-x(1)^3-x(2);
f(2)=x(1)-x(2)^3;
f=f(:)
然後,在命令視窗中輸入
[t,y]=ode45(myfun,[ 0 30],[1:50]])
plot(t,x(:,1) ,t,x(:,2),"o-")
figure
plot(x(:,1) ,x(:,2),":")
ode45是最常用的求解非剛性微分方程(組)的指令,它採用變步長四、五階Runge-Kutta法,求解精度比ode23、ode15要高。但ode45的計算量比較大,而ode23計算量小,且誤差大
呼叫格式:[t,y]=ode45(odefun,tspan,y0)
odefun 用以表示f(t,y)的函式控制代碼或inline函式,t是標量,y是標量或向量;
tspan 如果是二維向量[t0,tf],表示自變數初值t0和終值tf;如果是高維向量[t0,t1,t2,。。。,tn],則表示輸出結點列向量;
y0 表示初值向量;
t 表示結點列向量(t0,t1,t2,。。。,tn)^T;
y 表示數值解矩陣,每一列對應y的一個分量。
例項說明:
例1 y"=y-2t/y,y(0)=1,0<t<4
odefun=inline("y-2*t/y","t","y");
[t,y]=ode45(odefun,[0,4],1)
plot(t,y,"o-")
例2 x"=-x^3-y,x(0)=1;y"=x-y^3,y(0)=0.5,0<t<30
首先,建立自定義函式檔案myfun.m
function f=myfun(t,x)
f(1)=-x(1)^3-x(2);
f(2)=x(1)-x(2)^3;
f=f(:)
然後,在命令視窗中輸入
[t,y]=ode45(myfun,[ 0 30],[1:50]])
plot(t,x(:,1) ,t,x(:,2),"o-")
figure
plot(x(:,1) ,x(:,2),":")