我在 python 中有一个函数(也使用 scipy 和 numpy)定义为
import numpy as np
from scipy import integrate
LCDMf = lambda x: 1.0/np.sqrt(0.3*(1+x)**3+0.7)
我想将它从 0 整合到 numpy 数组中的每个元素z = np.arange(0,100)
我知道我可以为每个元素编写一个循环,像这样迭代
an=integrate.quad(LCDMf,0,z[i])
但是,我想知道是否有一种更快、更有效(更简单)的方法来对每个 numpy 元素执行此操作。
您可以将问题重新表述为 ODE。
The odeint然后可以使用函数来计算F(z)
对于一系列z
.
>>> scipy.integrate.odeint(lambda y, t: LCDMf(t), 0, [0, 1, 2, 5, 8])
array([[ 0. ], # integrate until z = 0 (must exist, to provide initial value)
[ 0.77142712], # integrate until z = 1
[ 1.20947123], # integrate until z = 2
[ 1.81550912], # integrate until z = 5
[ 2.0881925 ]]) # integrate until z = 8
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)