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.
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.
ode
ODE integrator.
odeint
ODE integrator.
References
- 1
‘Romberg’s method’ https://en.wikipedia.org/wiki/Romberg%27s_method
Examples
Integrate a gaussian from 0 to 1 and compare to the error function.
>>> 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
The final result is 0.421350396475 after 33 function evaluations.
>>> print("%g %g" % (2*result, erf(1))) 0.842701 0.842701