ode45 с двумя степенями свободы MATLAB

Я пытаюсь решить дифференциальное уравнение с помощью функции ode45, которая включает две степени свободы, направления x и y. Когда в моей функции oem ниже я пытаюсь сохранить все четыре переменные, которые мне нужны, в матрицу для подключения к ode45, но я не могу заставить функцию oem распознавать ds(3) или ds(4). Я пытался пройти через это, но я ударил стену.

function odeprob2 
%ode45 function [T, S] = ode45(@oem, linspace(0,0.1,100), [0,2]);
fprintf('Final Position in the X Direction = %4.2f \n', S(end,1));
fprintf('Final Velocity in the X Direction= %4.2f \n', S(end,2));
fprintf('Final Position in the Y Direction = %4.2f \n', S(end,3));
fprintf('Final Velocity in the Y Direction= %4.2f \n', S(end,4));
plot(T, S(:,1), '-k')
xlabel('Time, sec')
ylabel('Position, m')

function ds = oem(t, s)
  %Constants: 
  rad = 15; %mm
  dens = 8000; %kg/m^3
  deno = 980; %kg/m^3
  g = 9.81 ; %m/s^2
ds = zeros(4, 1);
ds(1) = s(2);
ds(2) = ((-1.6) * s(2)) / (((4/3)*pi*(rad^3))*dens);
ds(3) = s(4);
ds(4) = ((((4/3) * pi * (rad^3)) * (dens - deno) * g) - (1.6 * s(4))) / (((4/3) *pi*(rad^3))*dens);

0 ответов

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