📅  最后修改于: 2020-11-05 04:32:04             🧑  作者: Mango
当一个函数无法解析集成,或者很难解析集成时,通常会转向数值积分方法。 SciPy有许多用于执行数值积分的例程。它们中的大多数都在同一scipy.integrate库中找到。下表列出了一些常用功能。
Sr No. | Function & Description |
---|---|
1 |
quad Single integration |
2 |
dblquad Double integration |
3 |
tplquad Triple integration |
4 |
nquad n-fold multiple integration |
5 |
fixed_quad Gaussian quadrature, order n |
6 |
quadrature Gaussian quadrature to tolerance |
7 |
romberg Romberg integration |
8 |
trapz Trapezoidal rule |
9 |
cumtrapz Trapezoidal rule to cumulatively compute integral |
10 |
simps Simpson’s rule |
11 |
romb Romberg integration |
12 |
polyint Analytical polynomial integration (NumPy) |
13 |
poly1d Helper function for polyint (NumPy) |
Quad函数是SciPy集成功能的主力军。数值积分有时也称为正交,因此得名。通常是在给定的从a到b的固定范围内执行函数f(x)的单个积分的默认选择。
$$ \ int_ {a} ^ {b} f(x)dx $$
Quad的一般形式是scipy.integrate.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函数接受正负无穷大作为限制。 Quad函数可以集成单个变量(例如exp,sin和cos)的标准预定义NumPy函数。
双重和三重集成的机制已包装到函数dblquad,tplquad和nquad中。这些函数分别集成了四个或六个参数。所有内部积分的极限都需要定义为函数。
dblquad的一般形式是scipy.integrate.dblquad(func,a,b,gfun,hfun)。其中,func是要集成的函数的名称,“ a”和“ b”分别是x变量的下限和上限,而gfun和hfun是定义下限和上限的函数的名称y变量。
例如,让我们执行双重积分法。
$$ \ int_ {0} ^ {1/2} dy \ int_ {0} ^ {\ sqrt {1-4y ^ 2}} 16xy \: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.integrate还具有许多其他的集成例程,包括执行n倍多重集成的nquad以及实现各种集成算法的其他例程。但是,quad和dblquad将满足我们对数值积分的大多数需求。