本文簡要介紹 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。