Gros systeme linéaire
Sujet: Gros systeme linéaire De: nicolas.aunai (l' arobase) free.fr (Nico) Groupes: fr.comp.algorithmes, fr.sci.maths
Organisation: Guest of ProXad - France
Date: 28. Feb 2008, 20:24:04
Salut,
J'ai besoin de résoudre le systeme linéaire suivant :
S = (1-d^2*laplacien)B
d est un scalaire, S et B représentent un champ véctoriel défini sur une grille 2D, on a B(x,y) et S(x,y) donc définis sur une grille de disons n par m points.
Le "vecteur" S, et B représentant toute ma grille, ont donc au total nm composantes, et la matrice (disons M) représentant l'opérateur linéaire (1-d^2*Laplacien) est donc une matrice carré de taille (nm)^2.
Je connais les conditions limites sur B donc je peux écrire completement ma matrice M, ce que j'ai fait, et je trouve une matrice avec des 0 partout sauf sur 5 "diagonales"...
Tout ça me semble archi classique, je cherche donc une méthode pour résoudre ça.
Je pensais utiliser des méthodes itératives pour résoudre le systeme, par exemple un Gauss-Seidel, parce qu'ayant des 0 partout je ne voyais pas l'intéret de calculer l'inverse qui elle serait pleine.
Prenons, n=m=1024 par exemple. Je me rend compte que je ne peux même pas utiliser ces methodes (je pense) car je ne peux meme pas stocker ma matrice de 10^12 composantes environ.
Ma question est donc la suivante : Connaissez-vous un algorithme "malin" qui me permette de résoudre (de manière efficace) ce systeme linéaire en ne stockant par exemple que les termes non nuls ?
Je précise que cette résolution rentre dans un code plus général et interviendra plusieurs fois (4) par pas de temps, il est donc important qu'elle soit un brin efficace, autant que possible.
Je demande ici, car je n'ai pas la "culture" d'un numéricien, pourtant je suis sûr que ce genre de probleme est "classique", et que poser n=m=1024 ne me semble pas exagéré, il doit donc y avoir des biblio etc... qui proposent des solutions.
Merci beaucoup
Nico
|
|