求助,用 MATLAB 的 ode45 求解微分方程组
展开全部
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
评论
0
0
0
加载更多
调用格式:[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
评论
0
0
0
加载更多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
例如:求解下列微分方程组
求解步骤:
①自定义函数
rigid。m
function
dy
=
rigid(t,y)
dy
=
zeros(3,1);
%
a
column
vector
dy(1)
=
y(2)
*
y(3);
dy(2)
=
-y(1)
*
y(3);
dy(3)
=
-0.51
*
y(1)
*
y(2);
②在执行窗口下,执行下列命令
options
=
odeset('RelTol',1e-4,'AbsTol',[1e-4
1e-4
1e-5]);
[t,Y]
=
ode45(@rigid,[0
12],[0
1
1],options);
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.')
③求解结果
求解步骤:
①自定义函数
rigid。m
function
dy
=
rigid(t,y)
dy
=
zeros(3,1);
%
a
column
vector
dy(1)
=
y(2)
*
y(3);
dy(2)
=
-y(1)
*
y(3);
dy(3)
=
-0.51
*
y(1)
*
y(2);
②在执行窗口下,执行下列命令
options
=
odeset('RelTol',1e-4,'AbsTol',[1e-4
1e-4
1e-5]);
[t,Y]
=
ode45(@rigid,[0
12],[0
1
1],options);
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.')
③求解结果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询