Я пытаюсь построить график для следующей системы дифференциальных уравнений.
Мне трудно построить график этой конкретной системы из-за того, что производные переменных x и y должны быть возведены в квадрат. Уравнения описывают движение параболического c воздушного объекта, на который действует сила тяжести и сила сопротивления, пропорциональная квадрату его скорости и направленная противоположно его скорости. Начальная позиция - начало координат, а вертикальное смещение объекта при приземлении равно нулю.
Вот изображение уравнений:
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
позиция
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)