Pour extraire les solutions réelles d'une liste de solutions, réelles ou complexes

Lorsqu'on exécute la commande NSolve dans Mathematica, la réponse se présente sous la forme d'une liste de règles de substitution.
Par exemple, pour trouver les valeurs numériques des racines d'une équation polynomiale de degré 10 :
equa = 2 x^10 + 5 x^9 + 3 x^8 - 3 x^7 - 5 x^6 + 2 x^5 - x^4 - x^3 - 5 x^2 - 5 x -1 == 0 , si l'on exécute la commande :
sol = NSolve[equa,x], alors, conformément au théorème fondamental de l'algèbre, on aura une réponse sous la forme d'une liste de 10 solutions de la forme :
{x -> expression}
où l'on reconnaît dans "expression" un nombre réel approximatif ou complexe approximatif, le "I" majuscule représentant la racine carrée de -1.
Il peut arriver qu'on soit intéressé à extraire, d'une telle liste de solutions réels ou complexes, uniquement celles qui sont réelles.
Pour ce faire, il suffit d'exécuter la commande :
reel[sol_]:=Select[sol,!MemberQ[#1,_Complex,Infinity]&]
Pour obtenir les quatre solutions réelles de l'exemple ci-dessus, on écrira donc la commande :
solutionsreelles = reel[sol]

Pour pouvoir réutiliser cette commande, on l'enregistre dans un fichier, disons reel.m, dans son répertoire personnel. Au besoin, on pourra la charger dans Mathematica en exécutant
<< reel.m

Retour à ma page personnelle



©jmt : création le 010327 - dernière modification le 040223