# 高度(Alt,m)から静温(Ts,K),静圧(Ps,kPa),密度(rho,kg/m^3),音速(a,m/s)を計算
# 適用範囲:Alt=0m~47000m
output_precision(5);
# ーーー定数ーーー
R=287.05287;
g=9.80665;
# ーーー入力ーーー
Alt=input("Input:Alt(m)=")
# ーーー計算ーーー
if(Alt<11000)
Ts=288.15-0.0065*Alt;
Ps=101.325*(Ts/288.15)^(-g/(R*(-0.0065)));
elseif(Alt<20000)
Ts=216.65;
Ps=22.632*exp(-g*(Alt-11000)/(R*216.65));
elseif(Alt<32000)
Ts=216.65+0.001*(Alt-20000);
Ps=5.4749*(Ts/216.65)^(-g/(R*0.001));
elseif(Alt<=47000)
Ts=228.65+0.0028*(Alt-32000);
Ps=0.86802*(Ts/228.65)^(-9.80665/(R*0.0028));
endif
#
a=340.294*sqrt(Ts/288.15);
rho=Ps*1000/(R*Ts);
# ーーー出力ーーー
disp("Output:Ts(K)=")
disp(Ts)
disp("Output:Ps(kPa)=")
disp(Ps)
disp("Output:rho(kg/m^3)=")
disp(rho)
disp("Output:a(m/s)=")
disp(a)
import math
# 高度(Alt,m)から静温(Ts,K),静圧(Ps,kPa),密度(rho,kg/m^3),音速(a,m/s)を計算
# 適用範囲:Alt=0m~47000m
# ーーー定数ーーー
R = 287.05287
g = 9.80665
# ーーー入力ーーー
alt_str = input("Input:Alt(m)=")
Alt = float(alt_str)
# ーーー計算ーーー
if Alt < 11000:
Ts = 288.15 - 0.0065 * Alt
Ps = 101.325 * (Ts / 288.15) ** (-g / (R * (-0.0065)))
elif Alt < 20000:
Ts = 216.65
Ps = 22.632 * math.exp(-g * (Alt - 11000) / (R * 216.65))
elif Alt < 32000:
Ts = 216.65 + 0.001 * (Alt - 20000)
Ps = 5.4749 * (Ts / 216.65) ** (-g / (R * 0.001))
elif Alt <= 47000:
Ts = 228.65 + 0.0028 * (Alt - 32000)
Ps = 0.86802 * (Ts / 228.65) ** (-9.80665 / (R * 0.0028))
else:
raise ValueError("高度が適用範囲(0m~47000m)を超えています。")
a = 340.294 * math.sqrt(Ts / 288.15)
rho = Ps * 1000 / (R * Ts)
# ーーー出力ーーー
# Octaveの output_precision(5) に合わせ、有効数字5桁(または小数点以下5桁など)で綺麗に整えて表示します
print(f"Output:Ts(K)=\n{Ts:.5g}")
print(f"Output:Ps(kPa)=\n{Ps:.5g}")
print(f"Output:rho(kg/m^3)=\n{rho:.5g}")
print(f"Output:a(m/s)=\n{a:.5g}")