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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。