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

mechaniczny
źródło
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);
MrYouMath
źródło