Решаем систему ОД MATLAB с од45

У меня есть 4 переменные y1, y2,y3,y4, и я знаю их вторичные производные как функции от y1, y2, y3, y4:

y1"= y1(y1,y2,y3,y4)
y2"= y1(y1,y2,y3,y4)
y3"= y1(y1,y2,y3,y4)
y4"= y1(y1,y2,y3,y4)

Я пытаюсь использовать ode45, чтобы получить y1, y2,y3,y4

Я попытался сделать первый порядок ODE, используя еще 4 переменные так:

y5= y1', y6= y2', y7= y3', y8= y4'

так

y5'= y1", y6'= y2", y7'=y3", y8'= y4"

Итак, для моего кода MATLAB:

function dydt=myequ(t,y)
g = 9.81; m=0.5 ; k = 1000; l0 = 0.02; 

dydt(1)=y(5);
dydt(2)=y(6);
dydt(3)=y(7);
dydt(4)=y(8);

A = (y(2)-y(1)).*(1-(l0./(sqrt((y(2)-y(1)).^2+(y(3)-y(4)).^2))));
B = (y(4)-y(3)).*(1-(l0./(sqrt((y(2)-y(1)).^2+(y(3)-y(4)).^2)))); 

dydt(5)= [y(5); (k.*A)./m];
dydt(6)= [y(6);-(k.*A)./m] ;
dydt(7)= [y(7);(k.*B - m*g)./m] ;
dydt(8)= [y(8);(-k.*B - m*g)./m] ;

А также

function stuffff
l0 = 0.02; v0=1;

tspan=[0 .144];
y0=[-0.5*l0 0 0 0 0.5*l0 v0/sqrt(2) 0 v0/sqrt(2)]; % Initial conditions
[t,y]=ode45(@myequ,tspan,y0)

Я получаю ошибку:

In an assignment  A(:) = B, the number of elements in A and B must be the same.

Я использовал это в качестве ссылки https://www.mathworks.com/matlabcentral/answers/87482-2nd-order-systems-of-differential-equation но я изменил его на dydt вместо dy, я получал ошибки как пути.

0 ответов

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