SciPy 教程-SciPy 积分
有时一个函数非常复杂无法进行解析积分,或者无法用解析方法积分;这时,可以使用数值积分方法求解。SciPy 提供了一些用于执行数值积分的例程。scipy.integrate 库包含了大多数这些函数。
- 单重积分
数值积分有时被称为 求积。Quad 函数是 SciPy 积分函数中非常重要的一个。quad() 函数的语法如下:
scipy.integrate.quad(f,a,b),
参数:
f - 要积分的函数名
a- 下限
b- 上限
我们以从 a 到 b 范围内积分的高斯函数为例。我们定义函数f(x) = e-x2,这可以使用 lambda 表达式完成,并对给定函数应用 quad 方法。
import scipy.integrate
from numpy import exp
f= lambda x:exp(-x**2)
i = scipy.integrate.quad(f, 0, 1)
print(i)
输出:
(0.7468241328124271, 8.291413475940725e-15)
在上面的程序中,我们使用了 quad() 函数,它返回两个值。第一个值是积分值,第二个值是积分值的绝对误差估计。
注意: 由于 quad() 函数需要函数作为第一个参数,我们不能直接将表达式作为参数传递。它允许将正无穷和负无穷作为极限。
多重积分
多重积分,如双重和三重积分,转化为函数 dblquad()、tplquad() 和 nquad()。这里我们考虑使用 scipy.integrate.dblquad(func, a, b, gfun, hfun) 来解决双重积分问题。第一个参数 func 是要积分的函数的名称,a 和 b 是 x 变量的下限和上限。而 gfun 和 hfun 是定义 y 变量的下限和上限的函数的名称。我们考虑以下示例:
import scipy.integrate
from numpy import exp
from math import sqrt
f = lambda x, y : 16*x*y
g = lambda x : 0
h = lambda y : sqrt(1-4*y**2)
i = scipy.integrate.dblquad(f, 0, 0.5, g, h)
print(i)
输出:
(-0.5, 4.412025764622231e-14)
scipy.integrate 包含许多其他积分函数,包括 nquad(),它执行 n 次多重积分。