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.