解法matlab怎么求一阶常微分方程组(so

如题所述

上面两题用dsolve都解不出,用ode45数值解法如下:
1题中x1=i,x2=s,则:
syms x1(t) x2(t)
lamda=0.5;u=0.1;
V = odeToVectorField(diff(x1) ==lamda*x1*x2-u*x2,diff(x2) ==-lamda*x1*x2+0.1)
M = matlabFunction(V,'vars', {'t','Y'})
%计算区间[0 1],初值[0 0]
options = odeset('OutputFcn',@odeplot);
sol = ode45(M,[0 1],[0 0],options)
2题中x=x1,y=x2,z=x3,则:
syms x1(t) x2(t) x3(t)
V = odeToVectorField(diff(x1) ==-8/3*x1+x2*x3,diff(x2) ==-10*x2+10*x3,diff(x3)==-x1*x2+28*x2-x3)
M = matlabFunction(V,'vars', {'t','Y'})
%计算区间[0 1],初值[0 0 1.0e-8]
options = odeset('OutputFcn',@odeplot);
sol = ode45(M,[0 4],[0 0 1.0e-8],options)
figure
x = linspace(0,4,100);
y = deval(sol,x,1:3);
plot(y(1,:),y(2,:))
title('x-y相图')
xlabel('x'),ylabel('y')
grid on
figure
plot(y(1,:),y(3,:))
title('x-z相图')
xlabel('x'),ylabel('z')
grid on
figure
plot3(y(1,:),y(2,:),y(3,:))
title('x-y-z相图')
xlabel('x'),ylabel('y'),zlabel('z')
grid on
温馨提示:答案为网友推荐,仅供参考
相似回答