本文简要介绍 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()
相关用法
- Python SciPy integrate.quad_explain用法及代码示例
- Python SciPy integrate.quadrature用法及代码示例
- Python SciPy integrate.quad用法及代码示例
- Python SciPy integrate.qmc_quad用法及代码示例
- Python SciPy integrate.cumulative_trapezoid用法及代码示例
- Python SciPy integrate.romberg用法及代码示例
- Python SciPy integrate.dblquad用法及代码示例
- Python SciPy integrate.simpson用法及代码示例
- Python SciPy integrate.solve_bvp用法及代码示例
- Python SciPy integrate.solve_ivp用法及代码示例
- Python SciPy integrate.newton_cotes用法及代码示例
- Python SciPy integrate.odeint用法及代码示例
- Python SciPy integrate.ode用法及代码示例
- Python SciPy integrate.romb用法及代码示例
- Python SciPy integrate.fixed_quad用法及代码示例
- Python SciPy integrate.tplquad用法及代码示例
- Python SciPy integrate.nquad用法及代码示例
- Python SciPy integrate.trapezoid用法及代码示例
- Python SciPy interpolate.make_interp_spline用法及代码示例
- Python SciPy interpolate.krogh_interpolate用法及代码示例
- Python SciPy interpolative.reconstruct_matrix_from_id用法及代码示例
- Python SciPy interpolate.InterpolatedUnivariateSpline用法及代码示例
- Python SciPy interpolate.BSpline用法及代码示例
- Python SciPy interpolative.reconstruct_interp_matrix用法及代码示例
- Python SciPy interpolate.LSQSphereBivariateSpline用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.integrate.quad_vec。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。