FAQ Mathematica

FAQ MathematicaConsultez toutes les FAQ
Nombre d'auteurs : 1, nombre de questions : 30, dernière mise à jour : 16 juin 2021

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]
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]
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