用Python绘制一个仿黑洞图像
作者:微小冷 发布时间:2021-10-03 03:07:57
简介
黑洞图像大家都知道,毕竟前几年刚发布的时候曾火遍全网,甚至都做成表情包了。
问题在于,凭什么认为这就是黑洞的照片,而不是一个甜甜圈啥的给整模糊了得到的呢?有什么理论依据吗?
单位制
利用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,则可得到距离单位的换算关系
同理,根据万有引力常数可得到质量单位的换算关系
所以质量和距离可以分别表示为
观测绘图
尽管我们在地球上观测这个黑洞,但由于相机镜头等因素,实际上肯定不能用这么大的尺度来观测,所以稍微选一个差不多的距离就好
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()
结果如下图所示,果然中间凹了下去
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。本来合计着把这篇文章的公式啥的粘过来解读一下,但考虑到贴在这也没人看,想想还是算了。
来源:https://blog.csdn.net/m0_37816922/article/details/129064642


猜你喜欢
- 本文实例为大家分享了python字符串的操作方法,供大家参考,具体内容如下1.去除空格str.strip():删除字符串两边的指定字符,括号
- 本文详细讲述了MYSQL日志的正确删除方法。分享给大家供大家参考,具体如下:1.查找:MySQL> show binary logs;
- 在使用Django自带的admin后台的时候,他提供了一些默认的指令可以对数据进行操作, 比如批量删除,修改等 同样的我们也可以
- 一、问题描述 筛选出多个txt文件中需要的数据二、数据准备这是我自己建立的要处理的文件,里面是随意写的一些数字和字母三、程序编写import
- 比如有两个模块,一个aa.py,一个bb.py 代码如下:aa.py:#encoding:utf-8import bba=1bb.py:#e
- 最近在做一个金额查询,验证的时候总是出现很多问题,如输入-号后,input框里是没有了,但是在model里还是绑定了,提交的时候就会报错,真
- 以下内容来自CHATGPT,其中PGADMIN经实验,有效1、在MYSQL中使用:可以使用GROUP_CONCAT函数来实现相同名称的多行字
- 本文实例讲述了Python基于贪心算法解决背包问题。分享给大家供大家参考,具体如下:贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在
- 为什么说浮点数缺乏精确性?在开始本文之前,让我们先来谈谈浮点数为什么缺乏精确性的问题,其实这不是Python的问题,而是实数的无限精度跟计算
- 以控制抖音app滑动并获取抖音短视频发布者昵称和点赞数等信息为例:1. 安装appium-python-client模块并启动已安装好的环境
- 什么是模式前阵子准备期末考试,劳神又伤身的,实在闲不得空来更新文章,今天和大家说说javascript中的设计模式。首先呢,我们需要知道的是
- 优化前:select count(t.id) from test t where t.status = 1 and t.id n
- MySQL有时候忘记了root密码是一件伤感的事。这里提供Windows 和 Linux 下的密码重置方法。Windows:1.以系统管理员
- 1.命名规范1.库名、表名、字段名必须使用小写字母,并采用下划线分割。a)MySQL有配置参数lower_case_table_names,
- 本文实例讲述了python计算牛顿迭代多项式的方法。分享给大家供大家参考。具体实现方法如下:''' p = eval
- dom0级事件<a href="#" id="hash" onclick="fn()
- 问:如何自己制作验证码的head.fix和body.fix文件答:1 图象绘制完成后,将文件存为24位位图格式的BMP图象文件。 2 去除前
- mark标记在实际工作中,我们要写的自动化用例会比较多,也不会都放在一个py文件中,如果有几十个py文件,上百个方法,而我们只想运行当中部分
- 我们在编写 Javascript 时,Debug 是很痛苦的过程,而且有些语法问题虽使用 Firebug 能很快定位,但毕竟影响效率。这里有
- 这篇文章主要介绍了Python中join()函数多种操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值