Python:在轴上绘制指数

时间:2018-03-23 06:23:00

标签: python math matplotlib ode exp

我目前正在编写一段代码来模拟状态参数w的暗能量方程随着比例因子a的演变。为了做到这一点,我正在解决一个由三个耦合的ODE组成的系统,但是所使用的导数是关于电子折叠N = ln(a)(为了简单起见,在代码x = wln(a) = t中)。我有以下代码:

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
import math

plt.rc('text', usetex=True)
plt.rc('font', family='serif')

def f(s,t):
p = 1.0
G = 1.0 + (1.0/p) 
xm = 0
x = s[0]
y = s[1]
z = s[2]
dxdt = (x - 1.0)*(3.0*(1.0 + x) - z*math.sqrt(3.0*(1.0 + x)*y))
dydt = -3.0*(x - xm)*y*(1.0 - y)
dzdt = -math.sqrt(3.0*(1.0 + x)*y)*(G - 1.0)*(z**2)
return [dxdt, dydt, dzdt]

t = np.linspace(0.0001,1,10000)
s0 = [-0.667,0.01,0.45]

s = odeint(f,s0,t)

plt.plot(t,s[:,0],'b-')
plt.grid(True)
plt.xlabel('e-foldings, N = ln(a)')
plt.ylabel('Equation of state parameter w')
plt.show()

给了我this plot

这很好用,但是我希望x轴以a而不是N = ln(a)为单位,但我无法弄清楚如何让它工作。我尝试将情节线更改为plt.plot(math.exp(t),s[:,0],'b-'),但我收到以下错误:

Traceback (most recent call last):
  File "/Users/bradleyaldous/propr2.py", line 26, in <module>
plt.plot(math.exp(t),s[:,0],'b-')
TypeError: only size-1 arrays can be converted to Python scalars
[Finished in 6.0s]

非常感谢任何帮助。

编辑:

我尝试在情节线中使用np.exp(),就像我使用

一样

0 个答案:

没有答案