當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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