Какие формулы я использую для расчета сил гравитации и лобового сопротивления объекта, поднимающегося с поверхности Земли?

Я пытаюсь буквально смоделировать запуск рогатки в космос, и я использую 2 основные формулы. Упрощая мою модель, объект с (действительно большой) начальной скоростью запускается с поверхности Земли на экваторе, и на него действует сопротивление воздуха и гравитация. Я использую следующие формулы:

Сопротивление воздуха:

Ф знак равно С Д 2 р А в 2

A = опорная площадь C = коэффициент лобового сопротивления F = сила сопротивления, Н. V = скорость, м/с. ρ = плотность жидкости (жидкости или газа), кг/м3.

И : сила всемирного тяготения:

Ф знак равно грамм м 1 м 2 р 2

но я получаю некоторые странные результаты.

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

Больше информации:

Я использую программу Python для построения графика, который будет позициями X и Y. Для метода, который я использую (Odeint), мне нужно дифференциальное уравнение (не знаю, правильно ли название на английском), поскольку F = ma:

Ф / м 1 знак равно грамм м 2 р 2

если м 1 = масса моего объекта

поэтому моя вариация скорости/вариации времени = грамм * М 2 / р 2 (будучи M2 = масса земли)

(Я думаю, что это имеет смысл, потому что гравитационное ускорение объекта не зависит от массы этого объекта.)

Я почти уверен, что совершаю здесь серьезную и ужасную ошибку, но я учусь на первом курсе колледжа, и мне действительно нужна помощь, спасибо.

Не запускайте с экватора! Выигрыш от вращения Земли - мелочь по сравнению с тем, что вы потеряете в лобовом сопротивлении. Поместите свою пусковую установку на самую высокую гору, на которую сможете.
Ваша формула сопротивления кажется мне подозрительной — в гиперзвуковой сфере действуют другие правила.
в 2 нет в 3 , если ваш " п "является силой.
@LorenPechtel: гора Килиманджаро, 5895 м, координаты: 3°ю.ш. 37°в.д. Чимборасо, 6268 м, координаты: 1°ю.ш. 78°з.д.
Кроме того, еще одно уравнение для рассмотрения: температура воздуха в напоре , которое вам нужно затем включить в функцию теплопередачи. При скорости 8 км/с температура окружающей среды (измеряемая в градусах Кельвина) повышается более чем в 100 раз. Итак, 0C = 273,15K становится более 27300K.

Ответы (2)

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

Еще одна вещь, за которой нужно следить, — это ваши юниты. Большая гравитационная постоянная G составляет ~6,67 x 10 -11 м 3 кг -1 с -2 ; если вы используете это значение, убедитесь, что вы постоянно используете кг и м, а не граммы и см, например.

Вы правы в том, что масса объекта не учитывается, если учесть его ускорение под действием силы тяжести. Вблизи поверхности Земли вы должны получить ускорение ~9,8 мс -2 .

Баллистическая траектория без двигателя, которая может достичь космоса с поверхности Земли, будет иметь ужасающее сопротивление. Я знаю, что максимальное динамическое давление для стартующей ракеты обычно находится в пределах 20-30 кПа, но в вашем случае оно будет намного выше, т.к. максимальная скорость -- момент старта) -- будет совпадать с максимальной плотностью воздуха, что не так. для ракет.

Перетаскивание жесткое, но для достаточно большого корабля вы можете это сделать.
@LorenPechtel: По крайней мере, на бумаге. С увеличением размера структурные требования возрастают в геометрической прогрессии. Корабль достаточно большой развалится под нагрузкой.
@СФ. Да, на самом деле построить что-то, что сможет выжить, будет непросто. Вам придется построить судно, рассчитанное на пушку, — поскольку мы можем строить вещи, рассчитанные на пушку, это возможно.

Это может помочь вам начать работу . Это просто одномерный радиальный решатель, но вы можете играть с математикой. Я включил 3D-версию производной функции, чтобы показать один из способов сделать ускорение вектором в NumPy. Не забудьте добавить вращение Земли.

Идея о том , чтобы начать с вершины горы, такой как гора Килименжаро , безусловно , заслуживает изучения.

Я просто выбрал значение шкалы высоты , 1/е длины уменьшения плотности с высотой. На самом деле все не так просто, и конечно драг будет намного сложнее и намного хуже! чем это простое уравнение, но это по крайней мере начало, и вы можете добавлять/изменять математику, когда узнаете больше о сверхзвуковом сопротивлении.

Вы можете увидеть резкую потерю скорости еще в атмосфере.

введите описание изображения здесь

# FROM: https://space.stackexchange.com/questions/16581/what-formulas-do-i-use-to-calculate-the-gravity-and-drag-forces-on-an-object-asc

def deriv(X, t):

    r, v = X
    acc_grav = -GMe / r**2
    acc_drag = -0.5 * rhocalc(r) * v**2 * Cd * A / mass

    return [v, acc_grav + acc_drag]

def rhocalc(r):

    altitude = r - re
    rho      = rho_0 * np.exp(-altitude / h_scale)

    return rho

def deriv3D(X, t):

    r, v = X[:3], X[3:] # 3D state vector np.array([x, y, z, vx, vy vz])

    acc_grav = -GMe * r * ((r**2).sum(axis=0))**-1.5
    acc_drag = -0.5 * rhocalc(r) * v*np.sqrt((v**2).sum()) * Cd * A / mass

    return np.hstack((v, acc_grav + acc_drag))

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint as ODEint

GMe = 3.986E+14   # m^3/s^2

mass = 1000       # kg
Cd   = 1.0
A    = 0.1        # m^2
rho_0   = 1.3     # kg/m^3  or  mg/cm^3
h_scale = 7600    # m   scale height 

re  = 6371000.    #m     radius of earth
alt = 0.          #m     launch altitude
v0  = 3000.       #m/s   launch velocity

X0 = [re+alt, v0]  # 1D state vector

print deriv(X0, 0)

t = np.linspace(0, 90, 1000)

tol = 1E-9

answer, blob = ODEint(deriv, X0, t, rtol=tol, atol=tol, full_output=True)

plt.figure()

r, v = answer.T

plt.subplot(4, 1, 1)
plt.plot(t, r-re)
plt.title('altitude (m)')
plt.subplot(4, 1, 2)
plt.plot(t, v)
plt.title('velocity (m/s)')
plt.subplot(4, 1, 3)
plt.plot(t, rhocalc(r))
plt.title('density (kg/m^3)')
plt.subplot(4, 1, 4)
plt.plot(t[:-1], blob['hu'])
plt.title('step size (sec)')
plt.yscale('log')
plt.show()