IPT_TP_méthodes itératives en algèbre linéaire_PCSI
- page 3 -
X
k+1
= ( 1
ω D + L)
− 1
(( 1 − ω
ω D − U)X
k
+ B) = (D + ωL)
− 1
((1 − ω)D − ωU)X
k
+ ωB)
ce qui donne en terme de composantes, les relations de récurrence :
x
i
(k+1)
= 1
a
i,i
( − ω
∑
j = 1
i − 1
a
i, j
x
j
(k + 1)
− ω
∑
j = i
n
a
i, j
x
j
(k)
+ a
i, i
x
i
(k)
+ ωb
i
)
La méthode converge
• si A est à diagonale strictement dominante et 0< ω ≤ 1
• si A est symétrique à valeurs propres réelles > 0 (donc si A est de la forme B
T
B, B inversible) et 0< ω < 2
>>> Ecrire une fonction relaxation(A, B, w, nb_iter, precision) qui implémente la méthode de relaxation.
>>> Tester sur les matrices
• A2, B2 et ω = 1,4
• A3 = [[4, 5, 9] , [7, 1, 6] , [5, 2, 9]] , B3 = [4, 9, 3] , ω = 1
• A3
T
A3 , A3
T
B et ω = 1
Recherche du paramètre ω
ωω
ω optimal
On suppose que A est de la forme B
T
B, B inversible de sorte que la méthode de relaxation converge pour 0 < ω < 2.
On veut tracer la courbe ω # ρ(P
− 1
A1) = ρ(I
n
− P
− 1
A) où P = 1
ω D + L .
>>> Ecrire une fonction w_optimal(A, N) qui réalise un échantillonnage de N points ω dans ]0,2[ et calcule le rayon spectral
correspondant ρ(I
n
− P
− 1
A).
(si A est bien de la forme voulue, on doit trouver ρ < 1 mais le calcul est possible pour A quelconque tant que P est
inversible).
Faire le tracé de la courbe ω # ρ(P
− 1
A1).
>>> Tester sur la matrice A2 et expliquer pourquoi on avait proposé la valeur ω = 1,4 plus haut.
Tester sur A3
T
A3 et trouver une valeur approchée du ω optimal. Appeler la fonction relaxation pour A3
T
A3 avec cette
valeur de ω et constater l'amélioration de la convergence.
Exercice 2
Etant donné une matrice carrée A dans M
n
() ou M
n
(), on cherche B tel que B
2
= A (B est une racine carrée de A).
L'existence et l'unicité de B ne sont pas garanties. C'est le cas cependant, si on suppose qu'on a les deux conditions :
• A et B sont symétriques
• les valeurs propres de A et B sont toutes strictement positives.
C'est le cas quand A est de la forme C
T
C avec C inversible (et on peut même supposer C triangulaire supérieure).
On suppose désormais que A est de cette forme. On veut déterminer B par une méthode itérative.
On s'inspire de la méthode utilisée dans pour trouver la racine carrée d'un réel positif a : x
n + 1
= 1
2 (x
n
+ a
x
n
) (c'est la
méthode de Newton attachée à la fonction f (x) = x
2
− a).
On considère donc la suite de matrices définie par la relation de récurrence :
X
0
= I
n
, X
k + 1
= 1
2 (X
k
+ AX
k
− 1
)
On prouve qu'elle converge bien vers l'unique racine carrée de A qui est symétrique à valeurs propres > 0.
>>> Ecrire une fonction rac_carree(A, N, precision) qui calcule une approximation de B avec au plus N itérations et un test
d'arrêt de la forme ||A − X
k
2
||
2
≤ 10
− precision
.
Afficher l'écart final ||A − X
k
2
||
2
au moment où on stoppe les itérations.