Python技术迷

Scipy 教程-SciPy 积分

整理:python架构师

有时一个函数非常复杂无法进行解析积分,或者无法用解析方法积分;这时,可以使用数值积分方法求解。SciPy 提供了一些用于执行数值积分的例程。scipy.integrate 库包含了大多数这些函数。

  • 单重积分

数值积分有时被称为 求积。Quad 函数是 SciPy 积分函数中非常重要的一个。quad() 函数的语法如下:

scipy.integrate.quad(f,a,b),  

参数:

f - 要积分的函数名

a- 下限

b- 上限

我们以从 a 到 b 范围内积分的高斯函数为例。我们定义函数f(x) = e-x2,这可以使用 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() 函数需要函数作为第一个参数,我们不能直接将表达式作为参数传递。它允许将正无穷和负无穷作为极限。

专属福利 

👉点击领取:最全Python资料合集

多重积分

多重积分,如双重和三重积分,转化为函数 dblquad()、tplquad() 和 nquad()。这里我们考虑使用 scipy.integrate.dblquad(func, a, b, gfun, hfun) 来解决双重积分问题。第一个参数 func 是要积分的函数的名称,a 和 b 是 x 变量的下限和上限。而 gfun 和 hfun 是定义 y 变量的下限和上限的函数的名称。我们考虑以下示例:
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, 4.412025764622231e-14)
scipy.integrate 包含许多其他积分函数,包括 nquad(),它执行 n 次多重积分。
Image
热门推荐
Image