SymPy - 积分

  • 简述

    SymPy 包包含积分模块。它实现了计算表达式的定积分和不定积分的方法。integrate() 方法用于计算定积分和不定积分。要计算不定积分或原始积分,只需在表达式后面传递变量。
    例如 -
    
    
    integrate(f, x)
    
    
    要计算定积分,请按如下方式传递参数 -
    
    
    (integration_variable, lower_limit, upper_limit)
    
    
    
    
    >>> from sympy import * 
    
    >>> x,y = symbols('x y') 
    
    >>> expr=x**2 + x + 1 
    
    >>> integrate(expr, x)
    
    
    上面的代码片段给出了与下面的表达式等效的输出 -
    $$\frac{x^3}{3} + \frac{x^2}{2} + x$$
    
    
    >>> expr=sin(x)*tan(x) 
    
    >>> expr 
    
    >>> integrate(expr,x)
    
    
    上面的代码片段给出了与下面的表达式等效的输出 -
    $$-\frac{\log(\sin(x) - 1)}{2} + \frac{\log(\sin(x) + 1)}{2} - \sin(x)$$
    下面给出了定积分的例子 -
    
    
    >>> expr=exp(-x**2) 
    
    >>> integrate(expr,(x,0,oo) )
    
    
    上面的代码片段给出了与下面的表达式等效的输出 -
    $$\frac{\sqrt\pi}{2}$$
    您可以传递多个限制元组来执行多重积分。下面给出一个例子 -
    
    
    >>> expr=exp(-x**2 - y**2)
    
    >>> integrate(expr,(x,0,oo),(y,0,oo))
    
    
    上面的代码片段给出了与下面的表达式等效的输出 -
    $$\frac{\pi}{4}$$
    您可以使用 Integral 对象创建未评估的积分,可以通过调用 doit() 方法对其进行评估。
    
    
    >>> expr = Integral(log(x)**2, x) 
    
    >>> expr
    
    
    上面的代码片段给出了与下面的表达式等效的输出 -
    $$\int \mathrm\log(x)^2 \mathrm{d}x$$
    
    
    >>> expr.doit()
    
    
    上面的代码片段给出了与下面的表达式等效的输出 -
    $$x\log(x)^2 - 2xlog(x) + 2x$$
  • 积分变换

    SymPy 支持各种类型的积分变换,如下所示 -
    • 拉普拉斯变换
    • 傅里叶变换
    • 正弦变换
    • 余弦变换
    • hankel_transform
    这些函数在 sympy.integrals.transforms 模块中定义。以下示例分别计算傅立叶变换和拉普拉斯变换。
    Example 1
    
    
    >>> from sympy import fourier_transform, exp 
    
    >>> from sympy.abc import x, k 
    
    >>> expr=exp(-x**2) 
    
    >>> fourier_transform(expr, x, k)
    
    
    在 python shell 中执行上述命令时,将生成以下输出 -
    
    
    sqrt(pi)*exp(-pi**2*k**2)
    
    
    这相当于 -
    $$\sqrt\pi * e^{\pi^2k^2}$$
    Example 2
    
    
    >>> from sympy.integrals import laplace_transform 
    
    >>> from sympy.abc import t, s, a 
    
    >>> laplace_transform(t**a, t, s)
    
    
    在 python shell 中执行上述命令时,将生成以下输出 -
    
    
    (s**(-a)*gamma(a + 1)/s, 0, re(a) > -1)