当一个函数不能被分析地集成,或者很难通过分析整合时,人们通常会转向数值积分方法. SciPy有许多用于执行数值积分的例程.其中大多数都位于相同的 scipy.integrate 库中.下表列出了一些常用函数.
Sr No. | 功能&说明 |
---|---|
1 | quad 单一整合 |
2 | dblquad 双重整合 |
3 | tplquad 三重整合 |
4 | nquad n - 多重整合 |
5 | fixed_quad 高斯积分,阶数n |
6 | 正交 高斯正交容差 |
7 | romberg Romberg整合 |
8 | trapz 梯形规则 |
9 | cumtrapz 累积计算积分的梯形规则 |
10 | simps 辛普森的规则 |
11 | romb Romberg整合 |
12 | polyint 分析多项式积分(NumPy) |
13 | poly1d polyint的辅助函数(NumPy) |
Quad函数是SciPy集成函数的主力.数值积分有时被称为正交,因此得名.它通常是在a到b的给定固定范围内执行函数 f(x)的单积分的默认选择.
$$ \int_ {a} ^ {b} f(x)dx $$
四边形的一般形式是 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函数可以集成单个变量的标准预定义NumPy函数,例如exp,sin和cos.
double的机制和三重集成已经包含在函数 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 $$
我们定义函数f,g和h,使用lambda表达式.请注意,即使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还有许多其他集成例程,包括nquad,它执行n倍多重集成,以及实现各种集成算法的其他例程.但是,quad和dblquad将满足我们对数值积分的大部分需求.