5.13 Pour finir : méthode directe ou itérative ?
179
0
100
200
300
400
500
600
0
100
200
300
400
500
600
0
1
2
3
4
5
x 10
4
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
h=0.1, n=724, it=73
h=0.05, n=2849, it=161
h=0.025, n=11272, it=309
h=0.0125, n=44772, it=614
Figure 5.15. Structure d’une des matrices utilisées dans le quatrième cas
test (à gauche), et temps CPU (en sec.) nécessaire à la résolution du système
linéaire associé (à droite) : le trait plein correspond à la commande \, le trait
discontinu à la méthode itérative Bi-CGStab. Les valeurs en abscisses correspondent à la dimension n de la matrice, et it indique le nombre d’itérations
de Bi-CGStab
laires non structurés ont été générés avec la toolbox pdetool de MAT- pdetool
LAB. On a comparé le temps de calcul nécessaire à la résolution du
système linéaire pour h = 0.1, 0.05, 0.025 et 0.0125. On a utilisé la
commande \ de MATLAB, qui fait appel dans ce cas à la bibliothèque
UMFPACK, et l’implémentation MATLAB de la méthode itérative BiCGStab qu’on peut voir comme une généralisation de la méthode du
gradient conjugué pour les systèmes non symétriques. En abscisse, on
indique le nombre d’inconnues qui va de 724 (pour h = 0.1) à 44772
(pour h = 0.0125). Dans ce cas encore, la méthode directe est moins
coûteuse que la méthode itérative. Si on préconditionne Bi-CGStab avec
une factorisation LU incomplète, le nombre d’itérations serait réduit mais
le temps CPU serait plus élevé que dans le cas non préconditionné.
En guise de conclusion
Les comparaisons qu’on vient d’effectuer, bien que très limitées, permettent de souligner quelques points intéressants. En général, les méthodes directes (surtout quand elles sont implémentées de manière sophistiquée, comme pour la commande \ de MATLAB) sont plus efficaces
que les méthodes itératives quand ces dernières ne sont pas utilisées avec
des préconditionneurs performants. Cependant, elles sont plus sensibles
au conditionnement de la matrice (voir l’Exemple 5.16) et peuvent nécessiter une mémoire importante.
Il est également utile de souligner que les méthodes directes ont explicitement besoin des coefficients de la matrice, contrairement aux méthodes itératives. Pour ces dernières, il est seulement nécessaire de pou-
179
0
100
200
300
400
500
600
0
100
200
300
400
500
600
0
1
2
3
4
5
x 10
4
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
h=0.1, n=724, it=73
h=0.05, n=2849, it=161
h=0.025, n=11272, it=309
h=0.0125, n=44772, it=614
Figure 5.15. Structure d’une des matrices utilisées dans le quatrième cas
test (à gauche), et temps CPU (en sec.) nécessaire à la résolution du système
linéaire associé (à droite) : le trait plein correspond à la commande \, le trait
discontinu à la méthode itérative Bi-CGStab. Les valeurs en abscisses correspondent à la dimension n de la matrice, et it indique le nombre d’itérations
de Bi-CGStab
laires non structurés ont été générés avec la toolbox pdetool de MAT- pdetool
LAB. On a comparé le temps de calcul nécessaire à la résolution du
système linéaire pour h = 0.1, 0.05, 0.025 et 0.0125. On a utilisé la
commande \ de MATLAB, qui fait appel dans ce cas à la bibliothèque
UMFPACK, et l’implémentation MATLAB de la méthode itérative BiCGStab qu’on peut voir comme une généralisation de la méthode du
gradient conjugué pour les systèmes non symétriques. En abscisse, on
indique le nombre d’inconnues qui va de 724 (pour h = 0.1) à 44772
(pour h = 0.0125). Dans ce cas encore, la méthode directe est moins
coûteuse que la méthode itérative. Si on préconditionne Bi-CGStab avec
une factorisation LU incomplète, le nombre d’itérations serait réduit mais
le temps CPU serait plus élevé que dans le cas non préconditionné.
En guise de conclusion
Les comparaisons qu’on vient d’effectuer, bien que très limitées, permettent de souligner quelques points intéressants. En général, les méthodes directes (surtout quand elles sont implémentées de manière sophistiquée, comme pour la commande \ de MATLAB) sont plus efficaces
que les méthodes itératives quand ces dernières ne sont pas utilisées avec
des préconditionneurs performants. Cependant, elles sont plus sensibles
au conditionnement de la matrice (voir l’Exemple 5.16) et peuvent nécessiter une mémoire importante.
Il est également utile de souligner que les méthodes directes ont explicitement besoin des coefficients de la matrice, contrairement aux méthodes itératives. Pour ces dernières, il est seulement nécessaire de pou-
