• Aucun résultat trouvé

B Équations non linéaires à plusieurs variables

Dans le document Méthodes numériques et simulations (Page 183-187)

La résolution d’un système d’équations non linéaires couplées est un problème pour lequel il n’existe pas de méthode sûre et générale. Considérons par exemple le cas de deux variables x et

y obéissant à deux équations non linéaires simultanées qu’on peut toujours mettre sous la forme

f(x , y ) = 0 g(x , y ) = 0 (17.8)

où f et g sont des fonctions qui définissent le problème.

L’équivalent de ces équations en dimension 1 est une équation unique y(x ) = 0; si cette fonction est continue et que deux valeurs y(x1) et y (x2), l’une positive et l’autre négative, sont connues, alors une racine existe certainement. On ne peut affirmer l’existence d’une solution avec autant de généralité en dimension 2 : chacune des équations (17.8) définit une certaine courbe de niveau (une pour

f , l’autre pour g ). Une solution existe seulement si ces deux courbes de niveau se croisent. Il est

également possible que l’une ou l’autre des équations (17.8) n’ait pas de solution, c’est-à-dire que la courbe de niveau associée à la valeur 0 n’existe pas.

Une façon quelque peu brutale de tenter la solution des équations (17.8) est de les traiter comme une succession de problèmes unidimensionnels : On résout la première équation en fonction de

x pour une valeur donnée de y , qui est alors traité comme un paramètre. L’un des algorithmes à

une variable décrits ci-dessus est mis à contribution pour cela. On obtient ainsi une fonction x(y ), qu’on injecte ensuite dans la deuxième équation : g(x (y ), y ) = 0. Cette dernière équation est alors résolue, encore une fois par un algorithme à une variable. Cette approche a le mérite de la simplicité, mais est inefficace, car elle ne traite pas les deux variables sur un pied d’égalité, et accordera trop de précision à des valeurs intermédiaires de y .

17.B.1 Méthode de Newton-Raphson

Nous allons décrire la méthode de Newton-Raphson appliquée à N équations à N variables, qu’on écrira comme

f(x) = 0 ou fi(x) = 0 i= 1,...,N (17.9)

Commençons par un point de départ x0. Autour de ce point, les fonctions fiadmettent un dévelop- pement de Taylor : fi(x) = fi(x0) + ∑ j ∂ fi ∂ xj x0 δxj+ O (δx2) δx := x − x0 (17.10)

On note habituellement la matrice des dérivées premières (le jacobien) comme

Ji j:= ∂ fi

∂ xj

(17.11) et donc l’équation non linéaire peut s’écrire, à cet ordre d’approximation, comme

0= fi(x0) + Ji jδxj ou J(x0)δx = −f(x0) (17.12) ce qui constitue un système linéaire simple qu’on résout dans le but d’obtenir une nouvelle estima- tion de la racine cherchée :

δx = −J−1(x

0)f(x0) (17.13)

Répéter cette procédure revient à poser la relation de récurrence suivante :

xn+1= xn− J−1(xn)f(xn) (17.14)

Cette relation est la généralisation à plusieurs variables de l’équation unidimensionnelle (17.7).

17.B.2 Méthode de Broyden

La méthode de Broyden est une généralisation à plusieurs variables de la méthode de la sécante. Elle consiste à construire une suite d’approximations Jn (n= 0,1,2...) au jacobien ∂ f/∂ x, en utilisant la relation suivante, qui est une approximation aux différences :

Jn(xn− xn−1) = fn− fn−1 (17.15)

{xn} est la suite de points obtenus par la méthode et fn:= f(xn). Cette relation est pratiquement la même que (17.14), si on écrit cette dernière comme J(xn−1)(xn− xn−1) = −fn−1et en posant fn= 0.

Définissonsδxn= xn− xn−1etδfn= fn− fn−1. L’équation (17.15) prend alors la forme plus concise Jnδxn= δfn.

La relation (17.15) ne détermine pas complètement la matrice Jn. Il nous faut donc une prescription explicite pour passer de Jn à Jn+1qui soit compatible avec la relation (17.15). Dans la méthode de Broyden, cette prescription est la suivante :

Jn= Jn−1+

(δfn− Jn−1δxn)δxTn

δxT nδxn

(17.16) où le numérateur est le produit d’un vecteur-colonne par un vecteur-rangée, donc une matrice. On vérifie facilement que la prescription (17.16) respecte bien la condition (17.15).

La procédure de Broyden est donc la suivante : 1. On pose un point de départ x0.

2. On calcule une valeur initiale J0 du jacobien à x0 en procédant à une approximation aux différences.

3. On pose ensuite x1= x0− J−10 f0, ce qui nous donneδx1etδf1.

4. On calcule ensuite la prochaine valeur J1du jacobien en appliquant l’éq. (17.16) pour n= 1. En fait, on accomplit en boucle la transformation suivante pour n= 1,2,3,... :

Jn= Jn−1+

(δfn− Jn−1δxn)δxTn

δxT nδxn

et xn+1= xn− J−1n fn (17.17)

Remarquons qu’il n’est pas nécessaire d’inverser Jnpour cela : on peut simplement résoudre le système linéaire Jnδxn+1= fnpourδxn+1et poser xn+1= xn+ δxn+1.

5. On arrête lorsqueδxnest suffisamment petit.

Une variante de la procédure consiste à itérer non pas Jn, mais son inverse In= J−1n . On montre que, dans ce cas, la relation de récurrence est

In= In−1+

(δxn− In−1δfn)δxTnIn−1

δxT

nIn−1δfn

et xn+1= xn− Infn (17.18)

Cette variante ne nécessite pas d’inverser une matrice à chaque étape.

La méthode de Broyden est l’une des plus utilisées dans la résolution d’équations non linéaires à plusieurs variables.

17.B.3 Méthode itérative directe

Il arrive dans plusieurs applications que les équations non linéaires aient la forme suivante :

α désigne un paramètre ou un ensemble de paramètres. Ceci n’est évidemment pas restrictif, car tout système non linéaire peut être mis sous cette forme. C’est le cas notamment dans l’ap- proximation du champ moyen en physique statistique ou dans le problème à N corps en méca- nique quantique. Les paramètresα dans ce cas pourraient être la température, ou encore la force d’une interaction entre particules. Ces équations pourraient bien sûr être traitées par la méthode de Newton-Raphson, avec la fonction f(x) = K(x|α) − x. Il est cependant fréquent de leur appliquer une méthode de solution beaucoup plus simple, qui suppose que l’on connaît à l’avance une solu- tion dans un cas limite (par exemple pour une valeur préciseα0des paramètres). On suppose alors que, siα n’est pas trop différent de α0, on peut adopter comme première approximation la solution correspondante x= x0et appliquer la relation de récurrence suivante :

xn+1= K(xn|α) (17.20)

L’application répétée de cette relation, si elle converge, mène effectivement à la solution recher- chée. En pratique, si la solution est requise pour plusieurs valeurs deα, il est avantageux de pro- céder par proximité, en mettant sur pied une boucle surα qui recycle la solution x(α) de l’étape précédente comme point de départ de la nouvelle recherche pour la valeur suivante deα.

Cette méthode itérative directe est simple, mais converge moins rapidement que la méthode de Newton-Raphson.

Problème 17.3

Appliquez la méthode itérative directe à la solution de l’équation transcendante x=14ex, en adop- tant comme point de départ x = 0 (écrivez un court programme Python). Quel est le degré de convergence de cette méthode ?

Solution

On applique la récurrence xn+1=14exn avec x0= 0, et on trouve la suite

{xn} = 0 , 0.25 , 0.321006 , 0.344629 , 0.352866 , 0.355785 , 0.356825, · · · , 0.357402 . . . (17.21)

Les erreurs successivesδxn:= xn− x⋆, où x⋆est la solution exacte, se comportent manifestement comme

δxn+1= K(x⋆)δxn (17.22)

et donc le degré de convergence est linéaire.

Problème 17.4

Supposons qu’on veuille appliquer la méthode itérative directe à la solution de l’équation x =

λx (1−x ), en adoptant comme point de départ x = 0 et en faisant progresser λ de 0 jusqu’à 4. Quel

Boîte à outils

La fonctionscipy.optimize.root()peut appliquer plusieurs méthodes afin de trouver la ra- cine d’une fonction vectorielle à N variables. On doit spécifier le point de départ (un vecteur à N composantes). La méthode utilisée est spécifiée par le mot-clémethod. L’une des possibilités est la méthode de Broyden (method = broyden1), mais ce n’est pas la méthode par défaut.

Dans le document Méthodes numériques et simulations (Page 183-187)