SymPy - 极限Limit
这一部分是作者添加的微积分部分内容, 具体也可以参考作者的另一篇博文
Python上的高等数学实验_leotzf的博客-CSDN博客
计算一元函数极限
from sympy import *
from sympy.abc import x,y
limit((1-cos(x))/x**2,x,0)
输出结果
Limit命令默认计算右极限。 如果要求左极限,使用dir='-'参数。
from sympy.abc import x
limit(abs(x)/x,x,0,dir='-')
limit(abs(x)/x,x,0,dir='+')
输出结果
-1
1
当然要计算右极限时则把减号改成加号即可。
SymPy - 导数Derivative
函数的导数就是因变量相对于自变量的瞬间变化率. 等价于寻找函数在某个点的切线斜率. 我们可以使用SymPy包中的函数diff()计算数学表达式(或函数)的导数. 语法如下:
diff(表达式, 变量)
>>> from sympy import diff, sin, exp >>> from sympy.abc import x,y >>> expr=x*sin(x*x)+1 >>> expr
上述代码输出一个等价于以下结果的表达式 −
>>> diff(expr,x)
上述代码输出一个等价于以下结果的表达式 −
>>> diff(exp(x**2),x)
上述代码输出一个等价于以下结果的表达式 −
为了计算高阶导数, 传递这个变量多次即可, 要求几阶导数, 就传输几次, 或者在变量之后直接写上求导的阶数也可以.
>>> diff(x**4,x,3)
上述代码输出一个等价于以下结果的表达式 −
24x
>>> for i in range(1,4): print (diff(x**4,x,i))
上述代码输出一个等价于以下结果的表达式 −
4*x**3
12*x**2
24*x
也可以直接对一个表达式调用函数 diff(). 工作方式类似于函数 diff().
>>> expr=x*sin(x*x)+1 >>> expr.diff(x)
上述代码输出一个等价于以下结果的表达式 −
使用 Derivative 类可以创建一个未计算的导数表达式对象. 它和函数 diff() 的语法相同. 要对未计算的导数对象执行计算, 使用 doit 方法.
>>> from sympy import Derivative >>> d=Derivative(expr) >>> d
上述代码输出一个等价于以下结果的表达式 −
>>> d.doit()
上述代码输出一个等价于以下结果的表达式 −
SymPy - 积分Integration
在 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)
上述代码输出一个等价于以下结果的表达式 −
>>> expr=sin(x)*tan(x) >>> expr >>> integrate(expr,x)
上述代码输出一个等价于以下结果的表达式 −
定积分的例子如下 −
>>> expr=exp(-x**2) >>> integrate(expr,(x,0,oo) )
上述代码输出一个等价于以下结果的表达式 −
可以通过传递多个积分限的元组执行累次积分的计算. 下面给出一个示例 −
>>> expr=exp(-x**2 - y**2) >>> integrate(expr,(x,0,oo),(y,0,oo))
上述代码输出一个等价于以下结果的表达式 −
你也可以创建未计算的积分对象 Integral, 要得到计算结果调用对象的 doit() 方法.
>>> expr = Integral(log(x)**2, x) >>> expr
上述代码输出一个等价于以下结果的表达式 −
>>> expr.doit()
上述代码输出一个等价于以下结果的表达式 −
积分变换Integral Transforms
SymPy 支持如下所列的各种积分变换 −
- 拉普拉斯变换laplace_transform
- 傅里叶变换fourier_transform
- 正弦变换sine_transform
- 余弦变换cosine_transform
- 汉克尔变换hankel_transform
这些函数定义在模块 sympy.integrals.transforms 中. 下面的例子分别计算傅里叶变换和拉普拉斯变换.
例 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)
这等价于 −
例 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)