画rotational-diagram

这段代码展示了如何运用Python的科学计算库(如numpy, astropy, scipy和matplotlib)进行光谱数据分析。作者首先定义了相关常数和函数,然后对一组能级数据进行对数转换并进行曲线拟合,以计算旋转温度。最后,计算并显示了柱密度,并绘制了拟合曲线和散点图。
摘要由CSDN通过智能技术生成
import numpy as np
import astropy as a
import astropy.units as u
import astropy.constants as c
from scipy import optimize
import matplotlib.pyplot as plt
plt.ion()

B = 24690.2
h = 6.626e-27     #erg/s
k = 1.38e-16      #erg/K
Tbg = 2.73        #K
nu = [356626.667, 356874.537, 345903.916, 345919.26, 344443.433, 344109.039, 342729.796, 343215.87]
mu = 0.899e-18
Eu = [727.82556, 717.88089, 332.6488, 459.43023, 451.22691, 419.39868, 227.47312, 1098.9015]
M = [63.246, 76.107, 181.02, 108.12, 146.69, 187.26, 232.87, 3.5619]
M_err = [1,1,1,1,1,0.25,1,1]
def f(x,p,t):
    return -x/t+p

y = []
for i in range(8):
    _y = np.log(3*k*M[i]*1e41/(8*12.943*nu[i]*(np.pi)**3))
    y.append(_y)
    
x = Eu
x_m = x[0:7]#[x[2],x[3],x[5]]#[x[2],x[3],x[5]]
y_m = y[0:7]#[y[2],y[3],y[5]]#[y[2],y[3],y[5]]
a,b = optimize.curve_fit(f, x_m, y_m, method='lm')
ylim = [30,50]
x1 = np.arange(200,1100)
y1 = -x1/a[1]+a[0]
plt.text(800,max(y)-0.4,"CH$_3$OH",fontsize=12)
plt.text(800,max(y)-0.8,"T$_{rot}$=%.2f (K)" %(a[1]),fontsize=12)
plt.plot(x1,y1)
plt.xlabel('E$_u$/k')
plt.ylabel(r'ln($\frac{3kW}{8 \pi^3 \nu S_{ij} \mu^2}$)')
column_density = np.exp(y[4]+Eu[4]/a[1])/1e19
plt.text(800,np.max(y)-1.2,"N=%.2f (10$^{19}$ cm$^{-2}$)" %(column_density),fontsize=12)
plt.scatter(x,y)
#plt.plot(x1,c='k')
#plt.text(x[0])
plt.savefig('fitting_1234567.pdf')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值