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)[源代码]#
可调用函数或方法的罗姆伯格积分。
自 1.12.0 版弃用: 此函数自 SciPy 1.12.0 版弃用,将在 SciPy 1.15.0 版中移除。请改用
scipy.integrate.quad
。返回表达式(一元函数)的积分 (a, b)。
如果 show 为 1,将打印中间结果的三角形数组。如果 vec_func 为 True(默认值为 False),则认为 function 支持向量参数。
- 参数:
- 函数可调用
要集成的函数。
- a浮点数
集成的下限。
- b浮点数
集成的上限。
- 返回:
- 结果浮点数
集成的结果。
- 其他参数:
- args元组,可选
传递给函数的其他参数。args 的每个元素都将作为单个自变量传递给 func。默认值为不传递任何其他参数。
- tol、rtol浮点数,可选
期望的绝对和相对容差。默认为 1.48e-8。
- show布尔值,可选
是否打印结果。默认为 False。
- divmax整数,可选
外推的最大阶数。默认为 10。
- vec_func布尔值,可选
func 是否将数组作为自变量处理(即,它是否是“向量”函数)。默认为 False。
另请参阅
fixed_quad
定阶高斯正交
quad
使用 QUADPACK 的自适应正交
dblquad
二重积分
tplquad
三重积分
romb
采样数据积分器
simpson
采样数据积分器
cumulative_trapezoid
采样数据的累积积分
参考文献
[1]“Romberg方法” https://en.wikipedia.org/wiki/Romberg%27s_method
示例
对从 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