Previous Up Next

6.62.6  Résolution d’équations : solve resoudre

solve permet de résoudre une équation ou un système d’équations polynômiales.
solve a 1 ou 2 arguments qui sont une expression xpr en x ou une expression xpr d’une variable var et le nom de cette variable var.
solve resout xpr=0 l’inconnue étant x ou var Attention
La deuxième variable peut spécifier un intervalle par exemple x=a..b pour n’avoir que les solutions dans l’intervalle [a;b] mais dans ce cas les solutions seront numériques et solve est alors identique à fsolve, par exemple :
solve(t^2-2,t=0..2) ou fsolve(t^2-2,t=0..2) renvoie [1.41421356237] alors que solve(t^2-2,t) renvoie [-(sqrt(2)),sqrt(2)].

Attention
Par défaut, solve ne renvoie que les solutions réelles : pour avoir les solutions complexes il faut être en mode complexe c’est à dire avoir coché Complexe dans la configuration du cas.
De plus,

Exemples :

Remarque Pour pouvoir par exemple trouver l’intersection d’une droite (donnée par son équation paramétrique) et un plan on peut mettre les équations sous la forme d’une liste contenant une liste.
Exemple : Trouver l’intersection de la droite D d’équation paramétrique [yz=0,zx=0,xy=0] et du plan P d’équation x−1+y+z=0.
On tape

solve([[y-z=0,z-x=0,x-y=0],x-1+y+z=0],[x,y,z])

On obtient :

[[1/3,1/3,1/3]]

Remarque
Différence entre solve et csolve : En mode complexe solve renvoie le même résultat que csolve (pour csolve que l’on soit en mode complexe ou réel cela importe peu). Ainsi, si on ne veut pas que le résultat dépende du mode, pour avoir les solutions complexes il est préférable d’utiliser csolve.
On tape en mode réel :

solve(re(r*exp(-(i)*t))-1,r)

On obtient :

[1/(cos(t))]

car en mode réel l’inconnue r est considérée comme un nombre réel.
On tape en mode complexe :

solve(re(r*exp(-(i)*t))-1,r)

On obtient :

[‘ x‘+(i)*1/(sin(t))*(-‘ x‘*cos(t)+1)]

car en mode complexe, l’expression contient i donc l’inconnue r est considérée comme un nombre complexe. La solution complexe est :
‘ x‘+(i)*1/(sin(t))*(-‘ x‘*cos(t)+1) (la partie réelle de r vaut ‘ x‘ qui est un nombre rèel quelconque et la partie imaginaire de r est fonction de ‘ x‘).
On tape en mode complexe ou réel:

csolve(re(r*exp(-(i)*t))-1,r)

On obtient :

[‘ x‘+(i)*1/(sin(t))*(-‘ x‘*cos(t)+1)]

car avec csolve, l’inconnue r est toujours considérée comme un nombre complexe.


Previous Up Next