>> from sympy import *
>>> x, y, z = symbols('x y z')
>>> init_printing(use_unicode=True)
Derivatives
#導數
>>> diff(cos(x), x)
-sin(x)
>>> diff(exp(x**2), x)
⎛ 2⎞
⎝x ⎠
2⋅x⋅ℯ
#多次求導
>>> diff(x**4, x, x, x)
24⋅x
>>> diff(x**4, x, 3)
24⋅x
#對多個變量求導
>>> expr = exp(x*y*z)
>>> diff(expr, x, y, y, z, z, z, z)
3 2 ⎛ 3 3 3 2 2 2 ⎞ x⋅y⋅z
x ⋅y ⋅⎝x ⋅y ⋅z + 14⋅x ⋅y ⋅z + 52⋅x⋅y⋅z + 48⎠⋅ℯ
>>> diff(expr, x, y, 2, z, 4)
3 2 ⎛ 3 3 3 2 2 2 ⎞ x⋅y⋅z
x ⋅y ⋅⎝x ⋅y ⋅z + 14⋅x ⋅y ⋅z + 52⋅x⋅y⋅z + 48⎠⋅ℯ
>>> diff(expr, x, y, y, z, 4)
3 2 ⎛ 3 3 3 2 2 2 ⎞ x⋅y⋅z
x ⋅y ⋅⎝x ⋅y ⋅z + 14⋅x ⋅y ⋅z + 52⋅x⋅y⋅z + 48⎠⋅ℯ
#以方法的形式調用
>>> expr.diff(x, y, y, z, 4)
3 2 ⎛ 3 3 3 2 2 2 ⎞ x⋅y⋅z
x ⋅y ⋅⎝x ⋅y ⋅z + 14⋅x ⋅y ⋅z + 52⋅x⋅y⋅z + 48⎠⋅ℯ
#未計算的導數
>>> deriv = Derivative(expr, x, y, y, z, 4)
>>> deriv
7
d / x*y*z\
----------\e /
4 2
dz dy dx
#對未計算的導數進行求導
>>> deriv.doit()
3 2 / 3 3 3 2 2 2 \ x*y*z
x *y *\x *y *z + 14*x *y *z + 52*x*y*z + 48/*e
Integrals
#不定積分
>>> integrate(cos(x), x)
sin(x)
#定積分
>>> integrate(exp(-x), (x, 0, oo))
1
#雙重積分
>>> integrate(exp(-x**2 - y**2), (x, -oo, oo), (y, -oo, oo))
π
#創建未積分的表達式並對其積分
>>> expr = Integral(log(x)**2, x)
>>> expr
⌠
⎮ 2
⎮ log (x) dx
⌡
>>> expr.doit()
2
x⋅log (x) - 2⋅x⋅log(x) + 2⋅x
Limits
#極限
>>> limit(sin(x)/x, x, 0)
1
#limit和subs的區別
>>> expr = x**2/exp(x)
>>> expr.subs(x, oo)
nan
>>> limit(expr, x, oo)
0
#創建未求極限表達式並計算
>>> expr = Limit((cos(x) - 1)/x, x, 0)
>>> expr
cos(x) - 1
lim ──────────
x─→0⁺ x
>>> expr.doit()
0
#左側極限 & 右側極限
>>> limit(1/x, x, 0, '+')
∞
>>> limit(1/x, x, 0, '-')
-∞
Series Expansion
#級數展開
>>> expr = exp(sin(x))
>>> expr.series(x, 0, 4)
2
x / 4\
1 + x + -- + O\x /
2
#大O記號
>>> x + x**3 + x**6 + O(x**4)
3 / 4\
x + x + O\x /
>>> x*O(1)
O(x)
#移除大O記號
>>> expr.series(x, 0, 4).removeO()
2
x
── + x + 1
2