怎样用matlab求解复杂的微分方程组

来源:百度知道 编辑:UC知道 时间:2024/05/10 23:40:37
vx'=-(vx+1.4)*((vx+1.4)^2+vy^2+(vz-1.4)^2)^0.5;
vy'=-vy*((vx+1.4)^2+vy^2+(vz-1.4)^2)^0.5;
vz'=-(vz-1.4)*((vx+1.4)^2+vy^2+(vz-1.4)^2)^0.5;
其中:
vx(0)=1500;
vy(0)=-500;
vz(0)=0;

用数值解法吧。matlab程序为:

function hhh
clear;clc;
[TOUT,X] = ode23t(@odefun,[0,0.01],[1500 -500 0])
%t=TOUT,vx=X(:,1),vy=X(:,2),vz=X(:,3)
plotyy(TOUT,X(:,1:2),TOUT,X(:,3))
function yhat=odefun(t,x)
vx=x(1);vy=x(2);vz=x(3);
dx=-(vx+1.4)*((vx+1.4)^2+vy^2+(vz-1.4)^2)^0.5;
dy=-vy*((vx+1.4)^2+vy^2+(vz-1.4)^2)^0.5;
dz=-(vz-1.4)*((vx+1.4)^2+vy^2+(vz-1.4)^2)^0.5;
yhat=[dx;dy;dz];

结果:
TOUT =

0
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0001
0.0001
0.0001
0.0002
0.0002
0.0002
0.0003
0.0003
0.0004
0.0005
0.0006
0.0006
0.0007
0.0008
0.0009
0.0010
0.0012
0.0013
0.0014
0.0016
0.0017
0.0019
0.0021
0.0023
0.0025