IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Manipulation d'expressions
        Comment simplifier une expression ?
        Comment simplifier une expression sous hypothèses ?
        Comment développer une expression ?





Comment simplifier une expression ?
Création le 17/06/2012 [haut]
auteur : Thibaut Cuvelier
L'un des grands avantages des systèmes de CAS est la simplification d'expressions entièrement automatisée, sans risque d'erreur. Bien sûr, on peut leur trouver une utilité digne des châteaux de sable.
In[1]:= Simplify[45*(45*(x - 45*(Exp[x])))]
Out[1]= 2025 (-45 E^x + x)
Certaines opérations donnent des résultats pas forcément très heureux à voir, comme la dérivation d'une fonction juste intégrée :
In[1]:= D[Integrate[x/(x^3 + 1), x], x]
Out[1]= -(1/(3 (1 + x))) + (-1 + 2 x)/(6 (1 - x + x^2)) + 2/(
 3 (1 + 1/3 (-1 + 2 x)^2))
Avec un peu de magie, on peut réduire cette expression à une forme beaucoup plus lisible :
In[1]:= Simplify@D[Integrate[x/(x^3 + 1), x], x]
Out[1]= x/(1 + x^3)
Cette fonction tient aussi compte des identités diverses et non moins variées définitions parcourant les multiples branches des mathématiques :
In[1]:= Simplify[Sinh[x]^2 - Cosh[x]^2]
Out[1]= -1
In[2]:= Simplify[Sinh[x]^2 + Cosh[x]^2]
Out[2]= Cosh[2 x]
Cependant, cette fonction ne peut pas simplifier des expressions utilisant des fonctions spéciales (comme la fonction gamma, généralisation de la factorielle) :
In[1]:= Simplify[x Gamma[x]]
Out[1]= x Gamma[x]
Pour cela, on doit utiliser FullSimplify, qui est potentiellement beaucoup plus lente vu le nombre de transformations supportées :
In[2]:= FullSimplify[x Gamma[x]]
Out[2]= Gamma[1 + x]

Comment simplifier une expression sous hypothèses ?
Création le 17/06/2012 [haut]
auteur : Thibaut Cuvelier
Certaines simplifications ne peuvent se faire que sous certaines hypothèses. L'exemple le plus fréquent est la racine carrée d'un carré : il s'agit bien sûr de la valeur absolue pour des réels.
In[1]:= Simplify[Sqrt[x^2], Element[x, Reals]]
Out[1]= Abs[x]
Si le nombre est positif, on peut encore simplifier plus avant, les inégalités n'étant définies que sur les réels :
In[1]:= Simplify[Sqrt[x^2], x > 0]
Out[1]= x

In[2]:= Assuming[x > 0, Simplify[Sqrt[x^2]]]
Out[2]= x
Ainsi, on peut également profiter de quelques théorèmes, comme le petit théorème de Fermat :
In[1]:= Simplify[Mod[a^p, p], Element[a, Integers] && Element[p, Primes]]
Out[1]= Mod[a, p]

Comment développer une expression ?
Création le 17/06/2012 [haut]
auteur : Thibaut Cuvelier
Notamment, pour vérifier le développement d'un produit remarquable, on peut utiliser
In[1]:= Expand[(a + b)^2]
Out[1]= a^2 + 2 a b + b^2]

In[2]:= Expand[(a + b)^3]
Out[2]= a^3 + 3 a^2 b + 3 a b^2 + b^3
Par contre, s'il faut distribuer, il vaut mieux utiliser Distribute :
In[1]:= Expand[(a + b).(x + y)]
Out[1]= (a + b).(x + y)

In[2]:= Distribute[(a + b).(x + y)]
Out[2]= a.x + a.y + b.x + b.y
De même, si on veut développer des sous-expressions, il faut le préciser avec ExpandAll :
In[1]:= Expand[Exp[(1 + x)^2]]
Out[1]=E^(1 + x)^2

In[2]:= ExpandAll[Exp[(1 + x)^2]]
Out[2]= E^(1 + 2 x + x^2)
En général, l'inverse de cette fonction est Simplify :
In[1]:= Simplify@ExpandAll[Exp[(1 + x)^2]]
Out[1]= E^(1 + x)^2

Copyright © 2011 Thibaut Cuvelier. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.