решить связанную ОДУ эйлеровых ангелов Вектор вращения тела - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь решить связанные ODE с помощью функции matlab ode45:

enter image description here

Вот моя функция под названием 'Rot', чтобы описать эти ODE для использования matlab ode45.

function omega= Rot(t,y)
omega(2,1)=(0.03*sin(3*t)*((cos(Y(1)))^2)+0.002*t^3*sin(y(1)))...
/-((cos(Y(1)))^2)+((sin(Y(1)))^2);
omega(1,1)=((0.002*t^2-omega(2,1)*sin(y(1)))...
/-cos(y(3))*sin(y(2)))*cos(y(2))+0.01*t^2+0.3*t;
omega(3,1)=(0.002*t^2-omega(2,1)*sin(y(1)))...
/-cos(y(3))*sin(y(2));

но я получаю "Недостаточно входных аргументов". ошибка.

1 Ответ

0 голосов
/ 16 ноября 2018

ОК, поэтому, выразив theta_dot как функцию от других переменных в уравнении (3) и введя результат в уравнение (2), я получаю (псевдокод):

phi_dot = (0.03*sin(psi)*sin(3*t) - 0.002*t^2 * cos(psi)) / (sin(theta)*(cos(psi))^2 + sin(theta) * sin(psi) * sin(phi))

Так получается, что первое уравнение вашего ODE-файла зависит только от времени и вектора состояния.

Тогда ваше второе уравнение в файле ODE:

psi_dot = -phi_dot * cos(theta) + 0.01*t^2 + 0.3*t

, что нормально, потому что вы вычислили phi_dot в предыдущем уравнении.

И, наконец, последнее уравнение в вашем файле ODE:

theta_dot = (-0.03*sin(3*t) + phi_dot * sin(theta) * sin(phi)) / cos(psi);

, что тоже хорошо, потому что вы вычислили phi_dot в своем первом уравнении.

Затем вы можете передать это солверу ODE, и оно должно работать. (проверьте мои математику, хотя)

...