广告位联系
返回顶部
分享到

用Python绘制一个仿黑洞图像

python 来源:互联网 作者:佚名 发布时间:2023-02-26 16:23:01 人浏览
摘要

黑洞图像大家都知道,毕竟前几年刚发布的时候曾火遍全网,甚至都做成表情包了。 问题在于,凭什么认为这就是黑洞的照片,而不是一个甜甜圈啥的给整模糊了得到的呢?有什么理论

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

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

单位制

利用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,则可得到距离单位的换算关系

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

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

观测绘图

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

1

2

3

4

5

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 发射强度

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

1

2

3

4

5

6

7

8

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,则可得到强度分布图

1

2

3

4

5

from einsteinpy.plotting import ShadowPlotter

obj = ShadowPlotter(shadow=shadow, is_line_plot=False)

obj.plot()

obj.show()

plt.show()

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


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/m0_37816922/article/details/129064642
相关文章
  • pandas读取Excel批量转换时间戳
    一、安装 1 pip install pandas 如果出报错,不能运行,可以安装 1 pip install xlrd 二、 代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import pandas as pd import
  • 用Python绘制一个仿黑洞图像

    用Python绘制一个仿黑洞图像
    黑洞图像大家都知道,毕竟前几年刚发布的时候曾火遍全网,甚至都做成表情包了。 问题在于,凭什么认为这就是黑洞的照片,而不是一个
  • python __init__与 __new__的区别
    一、构造函数 __init__ 与__new__ __new__ 作用: 创建对象,并分配内存 __init__ 作用: 初始化对象的值 注意: 1、与java相比,java只有一个构造器
  • 基于Python实现绘制一个足球

    基于Python实现绘制一个足球
    前情提要 如果想优雅地绘制一个足球,那首先需要绘制正二十面体:用Python绘制正二十面体 其核心代码为 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1
  • 关于keras中卷积层Conv2D的学习记录

    关于keras中卷积层Conv2D的学习记录
    keras中卷积层Conv2D的学习 关于卷积的具体操作不细讲,本文只是自己太懒了不想记手写笔记。 由于自己接触到的都是图像 处理相关的工作,
  • pycharm中执行.sh文件的方法

    pycharm中执行.sh文件的方法
    背景 在运行神经网络相关的实验的时候,通常要跑很多次实验,而每次实验运行时间很久,每运行完一次就需要手动再运行下一次实验。(
  • pycharm2022.2远程连接服务器调试代码实现

    pycharm2022.2远程连接服务器调试代码实现
    目的: 同步本地和服务器的全部或者部分文件 本地debug,服务器跑实验 需要条件: 服务器上已经创建好虚拟环境 你本地已经安装好pychar
  • numpy.unique()使用方法介绍
    numpy.unique() 函数接受一个数组,去除其中重复元素,并按元素由小到大返回一个新的无元素重复的元组或者列表。 1. 参数说明 1 numpy.unique
  • JWT的原理及使用
    目录JWT的原理及使用一、什么是JWT?二、签发认证流程三、使用方法1.设置登录接口2.设置过期事件3.定制返回格式4.配置认证类和权限类5.写
  • NumPy迭代数组的实现的介绍
    NumPy中引入了 nditer 对象来提供一种对于数组元素的访问方式。 一、单数组迭代 1. 使用 nditer 访问数组的每个元素 1 2 3 4 5 6 7 8 9 10 11 12 13 1
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计