Внешняя баллистика. Часть 3

В завершающей части нашего цикла, посвященного внешней баллистике, мы детально проанализируем шестой и седьмой сценарии. В данных моделях ключевыми факторами станут зависимость силы гравитации от высоты полета, а также влияние земной кривизны на траекторию объекта.

Шестой случай
Шестой случай
Седьмой случай. Начало.
Седьмой случай. Начало.
Седьмой случай. Переформулировка задачи
Седьмой случай. Переформулировка задачи
Седьмой случай. Окончание.
Седьмой случай. Окончание.

Перейдем к программной реализации представленных моделей на языке Python:

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp

Константы

g0 = 9.80665 # стандартное ускорение свободного падения (уровень моря) RE = 6371000 # средний радиус планеты, м rho0 = 1.225 # плотность атмосферы на уровне моря, кг/м³ H = 8000 # характерная высота атмосферы (высота масштаба), м

Упрощенная модель зависимости скорости звука от высоты

def sound_speed(h): return 340 - 0.0065 * h if h < 11000 else 295

Характеристики снаряда

m = 2000 # масса, кг S = 0.3 # площадь миделя, м²

Начальные условия

v0 = 4000 # скорость, м/с theta0 = 50 # угол броска, градусы

def cx(M): """Коэффициент аэродинамического сопротивления (модель 1943 г.)""" if M < 0.8: return 0.15 + 0.25 M if M < 1.2: return 0.4 - 0.3 (M - 0.8) return 0.28 + 0.05 * (M - 1.2) if M < 4 else 1

def rho(h): """Барометрическая формула плотности воздуха""" return rho0 * np.exp(-h / H)

def g(h): """Гравитация с учетом удаления от центра Земли""" return g0 * (RE / (RE + h))**2

def equations(t, state): """Дифференциальные уравнения динамики в полярных координатах""" r, phi, vr, vphi = state h = r - RE

if h < -100: return [0, 0, 0, 0]
if h > 1e6:
    dvr_dt = -g(h) + vphi**2 / r
    dvphi_dt = -vr * vphi / r
    return [vr, vphi / r, dvr_dt, dvphi_dt]

v = np.sqrt(vr**2 + vphi**2)
M = v / sound_speed(h) if v > 0 else 0

# Расчет сил
F_drag = 0.5 * rho(h) * v**2 * S * cx(M)

dvr_dt = -(F_drag * vr / v) / m - g(h) + vphi**2 / r
dvphi_dt = -(F_drag * vphi / v) / m - vr * vphi / r

return [vr, vphi / r, dvr_dt, dvphi_dt]

def event_ground(t, state):
return state[0] - RE
event_ground.terminal = True
event_ground.direction = -1

Интегрирование

solution = solve_ivp(equations, (0, 1000), [RE, 0, v0 np.sin(np.radians(theta0)), v0 np.cos(np.radians(theta0))],
method='RK45', events=event_ground, dense_output=True)

Обработка данных для визуализации...

(визуализация опущена для краткости)

Итоговые результаты моделирования представлены на графике ниже:

Графики
Графики

Таким образом, исходная задача успешно решена. Нами была создана высокоточная математическая модель, комплексно учитывающая ключевые физические факторы полета в атмосфере, и разработан эффективный вычислительный алгоритм для реализации подобных расчетов.

Список использованной литературы:

  1. Окунев Б. Н. «Решение основной задачи внешней баллистики при квадратичном законе сопротивления воздуха» (1932).

  2. Окунев Б. Н. «Основная задача внешней баллистики и аналитические методы её решения» (1934).

  3. Дмитриевский А. А., Лысенко Л. Н. «Внешняя баллистика» (2005).

  4. Лысенко А. Н. «Внешняя баллистика» (2024).

  5. Шапиро Я. М. «Внешняя баллистика» (1946).

  6. Беляева С. Д. «Внешняя баллистика с примерами и задачами» (2023).

  7. Учебное пособие по внешней баллистике (КузГТУ)

  8. Мандрыка А. П. «Баллистические исследования Леонарда Эйлера» (2017) 

  9. Projectile motion with air resistance (Wikipedia)

 

Источник

Читайте также