Решить связанную ОДУ эйлеровых ангелов Вектор вращения тела

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

введите описание изображения здесь

Вот моя функция под названием '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 ответ

Хорошо, так выражая 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 Solver, и он должен работать. (проверить мои математику, хотя)

Другие вопросы по тегам