SciPy 教程

Scipy积分


当一个函数不能被分析积分,或者很难分析积分时,通常会转向数值积分方法。SciPy 有许多用于执行数值积分的程序。它们中的大多数都在同一个scipy.integrate库中。下表列出了一些常用函数。

编号 示例 描述
1 quad 单积分
2 dblquad 二重积分
3 tplquad 三重积分
4 nquad n 倍多重积分
5 fixed_quad 高斯积分,阶数n
6 quadrature 高斯正交到容差
7 romberg Romberg 积分
8 trapz 梯形规则
9 cumtrapz 梯形法则累计计算积分
10 simps 辛普森的规则
11 romb Romberg 积分
12 polyint 分析多项式积分(NumPy)
13 poly1d 辅助函数 polyint(NumPy)

单积分

Quad 函数是 SciPy 积分函数的主力。数值积分有时称为正交积分,因此称为名称。它通常是在ab给定的固定范围内执行函数f(x)的单个积分的默认选择。

quad的一般形式是scipy.integrate.quad(f,a,b),其中'f'是要积分的函数的名称。而'a''b'分别是下限和上限。下面来看看一个高斯函数的例子,它的积分范围是01

首先需要定义这个函数:

这可以使用lambda表达式完成,然后在该函数上调用四方法。

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需要函数作为第一个参数,因此不能直接将exp作为参数传递。Quad 函数接受正和负无穷作为限制。Quad 函数可以积分单个变量的标准预定义 NumPy 函数,如expsincos

多重积分

双重和三重积分的机制已被包含到函数dblquadtplquadnquad中。这些函数分别积分了四个或六个参数。所有内积分的界限都需要定义为函数。

双重积分

dblquad的一般形式是scipy.integrate.dblquad(func,a,b,gfun,hfun)。其中,func是要积分函数的名称,'a''b'分别是x变量的下限和上限,而gfunhfun是定义变量y的下限和上限的函数名称。

看看一个执行双重积分方法的示例。

使用lambda表达式定义函数fgh。请注意,即使gh是常数,它们可能在很多情况下必须定义为函数,正如在这里为下限所做的那样。

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, 1.7092350012594845e-14)

除上述例程外,scipy.integrate还有许多其他积分的程序,其中包括执行n次多重积分的 nquad 以及实现各种集成算法的其他例程。但是,quaddblquad将满足对数值积分的大部分需求。