当前位置: 首页 > 文档资料 > Scipy 中文教程 >

整合(Integrate)

优质
小牛编辑
121浏览
2023-12-01

当一个函数不能被分析地集成,或者很难通过分析整合时,人们通常会转向数值积分方法。 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集成功能的主力。 数值积分有时被称为quadrature ,因此得名。 它通常是在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函数返回两个值,其中第一个数字是积分值,第二个值是积分值中绝对误差的估计值。

Note - 由于quad需要函数作为第一个参数,我们不能直接将exp作为参数传递。 Quad函数接受正无穷大作为限制。 Quad函数可以集成单个变量的标准预定义NumPy函数,例如exp,sin和cos。

多重积分

双重和三重集成的机制已经包含在函数dblquad, tplquadnquad 。 这些函数分别集成了四个或六个参数。 所有内积分的极限需要定义为函数。

双积分

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

举个例子,让我们执行双积分方法。

$$\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将满足我们对数值积分的大部分需求。