Алиса Белокурова
S:18:19:02 01.06
R:18:19:04 01.06
import math
import numpy as np
# расчет параметров атмосферы
def calculate_atmosphere():
r = 6356767
gc = 9.80665
Rg = 287.05287
h1 = float(input(*Введите высоту h1: *))
H = (r * h1) / (r + h1)
g = gc * (r / (r + H)) ** 2
if -2000 <= H <= 94000:
if -2000 <= H < 0:
H0, T0, b, p0 = -2000, 301.15, -0.0065, 127774
elif 0 <= H < 11000:
H0, T0, b, p0 = 0, 288.15, -0.0065, 101325
elif 11000 <= H < 20000:
H0, T0, b, p0 = 11000, 216.65, 0, 22632
elif 20000 <= H < 32000:
H0, T0, b, p0 = 20000, 216.65, 0.0010, 5474.87
elif 32000 <= H < 47000:
H0, T0, b, p0 = 32000, 228.65, 0.0028, 868.014
elif 47000 <= H < 51000:
H0, T0, b, p0 = 47000, 270.65, 0, 110.906
elif 51000 <= H < 71000:
H0, T0, b, p0 = 51000, 270.65, -0.0028, 66.9384
elif 71000 <= H < 85000:
H0, T0, b, p0 = 71000, 214.65, -0.0020, 3.95639
elif 85000 <= H <= 94000:
H0, T0, b, p0 = 85000, 186.65, -0.0020, 0.37338
T = T0 + b * (H - H0)
a = 20.046796 * math.sqrt(T)
if b != 0:
p = 10 ** (math.log10(p0) - gc * math.log10((T0 + b * (H - H0)) / T0) / (b * Rg))
else:
p = 10 ** (math.log10(p0) - gc * 0.434294 * (H - H0) / (Rg * T))
ro = p / (Rg * T)
print(f*H: {H}*)
print(f*T: {T}*)
print(f*p: {p}*)
print(f*ro: {ro}*)
print(f*a: {a}*)
print(f*g: {g}*)
else:
print(*Вышли из диапазона*)
# расчет траектории
class Atmos:
def __init__(self, a, ro, p, g, T):
self.a = a
self.ro = ro
self.p = p
self.g = g
self.T = T
def vozdux(h):
return Atmos(325.792, 0.845567, 64106.4, 9.79525, 264.114)
# Глобальные параметры
nza = 16
h = 2821
v0 = 479
t0 = 0
psi0 = 0
x0 = 0
z0 = 0
P0 = 24914
Sm = 0.425
Sa = 0.16
poN = 101325
t_ayt = 2.34
PI = math.pi
k = 1.42
def intercR(a):
max_mach = [1.4, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5]
cR = [0.0391, 0.0345, 0.0306, 0.0276, 0.0254, 0.0236, 0.0224, 0.0216, 0.0214, 0.0210, 0.0207]
cRa = 0.01
M = a
for i in range(10):
if max_mach[i] <= M < max_mach[i + 1]:
cRa = cR[i] + ((M - max_mach[i]) * (cR[i + 1] - cR[i]) / (max_mach[i + 1] - max_mach[i])
return cRa
def interCa(alf, M):
alfs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20]
ca_1 = [0.0462, 0.0478, 0.0500, 0.0525, 0.0573, 0.0620, 0.0697, 0.0770, 0.0867, 0.0956,
0.1069, 0.1183, 0.1268, 0.1397, 0.1533, 0.1678, 0.1830, 0.2145, 0.2367]
ca_5 = [0.0310, 0.0320, 0.0330, 0.0350, 0.0380, 0.0410, 0.0440, 0.0490, 0.0540, 0.0600,
0.0660, 0.0745, 0.0819, 0.0913, 0.1018, 0.1131, 0.1251, 0.1540, 0.1835]
Cxa = 0
for i in range(18):
if alfs[i] <= alf < alfs[i + 1]:
c_14 = ca_1[i] + (alf - alfs[i]) * (ca_1[i + 1] - ca_1[i]) / (alfs[i + 1] - alfs[i])
c_5 = ca_5[i] + (alf - alfs[i]) * (ca_5[i + 1] - ca_5[i]) / (alfs[i + 1] - alfs[i])
Cxa = (c_14 + (M - 1.4) * (c_5 - c_14) / (5 - 1.4))
return Cxa
def Max(V, param):
return V / param.a
def nRalf(P, cR, M, A, m, param):
return (P * (PI / 180) + cR * M**2 * A) / (m * param.g)
def alfp(nza, nR):
return (abs(nza) + 2) / nR
def dV_dt(m, M, Cxa, P, A):
return (1 / m) * (P - Cxa * M**2 * A)
def dpsi_dt(nza, V, param):
return (-param.g * nza / V)
def dx_dt(V, psi):
return V * math.cos(psi)
def dz_dt(V, psi):
return (-V * math.sin(psi))
def mass(t):
m0, dm = 125, 00
return m0 - dm * t
def calculate_trajectory():
param = vozdux(h)
A = (param.ro * param.a**2 * Sm / 2)
P = P0 + Sa * (poN - param.p)