用Python绘制一个仿黑洞图像

作者:微小冷 时间:2021-10-03 03:07:57 

简介

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

用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绘制一个仿黑洞图像

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

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

来源:https://blog.csdn.net/m0_37816922/article/details/129064642

标签:Python,仿黑洞,图像
0
投稿

猜你喜欢

  • python密码学对称和非对称密码教程

    2023-06-19 15:56:59
  • Oracle DECODE函数语法使用介绍

    2023-07-17 12:44:22
  • python  Matplotlib绘图直线,折线,曲线

    2023-01-12 13:44:09
  • Python学习小技巧总结

    2021-09-21 09:28:49
  • python实现简单登陆流程的方法

    2021-01-30 00:48:24
  • 完美处理python与anaconda环境变量的冲突问题

    2023-01-11 07:37:31
  • 解决pycharm安装后代码区不能编辑的问题

    2022-07-26 22:26:24
  • 关于python通过新建环境安装tfx的问题

    2022-06-28 19:47:21
  • sql无效字符 执行sql语句报错解决方案

    2023-06-24 19:47:45
  • django实现前后台交互实例

    2022-04-12 20:53:33
  • Python Pandas对缺失值的处理方法

    2021-03-18 19:38:55
  • 百度、谷歌和雅虎的近日LOGO

    2008-05-19 12:11:00
  • Access下如何使用通用对话框

    2008-11-20 16:41:00
  • pytorch 数据集图片显示方法

    2022-01-14 08:57:36
  • numpy 进行数组拼接,分别在行和列上合并的实例

    2021-06-28 00:06:40
  • Python 通过pip安装Django详细介绍

    2022-09-01 20:25:55
  • Python实现拷贝多个文件到同一目录的方法

    2021-09-03 20:56:25
  • 儿童学习python的一些小技巧

    2021-10-14 05:09:40
  • 关于php unset对json_encode的影响详解

    2023-07-06 08:33:52
  • 详解python发送各类邮件的主要方法

    2023-07-27 11:08:50
  • asp之家 网络编程 m.aspxhome.com