[英]Unrecognized function or variable in Matlab
我試圖繪制一階微分方程系統的三維相圖,但我收到一條錯誤消息,說我有一個無法識別的變量 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
產生
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.