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)[source]#

Romberg integration of a callable function or method.

Deprecated since version 1.12.0: This function is deprecated as of SciPy 1.12.0 and will be removed in SciPy 1.15.0. Please use scipy.integrate.quad instead.

Returns the integral of function (a function of one variable) over the interval (a, b).

If show is 1, the triangular array of the intermediate results will be printed. If vec_func is True (default is False), then function is assumed to support vector arguments.

Parameters:
functioncallable

Function to be integrated.

afloat

Lower limit of integration.

bfloat

Upper limit of integration.

Returns:
resultsfloat

Result of the integration.

Other Parameters:
argstuple, optional

Extra arguments to pass to function. Each element of args will be passed as a single argument to func. Default is to pass no extra arguments.

tol, rtolfloat, optional

The desired absolute and relative tolerances. Defaults are 1.48e-8.

showbool, optional

Whether to print the results. Default is False.

divmaxint, optional

Maximum order of extrapolation. Default is 10.

vec_funcbool, optional

Whether func handles arrays as arguments (i.e., whether it is a “vector” function). Default is False.

See also

fixed_quad

Fixed-order Gaussian quadrature.

quad

Adaptive quadrature using QUADPACK.

dblquad

Double integrals.

tplquad

Triple integrals.

romb

Integrators for sampled data.

simpson

Integrators for sampled data.

cumulative_trapezoid

Cumulative integration for sampled data.

References

Examples

Integrate a gaussian from 0 to 1 and compare to the error function.

>>> 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

The final result is 0.421350396475 after 33 function evaluations.

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