0% ont trouvé ce document utile (0 vote)
265 vues5 pages

TD Matlab

Ce document présente différentes méthodes numériques pour résoudre des problèmes de valeurs propres et de systèmes linéaires, et pour calculer le Laplacien d'une fonction. Il contient des explications détaillées sur la décomposition QR, les méthodes de Jacobi, Gauss-Seidel et SOR.

Transféré par

Mbarka Aadi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
265 vues5 pages

TD Matlab

Ce document présente différentes méthodes numériques pour résoudre des problèmes de valeurs propres et de systèmes linéaires, et pour calculer le Laplacien d'une fonction. Il contient des explications détaillées sur la décomposition QR, les méthodes de Jacobi, Gauss-Seidel et SOR.

Transféré par

Mbarka Aadi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TD MATLAB

Stefanie Hahmann, ENSIMAG

1 Méthode QR, recherche de valeurs propres


Rappel sur la factorisation QR :
Soit A une matrice m × n, sa factorisation QR est une factorisation A = QR avec Q
matrice m × ·m orthogonale
¸ (ie Q ∗ Q0 = Id) et R matrice m × n triangulaire supérieure
R1
de la forme où R1 est une matrice triangulaire supérieure n × n et la matrice
0
nulle au-dessous est de taille n × m − n.
Soit A une matrice carrée n × n.

1. Algorithme QR pour les valeurs propres


Partant de A = A0 , on crée une suite de matrices A1 , A2 , . . . , Ar , Ar+1 ainsi définie :

Méthode I
On factorise A en QR : Ar = Qr Rr
on retourne la factorisation : Ar+1 = Rr Qr
(r = 0, 1, 2, . . .)
On sait que :
- toutes les matrices Ar sont semblables à A0 .
- si A0 est symétrique, toutes les Ar le sont aussi.
- si on pose :
Qr = Q0 Q1 . . . Qr
Rr = Rr Rr−1 . . . R0
alors on a :
Qr Ar+1 = A0 Qr
Qr Rr = Ar+1 0

2. Ecrire un programme générant la suite Ar . L’expérimenter sur une matrice A0


(10 × 10) symétrique. On observera l’évolution de Ar (r jusqu’à 100 ou 150 si
nécessaire) : Visualiser la convergence de Ar vers la diagonale des valeurs
propres de A0 .
Recommencer pour quelques matrices A0 symétriques 5 × 5 ou 10 × 10.

2 Résolution de systèmes linéaires Ax = b


1. Méthode LU
Il s’agit ici d’utiliser la commande de factorisation LU, puis de résoudre successive-
ment les deux systèmes triangulaires.
2. Méthode de Jacobi
C’est une méthode itérative, il est donc intéressant de noter le nombre d’itérations.
On décompose la matrice A en L + D + U où L et U sont respectivement les parties
triangulaires strictement inférieure et strictement supérieure, et D est la diagonale
de A. On définit les matrices MJ = D et NJ = −(L + U ).
x0 = 0
xk+1 = MJ−1 ∗ (b + NJ xk )
On peut aussi l’écrire à l’aide des composantes :

i−1
X n
X
xk+1
i = (bi − Ai,j xkj − Ai,j xkj )/Ai,i
j=1 j=i+1

Traiter quelques exemples en générant des systèmes à votre guise.

3. Gauss-Seidel
On utilise la décomposition A = L + D + U , on définit les matrices MG = L + D et
NG = −U . L’itération s’écrit (en prenant x0 = 0) :
−1
xk+1 = MG ∗ (b + NG xk )

c’est-à-dire
i−1
X n
X
xk+1
i = (bi − Ai,j xk+1
j − Ai,j xkj )/Ai,i
j=1 j=i+1

Traiter les mêmes exemples pour comparer avec Jacobi.

4. SOR (Successive Over-Relaxation)


Il s’avère que la méthode de Gauss-Seidel converge d’autant plus lentement que le
−1 −1
rayon spectral de MG NG est proche de 1, en effet on a kxk − x∗ k ≤ k|MG NG k|k ∗
0 ∗ ∗
kx − x k, si Ax = b. Pour pallier cet inconvénient, on équilibre la répartition de
D entre M et N . On utilise un paramètre ω ∈]0; 1[ pour définir Mω = ω1 D + L et
Nω = (1−ω) 0
ω D − U , et l’itération devient (en prenant x = 0) :

xk+1 = Mω−1 ∗ (b + Nω xk )

c’est-à-dire
i−1
X n
X
xk+1
i = ω(bi − Ai,j xk+1
j − Ai,j xkj )/Ai,i + (1 − ω)xki
j=1 j=i+1

Vous expérimenterez cette méthode sur les mêmes exemples (pour pouvoir comparer
toutes ces méthodes), en essayant différentes valeurs de ω.
3 Calcul et visualisation du Laplacien

Cette troisième partie du TP a pour but de visualiser le comportement du Laplacien


d’une fonction u : Ω̄ ⊂ IR2 → IR
½
−∆u(x, y) = f (x, y) pour (x, y) ∈ Ω
u(x, y) = 0 pour (x, y) ∈ ∂Ω

pour plusieurs fonctions f : Ω → IR differentes† . Il s’agit d’appliquer plusieurs com-


mandes de visualisation de MATLABT M , comme mesh, surf, etc.
Le calcul du Laplacien par les différences finies est rappelé en Annexe.
Il y a en effet des commandes MATLABT M déjà prédéfinies pour ce problème. Vous
trouverez dans la suite certaines commandes qui vous seront utiles: Pour plus d’infor-
mation utilisez la commande help.
G = numgrid(’S’, n) Numérote les points de la grille de taille (n,n) d’une région
2-dimensionnelle. La forme de la région est à spécifier.
Ici on choisit le rectangle par ’S’.
D = delsq(G) Construit le Laplacien avec le schéma des différences finies
à 5 points. D sera une matrice sous forme sparse.
spy(D) visualise la densité d’une matrice
Attention, si vous créez une grille G(i, j), i, j = 1, . . . , n pour la discrétisation de taille
n, alors la matrice D du Laplacien est de la taille [(n − 2)2 × (n − 2)2 ]. Il faut donc
calculer la fonction u à l’intérieur de la grille, i.e., uij pour i, j = 2, . . . , n−1, et rajouter
la valeur de u sur le bord.
Après avoir calculé u sur la grille pour une fonction f que vous choisirez, il est demandé
de visualiser le résultat de différentes façons.


Comme vous allez certainement le découvrir tout seul on vous indique içi qu’il existe
dans les demos de MATLABT M déjà un exemple pour f ≡ 1.
Annexe: Rappel des différences finies
Problème:
Soit Ω =]x1 , xn [×]y1 , yn [ et une fonction f : Ω → IR de classe C 1 .
On cherche la fonction u : Ω̄ → IR, telle que
½
−∆u(x, y) = f (x, y) pour (x, y) ∈ Ω
(∗)
u(x, y) = 0 pour (x, y) ∈ ∂Ω.

Solution: Différences finies à 5-points


Discrétisation du problème (*) par différences finies:
y

yn n*n points
uij = u(xi,yj)
i,j=1,...,n
uij
yj
h

y1

x
x1 xi xn

On connait u déjà sur le bord de Ω:

u1,j = un,j = ui,1 = ui,n = 0 ∀ i, j

Reste à calculer u à l’intérieure de la grille:


ui−1,j + ui,j−1 − 4ui,j + ui,j+1 + ui+1,j
− = fi,j , i, j = 2, . . . , n − 1
h2
Ce qui donne un système linéaire de taille [(n − 2)2 , (n − 2)2 ] à résoudre:
   u2,2  
f2,2

T I
I T I  ..   .. 
  
. 



. 

 I T I    
    
  u   fi,j 
 ..   i,j
 = −h2  
 .    
    
    
    
 I T I   .
..   .
.. 
I T un−1,n−1 fn−1,n−1
Il s’agit d’une matrice tridiagonal par blocs, où T et I sont des blocs de taille [n−2, n−2]:
   
−4 1 1
 1 −4 1   1 
 ..   .. 
T =
 . 
 I=
 . 

 1 −4 1   1 
1 −4 1

Pour n = 7 on obtient donc une matrice du Laplacien de la forme suivante:


0

10

15

20

25
0 5 10 15 20 25
nz = 105

Vous aimerez peut-être aussi