у меня есть проблема с декартовыми координатами маятника EOM в Matlab [закрыто]

0

enter image description here

enter image description here

Я сделал свой код так,

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

и я напечатал,

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

но в тэте нет никакой ценности, и она ничего не составляет.

где проблема?

mechanical
источник
1
Тот факт, что вы не получаете вывод, предполагает, что это проблема кодирования, а не проблема инженерных числовых методов. Я бы предложил другой форум, здесь помощь в написании кода не по теме.
BarbalatsDilemma
извините, я прошу прощения ...
mechanical
не нужно извиняться, я просто дам вам знать
BarbalatsDilemma

Ответы:

0

Предполагая, что ваши уравнения и ваш код правильный.

Вот что я использовал для функции:

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

Затем запустите с:

[t,K] = ode45(@pendulum_cartesian, [0,10], [0.1;0.00017;0.1;0]);
theta = atan(K(:,2)/K(:,1));
plot(t,theta);
MrYouMath
источник