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


Python SciPy integrate.tplquad用法及代碼示例

本文簡要介紹 python 語言中 scipy.integrate.tplquad 的用法。

用法:

scipy.integrate.tplquad(func, a, b, gfun, hfun, qfun, rfun, args=(), epsabs=1.49e-08, epsrel=1.49e-08)#

計算三重(定)積分。

x = a..by = gfun(x)..hfun(x)z = qfun(x,y)..rfun(x,y) 返回 func(z, y, x) 的三重積分。

參數

func 函數

一個 Python 函數或方法,包含至少三個按順序 (z, y, x) 的變量。

a, b 浮點數

x 中積分的極限:a < b

gfun 函數或浮點數

y 中的下邊界曲線,它是一個函數,采用單個浮點參數 (x) 並返回浮點結果或表示恒定邊界曲線的浮點數。

hfun 函數或浮點數

y 中的上邊界曲線(與 gfun 的要求相同)。

qfun 函數或浮點數

z 中的下邊界表麵。它必須是一個函數,它以 (x, y) 的順序接受兩個浮點數,並返回一個浮點數或一個浮點數,指示一個恒定的邊界表麵。

rfun 函數或浮點數

z 中的上邊接口。 (與qfun的要求相同。)

args 元組,可選

傳遞給 func 的額外參數。

epsabs 浮點數,可選

絕對容差直接傳遞到最裏麵的一維正交積分。默認值為 1.49e-8。

epsrel 浮點數,可選

最裏麵的一維積分的相對容差。默認值為 1.49e-8。

返回

y 浮點數

結果積分。

abserr 浮點數

誤差的估計。

注意

為了獲得有效的結果,積分必須收斂;不保證發散積分的行為。

QUADPACK關卡例程的詳細信息

quad 調用 FORTRAN 庫 QUADPACK 中的例程。本節提供有關調用每個例程的條件的詳細信息以及每個例程的簡短說明。對於每個集成級別,qagse 用於有限限製,或者使用 qagie,如果任一限製(或兩者!)都是無限的。下麵提供了 [1] 中每個例程的簡短說明。

察格色

是一個基於全局自適應區間細分與外推法相結合的積分器,它將消除幾種類型的被積函數奇異性的影響。

卡吉

處理無限間隔內的積分。無限範圍映射到有限區間,隨後應用與 QAGS 中相同的策略。

參考

[1]

羅伯特·皮森斯; de Doncker-Kapenga,伊莉斯;克裏斯托夫·W·尤伯胡貝爾;大衛·卡哈納 (1983)。 QUADPACK:用於自動集成的子程序包。 Springer-Verlag。 ISBN 978-3-540-12553-2。

例子

計算 x * y * z 的三重積分,其中 x 範圍從 1 到 2,y 範圍從 2 到 3,z 範圍從 0 到 1。即

>>> import numpy as np
>>> from scipy import integrate
>>> f = lambda z, y, x: x*y*z
>>> integrate.tplquad(f, 1, 2, 2, 3, 0, 1)
(1.8749999999999998, 3.3246447942574074e-14)

計算\(\int^{x=1}_{x=0} \int^{y=1-2x}_{y=0} \int^{z=1-x-2y}_{z=0} x y z \,dz \,dy \,dx\) 。筆記:qfun/rfun按 (x, y) 的順序接受參數,即使f按 (z, y, x) 的順序接受參數。

>>> f = lambda z, y, x: x*y*z
>>> integrate.tplquad(f, 0, 1, 0, lambda x: 1-2*x, 0, lambda x, y: 1-x-2*y)
(0.05416666666666668, 2.1774196738157757e-14)

計算

>>> f = lambda z, y, x, a: a*x*y*z
>>> integrate.tplquad(f, 0, 1, 0, 1, 0, 1, args=(1,))
    (0.125, 5.527033708952211e-15)
>>> integrate.tplquad(f, 0, 1, 0, 1, 0, 1, args=(3,))
    (0.375, 1.6581101126856635e-14)

計算三維高斯積分,它是高斯函數 上的積分。也就是說,計算積分

>>> f = lambda x, y, z: np.exp(-(x ** 2 + y ** 2 + z ** 2))
>>> integrate.tplquad(f, -np.inf, np.inf, -np.inf, np.inf, -np.inf, np.inf)
    (5.568327996830833, 4.4619078828029765e-08)

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.integrate.tplquad。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。