Python:scipy odeint情节不顺畅

时间:2018-02-23 11:08:33

标签: python numpy scipy odeint

我正在编写一段代码来绘制宇宙的膨胀(使用弗里德曼方程),我需要平滑的情节,但我得到了一些扭曲的情节。我想也许这与我在np.linspace函数中使用的步骤有关(可能在集成中)但是当我想要平滑它时,扭结仍然是可见的。我的代码是:

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 = 0.3089
omega_r = 0
omega_lambda = 0.6911
omega_k = 1 - omega_lambda - omega_m - omega_r
H_0 = 1./13.7

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

t = np.linspace(t_0,40)
a = odeint(Friedmann, a_0, t)
a = np.array(a).flatten()

plt.plot(t,a,'b')
plt.xlabel('Time')
plt.ylabel('Scale factor')
plt.grid(True)
plt.axis([0,40,0,6])
plt.show()

我得到的情节如下

generated plot

在情节的左下角可以看到扭结。非常感谢任何帮助。

0 个答案:

没有答案