metodo multigrid per risolvere la PDE


15

Ho bisogno di una semplice spiegazione del Metodo Multigrid o di alcune pubblicazioni al riguardo.

Conosco metodi iterazionali tra cui BiCGStab, CG, GS, Jacobi e precondizionamento, ma sono un principiante con il metodo multigrid.

Qualcuno può spiegarlo in dettaglio o almeno fornire chiaramente pseudocodice o codice sorgente, anche con una buona letteratura per i principianti? Grazie!

Risposte:


15

L'idea principale dietro multigrid è la proiezione. Provo a pensarci come segue:

Supponiamo che io voglia risolvere un PDE con molta precisione, quindi continuo a discretizzare il dominio (diciamo, usando il metodo della differenza finita) su una griglia molto fine con molti e molti punti. Alla fine, ho impostato il mio sistema di equazioni e sono pronto a risolverlo. Provo a usare il mio solutore iterativo preferito (jacobi, gauss seidel, coniugato gradiente, ecc ...). Continuo ad aspettare più di un giorno e mi rendo conto che il mio computer sta ancora cercando di calcolare la risposta !!!

Il motivo per cui questi metodi iterativi non funzionano rapidamente è perché (in genere) quando si imposta un grande sistema di equazioni come questo, la matrice stessa ha autovalori estremamente vicini a 1. Perché è importante? Perché il tasso di convergenza di molti metodi iterativi è inversamente correlato al più grande autovalore (vedere il link di Christian Clason alle diapositive di esercitazione multigrid di Brigg, parte 1, pagina 27). Quindi, più il più grande autovalore è vicino a 1, più lento è il metodo iterativo. (Nota: questo semplifica un po 'le cose, ma aiuta a motivare la necessità di multigrid).

Ovviamente, è sempre più veloce risolvere il problema se ci sono meno incognite (cioè su una griglia grossolana con meno punti griglia). Ma soprattutto, la soluzione (o soluzione approssimativa) su una griglia più grossolana è un buon punto di partenza per risolvere il problema su una griglia più fine. Questa è l'idea chiave dietro la maggior parte (se non tutti) i metodi multigrid. Perché è così? Intuitivamente, ha senso, ma esiste un modo matematicamente rigoroso di giustificarlo.

Diamo un'occhiata alle quattro modalità dell'errore in un metodo iterativo (per amor di argomenti, diciamo jacobi o gauss seidel) applicato al problema della griglia fine originale. Vedremmo che entro le prime iterazioni, la maggior parte degli errori ad alta frequenza (altamente oscillatori) è stata rimossa! Questo è fantastico, ma c'è un errore a bassa frequenza (meno oscillatorio) che rimane e non scompare rapidamente. In realtà, è un errore a bassa frequenza che impedisce a un metodo iterativo standard di convergere rapidamente.

quando risolviamo il problema su una griglia più grossolana (diciamo, con un metodo iterativo come jacobi o gauss-seidel), siamo essenzialmente in grado di rimuovere gli errori di frequenza inferiore molto più rapidamente (cioè in meno iterazioni) rispetto alla griglia fine . Quindi, se risolviamo il problema di una griglia grossolana, abbiamo una soluzione i cui errori di frequenza inferiore sono stati ridotti in modo significativo. Pertanto, sarebbe utile come punto di partenza per un metodo iterativo sulla griglia più fine.

Sebbene esistano diversi metodi multigrid, la maggior parte di essi opera con una variazione di quanto segue:

  1. Inizia con il problema della griglia fine
  2. Proietta su una griglia grossolana (nota anche come restrizione )
  3. Approssimazione della soluzione sulla griglia grossolana (usando qualche altro solutore)
  4. Proiettare la soluzione a griglia grossa sulla griglia più fine (nota anche come prolungamento )
  5. Usando la proiezione da 4. come ipotesi iniziale, risolvi il problema della griglia fine con un metodo iterativo.

Per me, la parte più difficile del metodo multigrid sono le proiezioni tra le griglie. I tutorial di Briggs suggeriti da @ChristianClason gestiscono questo argomento molto meglio di me.


Grazie per la risposta dettagliata! Ora ho alcune conoscenze di base sul metodo multigrdi. Ora ho una domanda specifica sui processi di restrizione e prolungamento. Ho letto che alcune Restriction matrix R e Interpolation Matrix M e formule come A2 = RAI erano solite fare proiezioni tra le griglie. Ma non ho capito come costruire le matrici R e io ... C'è qualche idea al riguardo?
Nurlan,

Guarda le diapositive 45-57 del tutorial multigrid di Briggs (parte 1) pubblicato da ChristianClason. Qui, Briggs descrive il processo per il metodo geometrico multigrid. Questa è la spiegazione più semplice che posso trovare. Se hai ulteriori domande a riguardo, sentiti libero di pubblicare una nuova domanda! :)
Paul

15

Questo sito non è probabilmente un buon posto per chiedere una spiegazione dettagliata con pseudocodice (come indicato nelle FAQ , "Se riesci a immaginare un intero libro che risponda alla tua domanda, stai chiedendo troppo"), quindi potresti voler per iniziare con uno dei libri classici su questo argomento (elencati di seguito) e tornare con domande specifiche su dettagli concreti con cui hai problemi.


2
Briggs è davvero bravo!
vanCompute il

5

Un altro classico:

  • Wesseling, An Introduction to Multigrid Methods, John Wiley & Sons, 1992.

Codici di esempio sono disponibili su MGNet

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.