gpt4 book ai didi

python - 在python中模拟对数螺旋星系

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:31 24 4
gpt4 key购买 nike

我正在使用 python 模拟对数旋涡星系。使用参数方程,

x= a*exp(b*theta)*cos(theta)y= a*exp(b*theta)*sin(theta)

我使用 numpy.random 获取星星的随机分布。示例代码如下。

import random
from math import *
from pylab import *
import numpy as np

n=100000
a= 1
b=0.6
th =np.random.randn(n)
x= a*exp(b*th)*cos(th)
y=a*exp(b*th)*sin(th)
x1 = a*exp(b*(th))*cos(th+ pi)
y1=a*exp(b*(th))*sin(th + pi)
plot(x,y,"*")
plot(x1, y1,"*")
show()

生成的图像如下所示 spiral galaxy with two arms

我需要:1) 恒星应该呈放射状分布在旋涡星系中。我只得到了 ARM 上的分布。2) 双臂应该是蓝色的。在这里,我有一只 ARM 是蓝色的,另一只 ARM 是绿色的。

模拟完之后,我需要旋转星系。任何与此相关的帮助都将不胜感激。

**编辑:我使用 plot(x1, y1,"b*")

将双臂设为蓝色

最佳答案

如果近似值足够好,请尝试在绘制点之前添加一些噪声。对于初学者,我将从 normal (Gaussian) distribution 开始.例如,这个调整后的版本:

import random
from math import *
from pylab import *
import numpy as np

n=1000
a=0.5
b=0.6
th=np.random.randn(n)
x=a*exp(b*th)*cos(th)
y=a*exp(b*th)*sin(th)
x1=a*exp(b*(th))*cos(th+pi)
y1=a*exp(b*(th))*sin(th+pi)

sx=np.random.normal(0, a*0.25, n)
sy=np.random.normal(0, a*0.25, n)
plot(x+sy,y+sx,"*")
plot(x1+sx, y1+sy,"*")

show()

给出此输出:enter image description here您可能需要稍微调整一下变量以根据您的需要调整输出。此外,如评论中所述,这不是真正的径向噪声。

关于python - 在python中模拟对数螺旋星系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38562144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com