SciPy - 积分

  • 简述

    当一个函数不能解析积分,或者很难解析积分时,一般会求助于数值积分方法。SciPy 有许多用于执行数值积分的例程。他们中的大多数都在同一个scipy.integrate图书馆。下表列出了一些常用的函数。
    不先生 功能说明
    1
    quad
    单一积分
    2
    dblquad
    双重积分
    3
    tplquad
    三重积分
    4
    nquad
    n倍多重积分
    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 积分函数的主力。数值积分有时被称为quadrature, 由此得名。它通常是在从 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。
  • 多重积分

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

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