有时一个函数非常复杂无法进行解析积分,或者无法用解析方法积分;这时,可以使用数值积分方法求解。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 次多重积分。

标签: Scipy, Scipy学习, Scipy教程, Scipy下载, Scipy指南, Scipy基础教程, Scipy使用指南, Scipy库, Scipy入门, Scipy进阶, Scipy模块, Scipy安装教程