温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何用Python绘制一个仿黑洞图像

发布时间:2023-02-24 17:39:12 来源:亿速云 阅读:74 作者:iii 栏目:开发技术

本篇内容主要讲解“如何用Python绘制一个仿黑洞图像”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用Python绘制一个仿黑洞图像”吧!

单位制

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

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

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

如何用Python绘制一个仿黑洞图像

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

如何用Python绘制一个仿黑洞图像

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

如何用Python绘制一个仿黑洞图像

观测绘图

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

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 xx负半轴

  • fb2 x xx正半轴

  • 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()

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

如何用Python绘制一个仿黑洞图像

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()

如何用Python绘制一个仿黑洞图像

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

到此,相信大家对“如何用Python绘制一个仿黑洞图像”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI