SciPy 积分
当一个函数不能用分析法进行积分,或很难用分析法进行积分时,人们通常会求助于数值积分方法。SciPy有许多执行数值积分的程序。它们中的大多数都在同一个 scipy.integration 库中找到。下表列出了一些常用的函数。
Sr No. | 功能和描述 |
---|---|
1 | quad 单一积分 |
2 | dblquad 双重积分 |
3 | tplquad 三重积分 |
4 | nquad n -fold multiple integration |
5 | fixed_quad 高斯正交,n阶 |
6 | quadrature 高斯正交法的公差 |
7 | romberg 隆伯格积分 |
8 | Trapz 梯形规则 |
9 | cumtrapz 累积计算积分的梯形规则 |
10 | simps 辛普森法则 |
11 | romb 隆伯格积分 |
12 | polyint 分析性多项式积分(NumPy) |
13 | poly1d polyint的辅助函数(NumPy) |
单一积分
Quad函数是SciPy的积分函数中的主力军。数值积分有时被称为 正交 ,因此被称为 正交 。它通常是在给定的a到b的固定范围内对函数 f ( x )进行单次积分的默认选择。
int_{a}^{b} f(x)dx
quad 的一般形式是 scipy.integration.quad(f, a, b) , 其中 ‘f’ 是要积分的函数的名称。而’a’和’b’分别是下限和上限。让我们看一个高斯函数的例子,在0和1的范围内积分。
我们首先需要定义函数→f(x) = e^{-x^2} ,这可以用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要求将函数作为第一个参数,我们不能直接将exp作为参数传递。四元函数接受正负无穷大作为极限。Quad函数可以对标准的预定义NumPy单变量函数进行积分,比如exp、sin和cos。
多重积分
双重积分和三重积分的力学原理已经被封装在函数 dblquad, tplquad 和 nquad中。 这些函数分别对四个或六个参数进行积分。所有内部积分的极限需要被定义为函数。
双重积分
dblquad 的一般形式是 scipy.integration.dblquad(func, a, b, gfun, hfun) 。其中,func是要积分的函数的名称,’a’和’b’分别是x变量的下限和上限,而gfun和hfun是定义y变量的下限和上限的函数的名称。
作为一个例子,让我们进行双积分法。
$int_{0}^{1/2}dy\int_{0}^{sqrt{1-4y^2}}16xy16xy:dx
我们用lambda表达式来定义函数f、g和h。请注意,即使g和h是常数,因为它们在许多情况下可能是常数,它们也必须被定义为函数,正如我们在这里为下限所做的那样。
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.integration还有一些其他的积分例程,包括执行n倍多次积分的nquad,以及其他实现各种积分算法的例程。然而,quad和dblquad将满足我们对数值积分的大部分需求。