TP PYTHON - 05 2
>>> (x+1)**3
On peut alors décider d’orienter le calcul dans telle ou telle direction, selon ce qu’on cherche à faire.
Par exemple :
>>> expand((x+1)**3) # version fonction
>>> ((x+1)**3).expand() # version méthode
On aurait pu écrire, de façon équivalente : expand(_) car le symbole _fait référence au résultat de
l’évaluation précédente. Autre exemple :
>>> expand((x+y+z)**3 * (x-y+1)**2 * (x+y+1) * (y+2*z))
>>> factor(_)
Impressionant, non ?
Au cas où vous en douteriez encore, expand et factor permettent respectivement de développer et
de factoriser une expression algébrique (comportant une ou plusieurs variables).
L’affichage du résultat peut être rendu plus “joli”, mais cela n’a rien d’essentiel :
>>> init_printing(pretty_print = True)
>>> expand((x+y)**4)
Voici deux autres exemples montrant que certaines simplifications ne se font pas automatiquement :
>>> (x**3 - y**3) / (x - y)
>>> cancel(_)
>>> log(x*y)
Dans ce dernier exemple, il faut préciser que la fonction log est celle prédéfinie par le module sympy
(elle s’applique à des expressions comportant des symboles, et pas seulement à des expressions numé-
riques, comme c’est le cas de la fonction log du module math). Si le module math avait été chargé avant
le module sympy, la définition de log par math aurait été écrasée (ainsi que les définitions de quelques
autres fonctions, pour lesquelles une fonction portant le même nom existe dans sympy. Ce compor-
tement n’est pas génant ici, mais pourrait l’être dans d’autres circonstances : la solution consiste à
charger un module via la commande import nomDuModule au lieu de from nomDuModule import * ; on
doit allors accéder aux fonctions par leur nom complet, c’est-à-dire nomDuModule.nomDeLaFonction).
Il est normal qu’aucune simplification de l’expression log(x*y) n’ait eu lieu ! En revanche, si l’on
sait que les symboles xet yreprésentent des nombres réels strictement positifs, alors on est en droit
d’attendre autre chose :
>>> var(’x,y’, positive = True)
>>> expand(log(x*y))
Concernant les fractions, les deux transformations de base sont, d’une part, la réduction au même
dénominateur :
>>> var(’r:3’)
>>> 1/r0 + 1/r1 + 1/r2
>>> together(_)
et, d’autre part, la décomposition en éléments simples (mais seulement pour des fractions en une
seule variable) :
>>> var(’x’)
>>> f = (2*x + 1) / (x**3 - x)
>>> apart(f)