SymPy提供了完善的微积分支持:

求导

diff(expr, x)可以求expr关于x的导数,也可以写成expr.diff(x)

diff(expr, x,x, x)可以对x求三阶导,也可以写成diff(expr, x,3)expr.diff(x, 3)

Derivative()可以创建一个导数但不计算它

对未计算的导数使用.doit()可以计算它。

积分

integrate(exp(-x), (x, 0, oo))将会计算

0exdx=1\int\limits_{0}^{\infty} e^{- x}\, dx = 1

其中oo是两个“o”,用来表示无穷大。

integrate(exp(-x**2 - y**2), (x, -oo, oo), (y, -oo, oo))将会计算

ex2y2dxdy=π\int\limits_{-\infty}^{\infty}\int\limits_{-\infty}^{\infty} e^{- x^{2} - y^{2}}\, dx\, dy = \pi

和上面求导一样,Integral会创建一个积分但是不计算它,.doit()可以计算未计算的积分。

极限

limit(sin(x)/x, x, 0)将会计算

limx0+(sin(x)x)=1\lim_{x \to 0^+}\left(\frac{\sin{\left(x \right)}}{x}\right) = 1

计算单侧极限,可以向第三个参数传入'+''-'limit(1/x, x, 0, '-')将会计算

limx0+1x=\lim_{x \to 0^+} \frac{1}{x} = \infty

同上,Integral会创建一个未计算的极限,.doit()可以计算它。

计算某点处的级数展开

expr.series(x, a, n)会给出表达式在 x = a 处的 n 阶展开。

不想要那个表示余项的O,就用.removeO()

本文属于系列文章:SymPy学习笔记