【发布时间】:2020-08-23 18:22:59
【问题描述】:
我正在尝试计算以下积分
使用 scipy,使用以下程序:
def E(z):
result = 1/np.sqrt(Om*(1 + z)**3 + Ode + Ox*(1 + z)**2)
return result
def r(z, E):
result, error = quad(E, 0, z) # integrate E(z) from 0 to z
return result
z 是自变量,而 Om Ode 和 Ox 是简单的常量(之前已分配)。 然后当我尝试调用该函数时:
z = np.linspace(1e-3, 4, 300)
plt.plot(z, r(z))
我得到了错误
flip, a, b = b < a, min(a, b), max(a, b)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any()
or a.all()
有什么问题? scipy.quad 是否无法集成到变量? 非常感谢您的帮助
【问题讨论】:
-
您能否为您的客户提供样本值?
-
您将
numpy数组提供给scipy.integrate.quad,但它只接受float。 -
Om = 0.32 Ode = 0.68 Ox = 0
-
没错!那么我怎样才能将一个浮点数传递给 quad,但仍然获得一个函数而不仅仅是一个数字呢?
-
你可以这样做
vals = [r(zi,E) for zi in z](虽然不确定这是否是最有效的方式)
标签: python variables scipy integral quad