当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy integrate.quad_vec用法及代码示例


本文简要介绍 python 语言中 scipy.integrate.quad_vec 的用法。

用法:

scipy.integrate.quad_vec(f, a, b, epsabs=1e-200, epsrel=1e-08, norm='2', cache_size=100000000.0, limit=10000, workers=1, points=None, quadrature=None, full_output=False, *, args=())#

vector-valued 函数的自适应集成。

参数

f 可调用的

Vector-valued 函数 f(x) 进行积分。

a 浮点数

初始点。

b 浮点数

最后一点。

epsabs 浮点数,可选

绝对的宽容。

epsrel 浮点数,可选

相对容差。

norm {‘max’, ‘2’},可选

用于误差估计的向量范数。

cache_size 整数,可选

用于 memory 的字节数。

limit float 或 int,可选

自适应算法中使用的子区间数的上限。

workers int 或 map-like 可调用,可选

如果工作人员是一个整数,部分计算是并行完成的,细分到这么多任务(使用multiprocessing.pool.Pool)。供应-1使用进程可用的所有内核。或者,提供 map-like 可调用对象,例如multiprocessing.pool.Pool.map用于并行评估总体。本次评价为workers(func, iterable).

points 列表,可选

附加断点列表。

quadrature {‘gk21’, ‘gk15’, ‘trapezoid’},可选

用于子区间的求积规则。选项:‘gk21’(Gauss-Kronrod 21 点规则)、‘gk15’(Gauss-Kronrod 15 点规则)、‘trapezoid’(复合梯形规则)。默认值:‘gk21’ 用于有限区间,‘gk15’ 用于(半)无限

full_output 布尔型,可选

返回一个额外的 info 字典。

args 元组,可选

传递给函数的额外参数(如果有)。

返回

res {浮点数,类似数组}

估计结果

err 浮点数

给定范数中结果的误差估计

info dict

仅在 full_output=True 时返回。信息字典。是具有以下属性的对象:

success bool

Whether integration reached target precision.

status int

Indicator for convergence, success (0), failure (1), and failure due to rounding error (2).

neval int

Number of function evaluations.

intervals ndarray, shape (num_intervals, 2)

Start and end points of subdivision intervals.

integrals ndarray, shape (num_intervals, …)

Integral for each interval. Note that at most cache_size values are recorded, and the array may contains nan for missing items.

errors ndarray, shape (num_intervals,)

Estimated integration error for each interval.

注意

该算法主要遵循QUADPACK的DQAG*算法的实现,实现全局误差控制和自适应细分。

这里的算法与 QUADPACK 方法有一些不同:

该算法不是一次细分一个区间,而是一次细分 N 个误差最大的区间。这使得集成的(部分)并行化成为可能。

先细分“next largest”区间的逻辑没有实现,我们依靠上面的扩展来避免只关注“small”区间。

未使用 Wynn epsilon 表外推(QUADPACK 将其用于无限间隔)。这是因为这里的算法应该在 vector-valued 函数上工作,在用户指定的规范中,并且 epsilon 算法在这种情况下的扩展似乎没有得到广泛同意。对于max-norm,可以使用 elementwise Wynn epsilon,但我们在这里不这样做,希望 epsilon 外推主要在特殊情况下有用。

参考

[1] R. Piessens, E. de Doncker, QUADPACK (1983)。

例子

我们可以计算 vector-valued 函数的积分:

>>> from scipy.integrate import quad_vec
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> alpha = np.linspace(0.0, 2.0, num=30)
>>> f = lambda x: x**alpha
>>> x0, x1 = 0, 2
>>> y, err = quad_vec(f, x0, x1)
>>> plt.plot(alpha, y)
>>> plt.xlabel(r"$\alpha$")
>>> plt.ylabel(r"$\int_{0}^{2} x^\alpha dx$")
>>> plt.show()
scipy-integrate-quad_vec-1.png

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.integrate.quad_vec。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。