On peut différentier (dériver) toute expression, par diff(fonction, variable) :
>>> from sympy import * >>> x = Symbol('x') >>> diff(sin(x), x) cos(x) >>> diff(sin(2*x), x) 2*cos(2*x) >>> diff(tan(x), x) cos(x)**(-2)
On peut vérifier ces résultats en utilisant le taux d'accroissement :
>>> limit((tan(x+y)-tan(x))/y, y, 0) cos(x)**(-2)
On peut encore calculer des dérivées multiples par diff(fonc, var, n) :
>>> diff(sin(2*x), x, 1) 2*cos(2*x) >>> diff(sin(2*x), x, 2) -4*sin(2*x) >>> diff(sin(2*x), x, 3) -8*cos(2*x)
Pour calculer une primitive, procéder ainsi :
>>> from sympy import * >>> x, y = symbols('xy') >>> integrate(6*x**5, x) x**6 >>> integrate(sin(x), x) -cos(x) >>> integrate(log(x), x) x*log(x) - x >>> integrate(2*x + sinh(x), x) x**2 + cosh(x) >>> integrate(exp(-x**2)*erf(x), x) (1/4)*pi**(1/2)*erf(x)**2
On peut calculer des intégrales avec sympy :
>>> integrate(x**3, (x, -1, 1)) 0 >>> integrate(sin(x), (x, 0, pi/2)) 1 >>> integrate(cos(x), (x, -pi/2, pi/2)) 2
Les intégrales impropres sont aussi définies :
>>> integrate(exp(-x), (x, 0, oo)) 1 >>> integrate(log(x), (x, 0, 1)) -1
Pour faire un développement limité, on utilise la méthode .series(var, point, ordre) :
>>> from sympy import * >>> x = Symbol('x') >>> cos(x).series(x, 0, 10) 1 - 1/2*x**2 + (1/24)*x**4 - 1/720*x**6 + (1/40320)*x**8 + O(x**10) >>> (1/cos(x)).series(x, 0, 10) 1 + (1/2)*x**2 + (5/24)*x**4 + (61/720)*x**6 + (277/8064)*x**8 + O(x**10)
Autre exemple simple, incluant un "bel" affichage :
>>> from sympy import Integral, Symbol, pprint >>> x = Symbol("x") >>> y = Symbol("y") >>> e = 1/(x + y) >>> s = e.series(x, 0, 5) >>> print(s) 1/y + x**2*y**(-3) + x**4*y**(-5) - x*y**(-2) - x**3*y**(-4) + O(x**5) >>> pprint(s) 2 4 3 1 x x x x ─ + ── + ── - ── - ── + O(x**5) y 3 5 2 4 y y y y
On peut résoudre des équations différentielles avec sympy :
>>> from sympy import * >>> f=Function('f') >>> f(x).diff(x, x) + f(x) D(f(x), x, x) + f(x) >>> dsolve(f(x).diff(x, x) + f(x), f(x)) C1*sin(x) + C2*cos(x)