Point fixe - Méthode de relaxation
Point fixe
Définition:
Un point fixe pour une application est un élément tel que
, c'est-à-dire un invariant de .
Par exemple, pour définie par , les nombres et sont des points fixes car et .
Si est une rotation, son seul point fixe est le centre de la rotation, tandis que si est une symétrie axiale, tout les points de l'axe de symétrie sont des points fixes.
Toute équation peut se ramener à la recherche d'un point fixe, par exemple
Pour les fonctions réelles, la propriété suivante est fondamentale: elle precise à la fois un cadre dans lequel une fonction admet un, et un seul, point fixe, ainsi que la construction d'une suite récurrente qui converge vers celui-ci.
Propriété
Soit dérivable et telle que
avec alors, pour tout , la suite définie par
converge vers l'unique point fixe de .
La fonction définie par vérifie:
admet bien une unique solution sur .
De plus, d'après le théorème des accroissements finis
et alors, par récurrence,
puis, comme ,
c'est-à-dire
- elle est continue et dérivable sur
- elle est strictement décroissante car
- puisque
- puisque
admet bien une unique solution sur .
De plus, d'après le théorème des accroissements finis
et alors, par récurrence,
puis, comme ,
c'est-à-dire
Relaxation
La convergence de la suite récurrente définie pardépend des variations de , donc de sa dérivée (si elle est dérivable).
En particulier, si cette dérivée est toujours strictement inférieure à 1, la convergence est assurée, et plus cette dérivée est petite (proche de 0), plus la convergence est rapide.
Pour tenter d'améliorer la convergence de cette méthode, on introduit un paramètre, dit de "relaxation", de la manière suivante: on souhaite trouver le point fixe
et on définit alors une suite récurrente par
En posant , la relation de récurrence précédente s'écrit comme un barycentre:
Cette suite converge d'autant plus rapidement que
est petit.
Comme on peut choisir librement le paramètre de relaxation, on voit qu'il est judicieux de prendre une valeur proche de
Bien sûr, cette valeur n'est pas connue d'avance, car on cherche justement , mais on peut imaginer en avoir une estimation ou un encadrement. On peut aussi actualiser sa valeur au cours des itérations.
Enfin, lorsque ce calcul doit être fait un nombre de fois important dans un algorithme, on peut chercher par tests numériques une valeur optimale qui sera ensuite utilisée systématiquement et accélerera les calculs successifs. On parle de méthode SOR: Successive Over Relaxation.
Un exemple et son traitement numérique
On considère l'équation , dont on connaît bien l'unique solution .Point fixe
On se ramène tout d'abord à un problème de point fixe:avec la fonction
et on définit alors une suite récurrente par
Par exemple, à partir de , on obtient les valeurs successives
tandis que pour :
La convergence est lente…
Relaxation du point fixe
On introduit un paramètre de relaxation:Par exemple, avec , on obtient
L'accélération de la convergence est ici une évidence…
Relaxation optimale
On ne peut pas toujours (et c'est même rare) connaître la valeur optimale du paramètre de relaxation, mais c'est le cas ici car on connaît effectivement la valeur limite recherchée: .On a, avec relaxation,
avec
et donc
La valeur optimale est donc pour
avec ici
et donc
ou encore
La vitesse de convergence est donc optimale pour la suite récurrente
Programmes python
Les programmes python suivants permettent d'obtenir les graphiques présentés dans l'exemple précédent. Les représentations graphiques utilisent Pylab.Méthode du point, et
from pylab import *
from math import log, exp
n=20
def g(x):
return x-(exp(x)-2)
x=[]
new=0
x.append(new)
for i in range(n):
new=g(new)
x.append(new)
plot(x,'-*b')
plot([-1,n],[log(2),log(2)],'-r')
xlim(-1,n)
ylim(0,1.2)
show()
Point fixe avec relaxation
from pylab import *
from math import log, exp
alpha=1
x=[]
new=0
x.append(new)
for i in range(n):
new=alpha/(alpha+1)*new+1/(alpha+1)*g(new)
x.append(new)
plot(x)
plot([-1,n],[log(2),log(2)],'-r')
xlim(-1,n)
ylim(0,1.2)
show()