Méthodes itératives

Download Report

Transcript Méthodes itératives

Méthodes itératives
Point fixe d’une fonction
En débutant par le choix d’une valeur initiale considérée comme une première ébauche de
solution à un problème donné, la méthode du point fixe procède par itérations au cours
desquelles elle détermine une succession de solutions approximatives qui convergent vers
la solution cherchée après un nombre infini d’étapes. Les méthodes itératives diffèrent des
méthodes directes qui résolvent le problème en un nombre fini d’étapes (par exemple la
solution d'un système linéaire A*x = b obtenue en calculant la matrice inverse de A).
Un exemple simple est de calculer la solution de l’équation cos(x) – x =0 que l’on réécrit
sous la forme : x = cos(x). Partant d’une valeur initiale, par exemple x0 = -1, on applique la
récurrence xn+1 = cos(xn) et constatons que la suite converge vers la valeur β = 0.739085... :
x0=-1
x1=cos(x0)=0.54030
x2=cos(x1)=0.85755
...
x20=cos(x19)=0.73918
...
On dit que β est un point
fixe de la fonction cosinus
et on a : β = cos(β).
Il correspond à
l’intersection des courbes
y = cos(x) et y = x.
1
Méthodes itératives
Point fixe: exemples
x
x
3
3
2.5
2.5
2
2
1.5
1.5
1
1
0.5
0.5
0
0
-0.5
-0.5
-1
-1
-1
-0.5
0
0.5
1
x
1.5
2
2.5
La récurrence ne converge pas
forcément vers un point fixe
3
-1
-0.5
0
0.5
1
x
1.5
2
2.5
3
La fonction exponentielle ne
possède pas de point fixe
2
Méthodes itératives
Point fixe: fonction contractante
Soient f: E  ℝ une application et k un réel positif < 1.
On dit que f est contractante si :
Rq: Si on prend x et y suffisamment proches, f contractante  |f’(x)| < 1.
Considérons la récurrence xn+1 = f(xn), si f est contractante :
Alors elle possède un point fixe β = f(β) qui est la limite vers laquelle la suite converge (la
distance diminue à chaque itération).
D’un point de vue pratique si |f’(x)| > 1 dans le voisinage d’un point fixe β, alors la suite ne
convergera pas sur celui-ci.
Il existe de nombreux théorèmes du point fixe: http://fr.wikipedia.org/wiki/Théorèmes_de_point_fixe.
3
Méthodes itératives
On peut utiliser l’algorithme
g(x). En effet, on peut écrire:
Point fixe: recherche de zéro
pour chercher les zéros d’une fonction
Par la suite et si il y a convergence, on aura:
( est le point fixe de la fonction g(x)+x)
Exemple:
On cherche le zéro de g(x) = sin(cos(x)+sin(x)+1)2 - ½
 (x) = g(x) + x sur laquelle on tente d’appliquer la méthode du point fixe:
g = @(x) sin(cos(x)+sin(x)+1).^2- ½;
continuer=true;
niter = 1;
x(1) = -0.5;
while continuer
niter = niter + 1;
x(niter) = g(x(niter-1)) + x(niter-1);
% g(x) + x
if abs(x(niter) - x(niter-1)) < 1e-6, continuer = false; end
if niter > 50, continuer = false; end
end
converge en 25 itérations, alors que fzero trouve la solution en 10 itérations.
4
Méthodes itératives
Point fixe: recherche de zéro
Exemple:
On a vu que si |’(x)| > 1, alors la fonction n’est pas contractante et l’algorithme ne
convergera pas.
Supposons qu’on ait à résoudre x2 – 5 = 0 par une méthode de point fixe. Comme
précédemment on peut proposer la récurrence: xn+1 = xn2 - 5 + xn = (xn).
Le calcul de ’(x) autour de x = 51/2 montre alors qu’elle ne peut pas converger. ..
Une méthode simple pour définir une fonction  contractante est de procéder à un
« spliting »:
x2 – 5 = 0
2x2 – x2 – 5 = 0
2x2 = x2 + 5
x.2x = x2 + 5
x = (x2 + 5) / 2x  xn+1 = (xn2 + 5) / 2xn
qui converge (avec une valeur initiale x0 = 2).
D’autres façons de « spliter » sont possibles...
5
Méthodes itératives
Systèmes d’équations: méthodes directes, généralités
Un système de n équations linéaires de n
inconnues x tel que A*x = b, peut être
résolue par la méthode de Cramer qui
est une méthode directe (environ 2(n+1)!
opérations nécessaires).
Cependant, un ordinateur capable d’effectuer 109 opérations par seconde (1 giga flops)
mettrait 3240 ans pour résoudre un système avec n=20...
Parmi les autres méthodes directes (et plus efficaces), citons la factorisation LU (LowUp) qui consiste à transformer la matrice A en un produit de 2 matrices triangulaires :
A = L*U telle que: A*x = b  L*U*x = b, ce qui réduit le système en 2 systèmes
triangulaires L*y=b, U*x=y, faciles (rapides) à résoudre.
La commande « \ » de Matlab utilise de telles méthodes en s’adaptant au type de
matrice A: creuse, symétrique, à bandes, …
Les valeurs propres v d’une matrice A sont telles que A*v = v.
On appelle conditionnement d’une matrice A, le rapport K(A) = max / min. K(A) est une mesure de la façon dont
les erreurs d’arrondi se propagent dans les calculs.
max est appelé rayon spectral de la matrice A.
6
Méthodes itératives
Systèmes d’équations linéaires: un exemple de méthode itérative
Soit le système A*x=b:

Soit encore:
D’où l’on tire une méthode itérative
démarrant avec une valeur initiale (x0; y0; z0):
Remarquez que:
Et que:
Les itérations seront arrêtées lorsque :
sqrt{|xn+1 - xn|2 + |yn+1 - yn|2 +|zn+1 - zn|2 } < tolx une tolérance donnée
Commande Matlab : norm.
7
Méthodes itératives
Systèmes d’équations linéaires: Jacobi
Soit le problème linéaire A*x = b. On peut
appliquer une méthode itérative similaire à
celle du point fixe pour le résoudre.
La méthode de Jacobi* peut s’appliquer si les
éléments diagonaux de la matrice A sont non
nuls. On isole l’inconnue xi dans la iième ligne.
D’où l’on tire la méthode itérative:
Sous forme matricielle**, avec x(n) le vecteur x
calculé à l’itération n et D la matrice des
éléments diagonaux de A:
*Les
**
méthodes de sur-relaxation, Gauss-Siebel, … sont des variantes de Jacobi. Voir le livre de Quarteroni.
La méthode converge si le rayon spectral de la matrice d’itération D\(D-A) est < 1
8
Méthodes itératives
Systèmes d’équations non-linéaires, Méthodes directes ou itératives ?
Comme on l’a déjà vu, les systèmes non-linéaires ne peuvent pas se mettre sous la
forme A*x = b. Chacune des n équations peut cependant être spécifiquement
« splitée » de façon à générer une méthode itérative
Les méthodes directes nécessitent une mémoire importante de l’ordinateur.
Le choix direct ou itératif dépendra de l’efficacité théorique des algorithmes utilisés, du
type de matrice, de l’architecture de l’ordinateur, …
Il n’y a donc pas réponse définitive.
9
Méthodes itératives
Exercices et questions de cours
1/ Programmer une méthode itérative ( Newton) pour résoudre :
log(abs(x)) + 11sin(x)=7.
2/ Programmer une méthode itérative ( Newton) pour résoudre :
3 log( x1 )  11 sin( x 2 )  7
x1 
2
abs ( x 2  x1 )
4
3/ Programmer la méthode de Jacobi pour résoudre :
3 x1

11 x 2

2 x3

7
x1

x2

2 x3

4
x1

x2

x3

19
4/ Qu’est-ce qu’un point fixe d’une fonction f(x) ?
5/ Quelle est la différence entre une méthode directe et une méthode itérative ?
6/ Qu’est-ce qu’une fonction contractante ?
10