📜  Python| Scipy 集成.romberg() 方法(1)

📅  最后修改于: 2023-12-03 15:04:22.609000             🧑  作者: Mango

Python | Scipy 集成.romberg() 方法

scipy.integrate.romberg() 方法实现了龙贝格(Romburg)积分法。该方法可以用于计算包括求定积分、数值解微分方程等数学计算。

语法

scipy.integrate.romberg(func, a, b, show=False, divmax=10, vec_func=False)

参数

函数需要传入以下参数:

  • func:被积函数。
  • a:积分区间的下限。
  • b:积分区间的上限。
  • show:当值为True时,则打印龙贝格积分的每个步骤。
  • divmax:积分区间的最大划分数。
  • vec_func:当值为True时,被积函数接受数组并返回数组。
返回值

该方法返回定积分的计算结果。

例子

下面是一个计算定积分的例子。假设需要计算 $sin(x)$ 在 $0$ 和 $\pi$ 之间的积分。

from scipy.integrate import romberg
from math import sin, pi

def func(x):
    return sin(x)

result = romberg(func, 0, pi)
print(result)

输出:

2.00000000011

当然,开启 show 功能可以看到每个步骤的计算过程。例如:

result = romberg(func, 0, pi, show=True)

输出:

Romberg integration of <function vfunc at 0x7f3c1da293b0> from [0, pi]

 Steps  StepSize  Results
     1  3.141593  2.094395
     2  1.570796  2.006545
     4  0.785398  2.000438
     8  0.392699  2.000043
    16  0.196350  2.000002
    32  0.098175  2.000000
    64  0.049087  2.000000
   128  0.024544  2.000000
   256  0.012272  2.000000
   512  0.006136  2.000000
  1024  0.003068  2.000000
  2048  0.001534  2.000000
  4096  0.000767  2.000000
  8192  0.000384  2.000000
 16384  0.000192  2.000000
Out[6]: 2.0

注意:如果结果显示出e-11等极小值,则意味着结果已经收敛,并非一个 bug。