matlab-微分方程求解方法汇总

2022-07-27 09:44:42 浏览数 (1)

之前零零散散写了一些matlab中微分方程求解方法,本文做个汇总和一些补充。

方法1:方向场

假定方程表达式为如下

代码语言:javascript复制
[x,y]=meshgrid(0:.1:2,0:.1:1.5);
dy=1-y;
dx=ones(size(dy));
quiver(x,y,dx,dy)
axis([0,2,0,1.5])
xlabel('x')
ylabel('y')

mesh命令设置xy网格。在这种情况下,x在[0,2]和y在[0,1.5]。在这种情况下,网格间距是0.1。让dy =1 -y, dx =1。

quiver命令在(x,y)处产生一个向量(dx,dy)。每个向量的斜率是dy/dx。

axis标记了坐标轴,并提供了一个窗口,其中xmin=0, xmax=2, ymin=0, ymax=1.5。

quiver函数说明:quiver(X,Y,U,V) 在由 X 和 Y 指定的笛卡尔坐标上绘制具有定向分量 U 和 V 的箭头。例如,第一个箭头源于点 X(1) 和 Y(1),按 U(1) 水平延伸,按 V(1) 垂直延伸。默认情况下,quiver 函数缩放箭头长度,使其不重叠。

这种方法可以看到x和y的相对变化关系

方法2:dsolve方法

代码语言:javascript复制
sol = dsolve('Dx=2*sin(t)-4*x','x(0)=0','t');
ezplot(sol,[0 10])
xlabel('t'),ylabel('x'), grid

方法3:ode45和其他的ode相关solver

参考:

Matlab通过ode系列函数求解微分方程

matlab微分方程ODE求解器的事件(Event)属性

Matlab求解微分代数方程 (DAE)

方法4:simulink求解

‍参考:

Matlab/Simulink求解微分方程样例分享

几个微分方程求解框图样例

微分方程表达式

0 人点赞