mam problem ze współrzędnymi kartezjańskimi wahadła EOM w Matlabie [zamknięte]


0

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Tak zrobiłem mój kod,

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

i wpisałem

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

ale w theta nie ma wartości i nic nie kreśli.

gdzie jest problem


1
Fakt, że nie otrzymujesz danych wyjściowych sugeruje, że jest to problem z kodowaniem, a nie problem inżynieryjnych metod numerycznych. Sugerowałbym inne forum, pomoc w kodowaniu jest tutaj nie na temat.
BarbalatsDilemma

przepraszam przepraszam ...
mechaniczne

nie trzeba przepraszać, daję ci znać
BarbalatsDilemma

Odpowiedzi:


0

Zakładając, że twoje równania i kod są poprawne.

Oto, czego użyłem dla funkcji:

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

Następnie uruchom z:

[t,K] = ode45(@pendulum_cartesian, [0,10], [0.1;0.00017;0.1;0]);
theta = atan(K(:,2)/K(:,1));
plot(t,theta);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.