matlabdaki EOM kartezyen koordinatları sarkaç sorunum var [kapalı]


0

görüntü tanımını buraya girin

görüntü tanımını buraya girin

Kodumu böyle yaptım,

function DK = pendulum_cartesian(t,K)    
g = 9.8; l = sqrt(K(1)^2 + K(2)^2);  
DK = zeros(4,1);
DK(1) = K(3);
DK(2) = K(4);
DK(3) = ( (-K(1)*K(3)^2) - (K(1)*K(4)^2) + K(1)*K(2)*g )/(l^2);
DK(4) = ( (-K(2)*K(3)^2) - (K(2)*K(4)^2) - (K(1)^2)*g )/(l^2);

theta = atan(K(2)/K(1));

plot(t,theta);

end

ve yazdım

[t, K] = ode45 (@pendulum_cartesian, [0,10], [0.1,0.00017,0.1,0])

ancak tetada değer yoktur ve hiçbir şey çizmez.

sorun nerede


1
Bir çıktı almadığınız gerçeği, bunun bir mühendislik sayısal yöntem sorunu değil, bir kodlama sorunu olduğunu göstermektedir. Farklı bir forum öneririm, kodlama yardımı burada konu dışı.
BarbalatsDilemma,

özür dilerim özür dilerim ...
mekanik

özür dilemene gerek yok, sadece bilmeni sağlıyorum
BarbalatsDilemma

Yanıtlar:


0

Denklemlerinizin ve kodunuzun doğru olduğunu varsaymak.

Bu işlev için kullandığım şeydi:

function DK = pendulum_cartesian(t,K)    
DK = zeros(4,1);
DK(1) = K(3);
DK(2) = K(4);
DK(3) = ( (-K(1)*K(3)^2) - (K(1)*K(4)^2) + K(1)*K(2)*9.81 )/(K(1)^2 + K(2)^2);
DK(4) = ( (-K(2)*K(3)^2) - (K(2)*K(4)^2) - (K(1)^2)*9.81 )/(K(1)^2 + K(2)^2);
end

Ardından şununla çalıştırın:

[t,K] = ode45(@pendulum_cartesian, [0,10], [0.1;0.00017;0.1;0]);
theta = atan(K(:,2)/K(:,1));
plot(t,theta);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.