返回向量的积分

时间:2018-01-08 22:07:15

标签: python numpy scipy

我正在尝试创建一个函数,它返回一个向量,然后逐个元素地集成它。这就是我到目前为止所拥有的

def int1(b):
    j = 1
    for q in range(0,len(alpha)):
        j = j + alpha[q]*(b**q)
    p = np.exp(-j);
    inu = np.zeros(len(alpha))
    for q in range(0,len(alpha)):
        inu[q] = np.exp(-j)*(b**q)
    return inu

如果输入类似

的内容,则此功能正常
print int1(0.1)[2]

然而

print sp.integrate.quad(int1(b)[2], 1e-16, 1, epsrel=1e-20)[0]

不起作用,或者我能想到的任何合理的变体。我怎样才能让它发挥作用? 或者我得到TypeError:'function'对象没有属性' getitem '如果我省略b或ValueError:如果我有它,则给出无效的可调用。

1 个答案:

答案 0 :(得分:0)

quad的第一个参数必须是一个函数,可以调用它。你可以放(0.1)之后的东西,这将是有道理的。 int1(b)[2](0.1)有意义吗?对我而言。

表单quad(int1, 1e-16, 1, epsrel=1e-20)[0]在语法上是正确的,但quad仅允许该函数的标量输出,因此它不适用于您的int1。相反,您需要创建一个使用int1的新函数,但之后只返回其中一个组件。不要在某处使用另一个def,最好使用lambda syntax在需要的地方创建这样的功能:

quad(lambda b: int1(b)[2], 1e-16, 1, epsrel=1e-20)[0]

这说:取b,将其放在int1中,保留返回数组的index-2条目。