import math
import numpy as np
import pandas as pd
#τ(λ)
def tao_lambda(k,lam):
return 1-(k-1)*lam**2/(k+1)
def tao2lambda(k,tao):
return math.sqrt((1-tao)*(k+1)/(k-1))
#π(λ)
def pi_lambda(k,lam):
return tao_lambda(k,lam)**(k/(k-1))
def pi2lambda(k,pi):
return tao2lambda(k,pi**((k-1)/k))
#ε(λ)
def ep_lambda(k,lam):
return tao_lambda(k,lam)**(1/(k-1))
#q(λ)
def q_lambda(k,lam):
return lam*ep_lambda(k,lam)/ep_lambda(k,1)
#y(λ)
def y_lambda(k,lam):
return q_lambda(k,lam)/pi_lambda(k,lam)
def z_lambda(lam):
return lam+1/lam
def f_lambda(k,lam):
return (2/(k+1))**(1/(k-1))*q_lambda(k,lam)*z_lambda(lam)
def r_lambda(k,lam):
return pi_lambda(k,lam)/f_lambda(k,lam)
#K
def K(k,R):
return math.sqrt(k/R*(2/(k+1))**((k+1)/(k-1)))
#y(λ)算q
def q_m_y(k,R,lam,A,T_1,p):
return K(k,R)*p*A*y_lambda(k,lam)/math.sqrt(T_1)
#从Ma到λ
def Ma2lambda(Ma,k):
return Ma*math.sqrt((k+1)/(2+(k-1)*Ma**2))
def lambda2Ma(lam,k):
return lam*math.sqrt(2/((k+1)-(k-1)*lam**2))
#c_cr
def c_cr(k,R,T_1):
return math.sqrt((2*k*T_1*R)/(k+1))
def p2Ma(p_xing,pa,k):
return math.sqrt(2/(k-1)*((p_xing/pa)**((k-1)/k)-1))
def lambda2A(m_1,lam,k,R,T_1,p_1):
return m_1*math.sqrt(T_1)/K(k,R)/p_1/q_lambda(k,lam)
N=1000
N1=10
Ma_min=0.1
Ma_max=5
dMa=(Ma_max-Ma_min)/N
B=np.zeros([N,N1])
k=1.4
for i in range(0,N):
Ma=Ma_min+dMa*i
B[i,0]=Ma
lam=Ma2lambda(Ma,k)
B[i,1]=lam
B[i,2]=tao_lambda(k,lam)
B[i,3]=pi_lambda(k,lam)
B[i,4]=ep_lambda(k,lam)
B[i,5]=q_lambda(k,lam)
B[i,6]=y_lambda(k,lam)
B[i,7]=z_lambda(lam)
B[i,8]=f_lambda(k,lam)
B[i,9]=r_lambda(k,lam)
df=pd.DataFrame(B)
# 将DataFrame写入Excel文件
df.to_excel('output.xlsx', index=False, header=False) # 不保存索引和不写入默认的列名