scipy.integrate.romberg

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

可调用函数或方法的Romberg集成。

返回以下各项的积分 function (一个变量的函数)在区间内 (ab )。

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

参数
function可调用

待集成的功能。

a浮动

积分下限。

b浮动

积分上限。

退货
results浮动

整合的结果。

其他参数
args元组,可选

要传递给函数的额外参数。的每个元素 args 将作为单个参数传递给 func 。默认情况下不传递任何额外的参数。

Tol,rtol浮动,可选

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

show布尔值,可选

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

divmax整型,可选

最大外推次数。默认值为10。

vec_func布尔值,可选

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

参见

fixed_quad

固定阶高斯求积。

quad

使用故障诊断灯的自适应正交。

dblquad

二重积分。

tplquad

三重积分。

romb

采样数据的积分器。

simpson

采样数据的积分器。

cumulative_trapezoid

采样数据的累积积分。

ode

ODE积分器。

odeint

ODE积分器。

参考文献

1

“龙伯格方法”(Romberg‘s Method)https://en.wikipedia.org/wiki/Romberg%27s_method

示例

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

>>> from scipy import integrate
>>> from scipy.special import erf
>>> 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