使用向量(而不是 for 循环)在多个值上与 python 的四元函数集成并改变边界

问题描述 投票:0回答:2

我有一个问题,原则上可以用以下示例来说明:

a、b 和 c 是常数。 f(x) 生成我的被积函数。

def f(x,a,b,c):
    return (ax**2+bx+c)

我想计算从某个下限到固定上限的积分。但我的下限改变了。换句话说,下限是一个值数组。

example lower_limit_array=np.arange(0.1,5,0.1)
upper_limit_fixed=100

我知道这可以使用 for 循环来完成。

例如: 结果数组=[]

for i in lower_limit_array:
    result,error=integrate.quad(f,i,upper_limit_fixed)
    results_array.append(result)

但我想通过并行化/矢量化来加快速度。我认为这可以通过 np.vectorize 和quad 函数或quad_vec 的组合来实现。我只是还不确定到底是怎么做的。我都尝试过,但出现错误。

有人知道该怎么做吗?谢谢!

python scipy vectorization numerical-integration quad
2个回答
1
投票

您有一个函数想要在多个时间间隔内进行积分。数值工具箱(如 SciPy)不适用于此用例。幸运的是,您可以更改变量并将所有函数转换为在同一域(例如 (0, 100))上运行的

one
函数,并具有向量值输出。然后,您可以使用
quad_vec
集成该函数(或者如果您需要更高级的东西,请使用 quadpy。--我是quadpy 的作者。)


0
投票

您能详细说明一下变量的变化吗?

© www.soinside.com 2019 - 2024. All rights reserved.