matlab ode45

来源:百度知道 编辑:UC知道 时间:2024/06/22 07:29:52
用ode45求解微分方程组dx=20/7*x-yz, dy=-10y+xz, dz=-4z+xy,如何编写,还要画图.初值(3,-4,2).对初值很敏感,t=0.001:0.001:20.
function dx=myfun(x,t)
dx(1)=20/7*x(1)-x(2)*x(3)
dx(2)=-10*x(2)+x(1)*x(3)
dx(3)=-4*x(3)+x(1)*x(2)
x0=[3,-4,2]
t0=0.001:0.001:20
[x,t]=ode45(@mmyfun,t0,x0)
plot(t,x)
第一次写,问题不少.

在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function dx=myfun(t,x)
dx(1)=20/7*x(1)-x(2)*x(3);
dx(2)=-10*x(2)+x(1)*x(3);
dx(3)=-4*x(3)+x(1)*x(2);
dx=dx(:);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在Matlab下面输入:
x0=[3,-4,2];
t0=0.001:0.001:20;
[t,x]=ode45('myfun',[0.001,20],x0); %ode45会自动调整步长
plot(t,x)
legend('x','y','z')