Матлаб построение системы дифференциальных уравнений, описывающих траекторию параболи c объекта, на который действует сила сопротивления - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь построить график для следующей системы дифференциальных уравнений.

Мне трудно построить график этой конкретной системы из-за того, что производные переменных x и y должны быть возведены в квадрат. Уравнения описывают движение параболического c воздушного объекта, на который действует сила тяжести и сила сопротивления, пропорциональная квадрату его скорости и направленная противоположно его скорости. Начальная позиция - начало координат, а вертикальное смещение объекта при приземлении равно нулю.

Вот изображение уравнений:

enter image description here

mx¨ = −Cxsqrt(x˙^2 + y˙^2)

my¨ = −Cy sqrt(x˙^2 + y˙^2)− mg

Исходные условия: x(0) = 0; y(0) = 0; C: 4*10^-7 (постоянная)

: первая производная x позиция
: вторая производная x позиция
y˙^2: квадрат первой производной y позиция

Я пробовал следующий код, но я получаю сообщение об ошибке, в котором говорится, что код пытается построить решение за пределами определенного диапазона (5,5.8), хотя уравнения описывают движение параболического c объекта, на который действует сила сопротивления и должен быть определен от x=0 до диапазона.

t0 = 0; 
tf = 5400; 
dx=diff(x,t);
dy=diff(y,t);
eq1 = dx*sqrt((dx*dx +dy*dy)) == diff(x,2);
eq2 = dy*sqrt((dx*dx +dy*dy))-50 == 10*diff(y,2); 
vars = [x(t); y(t)];
[V,S] = odeToVectorField([eq1,eq2])
M = matlabFunction(V,'vars', {'t','Y'});
interval = [t0 tf];   
y0 = [0 0 0 1];
ySol = ode45(M,interval,y0);
tValues = linspace(interval(1),interval(2),1000);
yValues = deval(ySol,tValues,1);  
plot(tValues,yValues)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...