Section : Outils pour l'Analyse
Avant : Primitives et intégrales
Après : Equations différentielles


Résolution d'équations

Comme pour les intégrales on distingue :

$ \bullet$
la résolution exacte qui renvoie toutes les solutions lorsque c'est possible (par exemple pour certaines équations polynomiales ou s'y ramenant)
$ \bullet$
la résolution approchée qui calcule par un algorithme itératif une valeur proche d'une des solutions.

La résolution exacte s'effectue à l'aide de solve, dont le premier argument est une équation. Le membre de droite est supposé nul s'il n'est pas précisé. Par défaut solve ne retourne pas les solutions complexes. Pour les obtenir, il faut activer l'option Complex à partir du bouton rouge sur fond gris cas (en bas à gauche). Exécutez les commandes suivantes avant et après avoir activé l'option Complex.


solve(x^2-a*x+2,x)
solve(x^2+2,x)
solve(x^3=1,x)

Les racines exactes sont calculées pour les polynômes de degré 1 et 2 (les formules de Cardan et Ferrari pour les degrés 3 et 4 ne sont pas utilisées, car les solutions obtenues ne sont pas facilement maniables). En degré supérieur, la fonction solve affiche un message d'erreur et renvoie une liste vide.

Pour les équations trigonométriques, les solutions principales sont renvoyées. Pour obtenir toutes les solutions, il faut activer l'option All_trig_sol. Comparer les commandes suivantes avec et sans cette option.


solve(cos(x),x)
solve(cos(x)+sin(x),x)

La fonction solve peut aussi résoudre des systèmes d'équations. Le premier argument est la liste des équations, le second est la liste des variables.


solve([x^2+y-2,x+y^2-2],[x,y])

La fonction de résolution approchée est fsolve. Elle propose en option différents algorithmes (menus Calc->Num_solve_eq et Calc->Num_solve_syst). Le plus célèbre est l'algorithme de Newton, qui a de multiples variantes. Le principe général de tous ces algorithmes est de calculer les termes successifs d'une suite qui converge vers une solution de l'équation ou du système proposé. Il faut pour cela choisir selon les cas un point de départ, ou un intervalle de recherche.


fsolve((x^5+2*x+1)=0,x,1,newton_solver)
newton(x^5+2*x+1,x,1.0)
newton(x^5+2*x+1,x,1+i)
newton(x^5+2*x+1,x,-1+i)
Equations
solve(eq,x) résolution exacte d'une équation
solve([eq1,eq2],[x,y]) résolution exacte d'un système
fsolve(eq,x) résolution approchée d'une équation
fsolve([eq1,eq2],[x,y]) résolution approchée d'un système
newton méthode de Newton
linsolve système linéaire
proot racines approchées d'un polynôme


Section : Outils pour l'Analyse
Avant : Primitives et intégrales
Après : Equations différentielles

R. De Graeve, B. Parisse, B. Ycart 2006