Движение снаряда с непостоянным сопротивлением воздуха - PullRequest
0 голосов
/ 30 декабря 2018

Мне нужно смоделировать движение снаряда "Парижской пушки".Мне нужно учитывать изменение сопротивления воздуха в соответствии с высотой с помощью следующего уравнения:

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, вся симуляция дает мне абсолютную чепуху.Буду признателен за вашу помощь.

...