求助,用 MATLAB 的 ode45 求解微分方程组

如题所述

Matlab软件中如何使用ode 45 解微分方程组?求解过程应按下列步骤来计算:

第一步:根据已经微分方程组和相关系数,自定义求解微分方程组的函数,其函数名 odefun,其参数为【t,z】

第二步:由于未知初始条件,用随机数初定,即z0=rand(1,6)/1000;

第三步:确定时间t的范围,如tspan=[0 50];

第四步:使用ode45函数,求其数值解,即

[t,z]=ode45(@(t,z)odefun(t,z),tspan,z0);

第五步:使用plot函数,绘制其相关图形。

第六步:编程后执行,得到结果。

图1,耦合14-16方程组的结果。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-30
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
加载更多
第2个回答  2020-01-09
例如:求解下列微分方程组
求解步骤:
①自定义函数
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),'.')
③求解结果