我正在用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)恒星应呈放射状分布在旋涡星系中。我只得到了武器的分配。
2)双臂应为蓝色我有一只胳膊是蓝色的,另一只胳膊是绿色的。
模拟之后,我需要旋转星系。任何有关这方面的帮助都是可观的。
**编辑:我用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()

输出:python - 在python中模拟对数螺旋星系-LMLPHP
您可能需要对变量进行一些修改,以便根据需要调整输出此外,正如评论中提到的,这不是真正的径向噪声。

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

10-10 16:45