用Python搓一个黑洞

文章介绍了如何使用Python库einsteinpy在几何单位制下模拟黑洞的吸积盘发射强度,以此来理解和验证对黑洞照片的理论依据。通过设定质量、距离的单位转换,模拟人马座A*黑洞,并展示不同距离的发射强度图,证明了观测到的图像与理论预测相吻合。
摘要由CSDN通过智能技术生成

简介

黑洞图像大家都知道,毕竟前几年刚发布的时候曾火遍全网,甚至都做成表情包了。

在这里插入图片描述

问题在于,凭什么认为这就是黑洞的照片,而不是一个甜甜圈啥的给整模糊了得到的呢?有什么理论依据吗?

单位制

利用einsteinpy模块中的Shadow类,可以实现黑洞吸积盘的发射强度,换言之,用理论模拟一下黑洞的照片应该是什么样子的。

22年5月份发布的是人马座A*的照片,这个"黑洞"的质量为 8.26 × 1 0 36 8.26\times10^{36} 8.26×1036kg,距离地球26673光年。

根据源码推测,einstenipy中采用几何单位制,光速和万有引力常数设为1, 即 c = G = 1 c=G=1 c=G=1。现设几何单位制下的时间、距离以及质量单位为 S , M , K G S, M, KG S,M,KG,国际制单位为 s , m , k g s, m, kg s,m,kg,若以时间单位秒为基本单位,即 1 s = 1 S 1s=1S 1s=1S,由于几何单位制下光速 c = 1 M / S c=1M/S c=1M/S,则可得到距离单位的换算关系

c = 3 × 1 0 8 m / s c = 1 M / S 1 s = 1 S → 1 M = 3 × 1 0 8 m \begin{aligned} c&=3\times 10^8 m/s\\ c&=1M/S\\ 1s&=1S \end{aligned}\to 1M=3\times10^8m cc1s=3×108m/s=1M/S=1S1M=3×108m

同理,根据万有引力常数可得到质量单位的换算关系

G = 6.67 × 1 0 − 11 m 3 k g − 1 s − 2 G = 1 M 3 K G − 1 S − 2 1 S = 1 s 1 M = 3 × 1 0 8 m → 1 K G − 1 = 0.24 × 1 0 − 35 k g − 1 1 k g = 0.24 × 1 0 − 35 K G \begin{aligned} G&=6.67\times10^{-11}m^3kg^{-1}s^{-2}\\ G&=1M^3KG^{-1}S^{-2}\\ 1S&=1s\\ 1M&=3\times10^8m \end{aligned}\to \begin{aligned} 1KG^{-1}=0.24\times10^{-35}kg^{-1}\\ 1kg=0.24\times10^{-35}KG \end{aligned} GG1S1M=6.67×1011m3kg1s2=1M3KG1S2=1s=3×108m1KG1=0.24×1035kg11kg=0.24×1035KG

所以质量和距离可以分别表示为

8.26 × 1 0 36 k g = 1.982 K G 26673 lyr ⁡ = 2.52 × 1 0 20 m = 8.4 × 13 M 8.26\times10^{36}kg=1.982KG\\ 26673\operatorname{lyr}=2.52\times10^{20}m=8.4\times^{13}M 8.26×1036kg=1.982KG26673lyr=2.52×1020m=8.4×13M

观测绘图

尽管我们在地球上观测这个黑洞,但由于相机镜头等因素,实际上肯定不能用这么大的尺度来观测,所以稍微选一个差不多的距离就好

import astropy.units as u
from einsteinpy.rays import Shadow
mass = 1.98 * u.kg         
fov  = 100 * u.km
shadow = Shadow(mass=mass, fov=fov, n_rays=1000)

shadow就是其发射模型,其内部用于绘图的主要成员有

  • fb1 x x x负半轴
  • fb2 x x x正半轴
  • intensity 发射强度

下面绘制一下不同距离处的发射强度

import matplotlib.pyplot as plt
plt.plot(shadow.fb1, shadow.intensity, "r")
plt.plot(shadow.fb2, shadow.intensity, "r")
plt.xlabel("Impact Paramter (b)")
plt.ylabel("Intensity (Emissivity)")
plt.title("Intensity Plot")
plt.grid()
plt.show()

结果如下图所示,果然中间凹了下去

在这里插入图片描述

einsteinpy内嵌了绘图函数,通过ShadowPlotter(shadow, is_line_plot=True)可以更加方便地绘制上述图像,如果将is_line_plot设为False,则可得到强度分布图

from einsteinpy.plotting import ShadowPlotter
obj = ShadowPlotter(shadow=shadow, is_line_plot=False)
obj.plot()
obj.show()
plt.show()

在这里插入图片描述

这样一看是不是觉得和前面的那个甜甜圈确有相似之处。

这个模型是根据Cosimo Bambi的文章编写的,论文地址在这:Cosimo Bambi, 10.1103/PhysRevD.87.107501。本来合计着把这篇文章的公式啥的粘过来解读一下,但考虑到贴在这也没人看,想想还是算了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微小冷

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值