用 Astropy 进行单位换算
有公式如下,如何得到右边那个等式呢?
$$M ( r_{h,3D} ) \simeq \frac{4 \sigma_{\rm{los}}^{2} r_{h}}{G} =0.93 \left( \frac{\sigma_{\rm{los}}}{km/s} \right)^{2} \frac{r_{h}}{kpc} \times 10^{6} M_{\odot}$$
上 astropy
。astropy.units
包含了物理和天文中的常用单位,而 astropy.costants
有各种常数。
两行式子就解决啦,一行导入,一行计算。很简单吧?
>>> from astropy import constants as c, units as u
>>> (4*(u.km/u.s)**2*u.kpc/c.G).to(1e6*u.solMass)
<Quantity 0.9297755651520015 1e+06 solMass>
再来一个例子,以 1km/s 的速度走 1Gyr,能走多远?
>>> (1*u.km/u.s*u.Gyr).to(u.kpc)
<Quantity 1.0227121650537077 kpc>
嗯,差不多正好 1kpc 呢。
注意了,用 to
转换前如果带数字或者物理学常数,返回的结果是一个物理量;否则就是纯粹的单位换算,结果不带量纲。比如下面这样:
>>> (u.km/u.s*u.Gyr).to(u.kpc)
1.0227121650537077
- 上一篇: 样条函数与插值
- 下一篇: Scipy Minimize 使用