Les systèmes linéaires clairsemés apparaissent de plus en plus fréquemment dans les applications. On a beaucoup de routines à choisir pour résoudre ces systèmes. Au niveau le plus élevé, il existe un fossé entre les méthodes directes (par exemple, l’élimination gaussienne ou la décomposition de Cholesky, avec des algorithmes de classement spéciaux et les méthodes multifrontales) et les méthodes itératives (par exemple, GMRES, à (bi) conjugué).
Comment détermine-t-on s'il faut utiliser une méthode directe ou itérative? Après avoir fait ce choix, comment choisit-on un algorithme particulier? Je connais déjà l'exploitation de la symétrie (par exemple, utiliser un gradient conjugué pour un système défini positif symétrique clairsemé), mais y a-t-il d'autres considérations de ce type à prendre en compte lors du choix d'une méthode?
Le choix entre les méthodes directes et itératives dépend des objectifs et du problème à résoudre.
Pour les méthodes directes, on peut noter:
Pour les méthodes itératives, on peut noter:
Lignes directrices pour savoir quand utiliser des méthodes directes ou itératives?
la source
Je suis tout à fait d'accord avec les réponses déjà données. Je voulais ajouter que toutes les méthodes itératives nécessitent une sorte de conjecture initiale. La qualité de cette hypothèse initiale peut souvent affecter le taux de convergence de la méthode choisie. Des méthodes telles que Jacobi, Gauss Seidel et Successive Over Relaxation fonctionnent toutes pour "lisser" de manière itérative autant d’erreurs que possible à chaque étape ( voir cet article pour plus de détails).). Les premières étapes réduisent assez rapidement l’erreur de haute fréquence, mais l’erreur de basse fréquence nécessite beaucoup plus d’itérations pour être atténuée. C'est ce qui ralentit la convergence pour ces méthodes. Dans de tels cas, nous pouvons accélérer la convergence en résolvant les erreurs de basse fréquence (par exemple, résoudre le même problème sur un maillage plus grossier), puis en résolvant l'erreur de fréquence plus élevée (par exemple, sur un maillage plus fin). Si nous appliquons ce concept récursivement par division et conquête, nous obtenons ce qu'on appelle une méthode multi-grille. Même si le système linéaire n'est pas symétrique, il existe d'autres variantes de la méthode multi-grille pour tout système matriciel maigre non singulier (par exemple, la méthode multi-grille algébrique) qui peuvent accélérer la convergence du solveur. Leur évolutivité sur des systèmes parallèles fait cependant l’objet de nombreuses recherches..
la source
Il vous manque un élément d’information important dans votre question: d’où vient la matrice? La structure du problème que vous tentiez de résoudre a un grand potentiel pour suggérer une méthode de solution.
Si votre matrice est issue d’une équation différentielle partielle à coefficients lisses, il sera difficile de battre une méthode géométrique multigrille, en particulier en trois dimensions. Si votre problème est moins régulier, le multigrille algébrique est une bonne méthode. Les deux sont généralement associés aux méthodes de Krylov-space. D'autres solveurs efficaces peuvent être dérivés de méthodes multipolaires rapides ou de transformées de Fourier rapides.
la source