Мне нужно смоделировать движение снаряда "Парижской пушки".Мне нужно учитывать изменение сопротивления воздуха в соответствии с высотой с помощью следующего уравнения:
p = p0*exp(-y/y0)
, где y0 = 1000m
И сопротивление:
Fd = -0.5*C*p*A*v^2
Пока мой код выглядит так:
clc
clear
m = 94;
A = pi*(.21)^2;
C = .12;
p0 = 1.225;
g = 9.81;
%Initial Conditions
dt = .001;
x(1) = 0;
y(1) = 0;
v = 10000;
angle = 20;
vx = v*cosd(angle)
vy = v*sind(angle);
t(1) = 0 ;
i = 1;
y0 = 1000;
while min(y)> -.001
p = p0*exp(-y/y0)
Drag = p*C*A/2*v^2
ax = -(Drag/m)*(vx*vx+vy*vy)^0.5*vx;
ay = -g-(Drag/m)*(vx*vx+vy*vy)^0.5*vy;
vx = vx+ax*dt;
vy = vy+ay*dt;
x(i+1) = x(i)+vx*dt+.5*ax*dt^2;
y(i+1) = y(i)+vy*dt+.5*ay*dt^2;
t(i+1) = t(i)+dt;
i = i+1;
end
plot(x,y,'-')
xlabel('x distance (m)')
ylabel('y distance (m)')
pause(0.001);
Я не могу получить правильную симуляцию здесь.Если я беру перетаскивание как константу и помещаю его в начальные условия, он работает нормальноНо когда я помещаю это в цикл while
, вся симуляция дает мне абсолютную чепуху.Буду признателен за вашу помощь.