我正在尝试绘制一阶微分方程组的三维相图,但是我收到一条错误消息,说我有一个无法识别的变量eta。除了三维相图外,我还想在同一张图上绘制x(1)与t,x(2)与t,x(3)与t的关系图。我已经注释掉了该plot命令,因为我确定我错了。因此,我希望在同一张图上绘制(i)3D相像和(ii)x(1),x(2)和x(3)的时间图。另外,在ode45的参数中看到的[-0.015,0.015],[-2,2],[-4,4]是x(1),x(2)和x(3 )。我什至不确定是否应该在此处放置轴限制。有人可以帮忙吗?谢谢。
[t,x] = ode45(@eqx3, eta, omega, [-0.015,0.015], [-2,2], [-4,4], initcond);
global eta omega
eta = 0.05;
omega = 25;
%tspan = [0,50]
initcond = [1, 0.5, -0.4]
%subplot(211)
%plot(t, x(:,1), t,x(:,2),'--',x(:,3),'--');
%xlabel('t')
subplot(212)
plot(x(:,1), x(:,2), x(:,3))
xlabel('x1')
ylabel('x2')
zlabel('x3')
function xdot = eqx3(t,x,eta,omega)
global eta omega
xdot = zeros(3,1);
xdot(1) = -(2*eta*omega + 1)*x(1) + x(2) - 1;
xdot(2) = -(2*eta*omega + (omega^2))*x(1) + x(3) + 2;
xdot(3) = -(omega^2)*x(1) + x(2) - 1;
%xdot =[xdot(1);xdot(2);xdot(3)];
end
您的代码需要一些清理
@(t,x) eqx3(t,x,eta, omega)
将ODE参数与该函数打包在一起,plot3
的相图的绘制3D。这是我想出的结果:
eta = 0.05;
omega = 25;
tspan = [0,50];
initcond = [1, 0.5, -0.4]
[t,x] = ode45(@(t,x) eqx3(t,x,eta, omega), tspan, initcond);
plot3(x(:,1), x(:,2), x(:,3))
xlabel('x1')
ylabel('x2')
zlabel('x3')
function xdot = eqx3(t,x,eta,omega)
xdot = zeros(3,1);
xdot(1) = -(2*eta*omega + 1)*x(1) + x(2) - 1;
xdot(2) = -(2*eta*omega + (omega^2))*x(1) + x(3) + 2;
xdot(3) = -(omega^2)*x(1) + x(2) - 1;
end
产生
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句