我對Matlab很陌生。 我有一個腳本,使用ode45
和arrow.m
來顯示一個擺動的彈簧在Matlab中的質量隨着它在三維空間中移動的運動。該方案是差不多做我想做的。現在鑽石的密度顯示出有效的彈簧速度(除了當ode45
需要個人最喜歡的數字樣本時),並且速度幾乎可以精確地與功能的步長一起考慮(至少在速度我的電腦正在運行代碼)。我想要做的是,我在代碼中註釋的位置矢量只顯示在質量的瞬時位置,即曲線的終點,而不是鑽石出現的每個點。我四處尋找幫助,但我嘗試的一切似乎都會導致錯誤。如果有人能指出我正確的方向,將不勝感激。請嘗試運行該程序,您將看到我的意思,也可以使用該函數的參數。Matlab中的擺動彈簧ODE系統 - 如何使位置矢量跟隨路徑?
function elasticPendulum(totalTime)
time=1;
totalTime=20
X=1
Vx=0
Y=0
Vy=0
Z=1.1
Vz=0
w=3;
g=9;
l=1;
while (time<totalTime)
tspan=[0,time];
x0=[X,Vx,Y,Vy,Z,Vz];
[t,x]=ode45(@F,tspan,x0);
plot3(x(:,1),x(:,3),x(:,5),'dk'), axis([-2 2 -2 2 -10 2]);
grid on;
o=[0, 0, 0];
Xeq=[0, 0, -(g/(w^2)+l)];
arrow(o,Xeq,'Length',5);
%{
Xt=[x(:,1) x(:,3) x(:,5)]
arrow(o,Xt,'Length',5);
%}
time=time+.1*(((x(2))^2+(x(4))^2+(x(6))^2)^(1/2))
pause(.1);
end
function xprime=F(t,x)
r=sqrt(x(1)^2+x(3)^2+x(5)^2);
xprime=[x(2);-w*(r-l)/r*x(1);x(4);-w*(r-l)/r*x(3);x(6);-w*(r-l)/r*x(5)-g];
end
end
我試着格式化你的代碼。也許你注意到它沒有正確顯示?你應該檢查它是否正確。 – horchler