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 (一个变量的函数)在区间内 (a , b )。
如果 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