我想在同一个图形上绘制不同世界模型的“增长因子”,但我正在努力寻找一种方法来实现,而不必为每个变量定义不同的函数。在
这是我目前的代码,它确实产生了我想要的情节,但这是一个非常冗长的方法。在
注意:我已经为我想使用的变量(Om和Ov)加上M或V作为前缀,以及Lambda控制的版本。在
import numpy as np
import matplotlib.pyplot as plt
#redshift
z = np.linspace(0,20,1001)
#Cosmo Density Parameters
#Matter Dominated Universe
MOm = 0.9995
MOv = 0.0005
def MDfunc(z,MOm,MOv):
A = 5/2
B = MOm/(1+z)
C = MOm**(4/7) - MOv
D = (1-MOm/2)*(1+MOv/70)
E = A * ( B / ( C+D ) )
return E
MD = MDfunc(z,MOm,MOv)
#Current Epoch
Om = 0.3
Ov = 0.7
def Dfunc(z,Om,Ov):
A = 5/2
B = Om/(1+z)
C = Om**(4/7) - Ov
D = (1-Om/2)*(1+Ov/70)
E = A * ( B / ( C+D ) )
return E
D = Dfunc(z,Om,Ov)
#Lambda Dominated
VOm = 0.0005
VOv = 0.9995
def VDfunc(z,VOm,VOv):
A = 5/2
B = VOm/(1+z)
C = VOm**(4/7) - VOv
D = (1-VOm/2)*(1+VOv/70)
E = A * ( B / ( C+D ) )
return E
VD = VDfunc(z,VOm,VOv)
#Growth Factor - D+
plt.figure(num=1)
plt.plot(z,D,'r',lw=2,label='Current Epoch')
plt.plot(z,MD,'g',lw=2,label='Matter Dominated')
plt.plot(z,VD,'b',lw=2,label='Lambda Dominated')
plt.legend(loc=0)
理想情况下,我希望能够将不同的宇宙参数作为一个数组或元组,但是遇到了错误。像这样的东西是理想的:
^{pr2}$但我不知道如何实施。在
任何帮助都将不胜感激,谢谢。在
你是从python开始的吗?在
据我所知,你想这样做:
这将输出:
^{pr2}$我说得对吗?在
相关问题 更多 >
编程相关推荐