scipy.integrate.

龙贝格#

scipy.integrate.romberg(function, a, b, args=(), tol=1.48e-08, rtol=1.48e-08, show=False, divmax=10, vec_func=False)[源代码][源代码]#

可调用函数或方法的Romberg积分。

自 1.12.0 版本弃用: 自 SciPy 1.12.0 起,此函数已被弃用,并将在 SciPy 1.15.0 中移除。请改用 scipy.integrate.quad

返回 function`(一个单变量函数)在区间 (`a, b) 上的积分。

如果 show 为 1,则将打印中间结果的三角形数组。如果 vec_func 为 True(默认是 False),则假设 function 支持向量参数。

参数:
函数可调用

待积分的函数。

a浮动

积分下限。

b浮动

积分上限。

返回:
结果浮动

积分的结果。

其他参数:
参数tuple, 可选

传递给函数的额外参数。args 中的每个元素都将作为单个参数传递给 func。默认是不传递额外参数。

tol, rtolfloat, 可选

所需的绝对和相对容差。默认值为 1.48e-8。

显示bool, 可选

是否打印结果。默认为 False。

divmaxint, 可选

外推的最大阶数。默认值为10。

vec_funcbool, 可选

func 是否处理数组作为参数(即,它是否是一个“向量”函数)。默认是 False。

参见

fixed_quad

固定顺序的高斯求积法。

quad

使用 QUADPACK 的自适应求积法。

dblquad

双重积分。

tplquad

三重积分。

romb

采样数据的积分器。

simpson

采样数据的积分器。

cumulative_trapezoid

采样数据的累积积分。

参考文献

示例

从0到1积分一个高斯函数并与误差函数进行比较。

>>> from scipy import integrate
>>> from scipy.special import erf
>>> import numpy as np
>>> gaussian = lambda x: 1/np.sqrt(np.pi) * np.exp(-x**2)
>>> result = integrate.romberg(gaussian, 0, 1, show=True)
Romberg integration of <function vfunc at ...> from [0, 1]
Steps  StepSize  Results
    1  1.000000  0.385872
    2  0.500000  0.412631  0.421551
    4  0.250000  0.419184  0.421368  0.421356
    8  0.125000  0.420810  0.421352  0.421350  0.421350
   16  0.062500  0.421215  0.421350  0.421350  0.421350  0.421350
   32  0.031250  0.421317  0.421350  0.421350  0.421350  0.421350  0.421350

在进行了33次函数评估后,最终结果是0.421350396475。

>>> print("%g %g" % (2*result, erf(1)))
0.842701 0.842701