我正在研究一个模拟宇宙膨胀的代码,特别是我整合(使用scipy odeint)弗里德曼方程,以获得不同曲率的比例因子与时间的关系图。我的代码是:
import numpy as np
import matplotlib.pyplot as plt
import scipy as sp
from scipy.integrate import odeint
t_0 = 0.0004
a_0 = 0.001
omega_m = 1
omega_r = 0
omega_lambda = 0
omega_k = 1 - omega_lambda - omega_m - omega_r
H_0 = 1./13.799
def Friedmann(a, t):
dadt = H_0 * (((omega_m) * a**(-1)) + ((omega_r) * a**(-2)) + ((omega_lambda) * a**2) + (omega_k))**(1./2.)
return dadt
plt.rc('text', usetex=True)
plt.rc('font', family='serif')
fig, ax = plt.subplots(nrows=1,ncols=1)
for omega_k in np.linspace(-1, 1, 3):
t = np.linspace(t_0,50,200)
a = odeint(Friedmann, a_0, t)
a = np.array(a).flatten()
ax.plot(t,a)
line1, = plt.plot(t, a, 'b')
plt.xlabel('Time/Gyr')
plt.ylabel('Scale factor a')
plt.grid(True)
plt.axis([0,50,0,5])
plt.show()
This是我得到的情节。我试图得到一个情节,其中底部(浅蓝色)线向下循环并在t~43 Gyr处遇到x轴但我似乎无法得到这个(可能与积分有关)。
非常感谢任何帮助。