Criteri di arresto per i solutori lineari iterativi applicati a sistemi quasi singolari


16

Considera con quasi singolare, il che significa che esiste un autovalore di che è molto piccolo. Il solito criterio di stop di un metodo iterativo si basa sul residuo e per quanto riguarda le iterazioni possono fermarsi quando con il numero di iterazione. Ma nel caso che stiamo prendendo in considerazione, potrebbe esserci un grande errore vivendo nello spazio di origine associato al piccolo autovalore che fornisce residuo piccolo . Supponiamo che il residuo iniziale sia grande, quindi potrebbe accadere ci fermiamo aAx=bAλ0Arn:=bAxnrn/r0<tolnvλ0Av=λ0vr0rn/r0<tol ma l'errore è ancora grande. Qual è un indicatore di errore migliore in questo caso? Èun buon candidato?xnxxnxn1


3
Potresti pensare alla tua definizione di "quasi singolare". La matrice (con e la matrice identità) ha un autovalore molto piccolo, ma è tutt'altro che singolare come qualsiasi matrice potrebbe essere. Iϵϵ1I
David Ketcheson,

1
Inoltre,sembra la notazione sbagliata. è più tipico, no? ||rn/r0||||rn||/||r0||
Bill Barth,

Sì, hai ragione, Bill! Correggerò questo errore.
Hui Zhang,

1
Che dire di? e qual è esattamente il tuo algoritmo? bAx/b
shuhalo,

2
Addendum: Penso che il seguente documento risolva praticamente i sistemi mal condizionati di cui ti preoccupi, almeno se stai usando CG: Axelson, Kaporin: Errore nella stima delle norme e arresto dei criteri nelle iterazioni preconfezionate del gradiente coniugato. DOI: 10.1002 / nla.244
shuhalo,

Risposte:


13

Si prega di non utilizzare la differenza tra iterate successive per definire un criterio di arresto. Questo non identifica la stagnazione per la convergenza. La maggior parte delle iterazioni di matrice non simmetriche non sono monotone e persino GMRES in esatte aritmetiche senza riavvii può ristagnare per un numero arbitrario di iterazioni (fino alla dimensione della matrice) prima di convergere improvvisamente. Vedi esempi in Nachtigal, Reddy e Trefethen (1993) .

Un modo migliore per definire la convergenza

Di solito siamo interessati all'accuratezza della nostra soluzione più della dimensione del residuo. In particolare, potremmo garantire che la differenza tra una soluzione approssimativa e la soluzione esatta soddisfi per alcuni specificati dall'utente . Si scopre che può raggiungere questo obiettivo trovando un tale che dove è il più piccolo valore singolare di , a causa dixnx

|xnx|<c
cxn
|Axnb|<cϵ
ϵA

|xnx|=|A1A(xnx)|1ϵ|AxnAx|=1ϵ|Axnb|<1ϵcϵ=c

dove abbiamo usato che è il più grande valore singolare di (seconda riga) e che risolve esattamente (terza riga).1/ϵA1xAx=b

Stima del valore singolare più piccoloϵ

Una stima accurata del valore singolare più piccolo di solito non è direttamente disponibile dal problema, ma può essere stimata come sottoprodotto di un gradiente coniugato o iterazione GMRES. Si noti che sebbene le stime degli autovalori più grandi e dei valori singolari siano in genere abbastanza buone dopo solo poche iterazioni, una stima accurata del più piccolo autovalore / valore singolare si ottiene di solito solo una volta raggiunta la convergenza. Prima della convergenza, la stima sarà generalmente significativamente più grande del valore reale. Ciò suggerisce che è necessario risolvere effettivamente le equazioni prima di poter definire la tolleranza corretta . Una tolleranza di convergenza automatica che richiede una precisione fornita dall'utenteϵcϵcper la soluzione e le stime il più piccolo valore singolare con l'attuale stato del metodo Krylov potrebbe convergere troppo presto perché la stima di era molto più grande del valore reale.ϵϵ

Appunti

  1. La discussione sopra funziona anche con sostituito dall'operatore precondizionato a sinistra e dal residuo precondizionato o con l'operatore precondizionato a destra e l'errore . Se è un buon precondizionatore, l'operatore precondizionato sarà ben condizionato. Per il precondizionamento di sinistra, ciò significa che il residuo precondizionato può essere ridotto, ma il residuo reale potrebbe non esserlo. Per il precondizionamento corretto,viene facilmente ridotto, ma il vero erroreAP1AP1(Axnb)AP1P(xnx)P1|P(xnx)||xnx|potrebbe non essere. Questo spiega perché il precondizionamento di sinistra è migliore per ridurre gli errori mentre il precondizionamento di destra è migliore per ridurre i residui (e per il debug dei precondizionatori instabili).
  2. Vedi questa risposta per ulteriori discussioni sulle norme minimizzate da GMRES e CG.
  3. Le stime dei valori singolari -ksp_monitor_singular_valueestremi possono essere monitorate usando con qualsiasi programma PETSc. Vedi KSPComputeExtremeSingularValues ​​() per calcolare valori singolari dal codice.
  4. Quando si utilizza GMRES per stimare valori singolari, è fondamentale che i riavvii non vengano utilizzati (ad es. -ksp_gmres_restart 1000In PETSc).

1
'' funziona anche con A sostituito da un operatore precondizionato '' - Tuttavia, si applica solo al residuo precondizionato se si utilizza , resp. all'errore precondizionato se si utilizza . P1rP1AP1δxAP1
Arnold Neumaier,

1
Buon punto, ho modificato la mia risposta. Nota che il caso precondizionato a destra ti dà il controllo di , svolgendo il precondizionatore (applicando ) in genere amplifica le modalità a basso consumo nell'errore. PδxP1
Jed Brown,

6

Un altro modo di considerare questo problema è quello di considerare gli strumenti da discreti problemi inversi, cioè problemi che implicano la risoluzione di o dove è molto mal condizionato (cioè il rapporto tra il primo e l'ultimo valore singolare è grande).Ax=bmin||Axb||2Aσ1/σn

Qui, abbiamo diversi metodi per scegliere il criterio di arresto, e per un metodo iterativo, consiglierei il criterio della curva a L poiché coinvolge solo quantità già disponibili (NOTA BENE: il mio consulente ha aperto la strada a questo metodo, quindi sono decisamente orientato verso esso). L'ho usato con successo in un metodo iterativo.

L'idea è di monitorare la norma residua e la norma di soluzione , dove è il 'th iterate. Mentre ripetete, questo inizia a disegnare la forma di una L in un diagramma loglog (rho, eta) e il punto all'angolo di quella L è la scelta ottimale.ρk=||Axkb||2ηk=||xk||2xkk

Ciò ti consente di implementare un criterio in cui tieni d'occhio quando hai superato l'angolo (cioè guardando il gradiente di ), quindi scegli l'iterata che si trovava nell'angolo.(ρk,ηk)

Il modo in cui l'ho fatto ha comportato la memorizzazione degli ultimi 20 iterati e se il gradiente era più grande di qualche soglia per 20 iterazioni successive, sapevo di essere sulla parte verticale della curva e di aver superato l'angolo. Ho quindi preso la prima iterata nel mio array (ovvero le 20 iterazioni fa) come soluzione.abs(log(ηk)log(ηk1)log(ρk)log(ρk1))

Esistono anche metodi più dettagliati per trovare l'angolo, che funzionano meglio ma richiedono la memorizzazione di un numero significativo di iterate. Giocaci un po '. Se sei in MATLAB, puoi usare la casella degli strumenti Strumenti di regolarizzazione, che implementa alcuni di questi (in particolare la funzione "angolo" è applicabile).

Si noti che questo approccio è particolarmente adatto a problemi su larga scala, poiché il tempo di elaborazione aggiuntivo richiesto è minimo.


1
Molte grazie! Quindi nel diagramma loglog (rho, eta) iniziamo dalla destra della curva L e finiamo nella parte superiore di L, vero? Semplicemente non conosco il principio alla base di questo criterio. Puoi spiegare perché si comporta sempre come una curva a L e perché scegliamo l'angolo?
Hui Zhang,

Prego. Per un metodo iterativo, iniziamo da destra e finiamo sempre al top. Si comporta come una L a causa del rumore nel problema - la parte verticale si verifica in , dove è il vettore del rumore . Per ulteriori analisi, consultare Hansen, PC e O'Leary, DP (1993). L'uso della curva a L nella regolarizzazione di problemi discreti e mal posti. SIAM Journal on Scientific Computing, 14. Nota che ho appena fatto un leggero aggiornamento al post. ||Axb||2=||e||2ebexact=b+e
OscarB,

4
@HuiZhang: non è sempre una L. Se la regolarizzazione è ambigua può essere una doppia L, che porta a due candidati per la soluzione, uno con impresa grossolana meglio risolto, l'altro con determinati dettagli meglio risolti. (E, naturalmente, possono apparire forme morocomplesse.)
Arnold Neumaier,

La curva a L si applica ai problemi mal condizionati in cui dovrebbe esserci una soluzione unica? Cioè, sono interessato ai problemi Ax = b dove b è noto "esattamente" e A è quasi singolare ma tecnicamente invertibile. Mi sembrerebbe che se usi qualcosa come GMRES la norma della tua ipotesi attuale di x non cambi troppo nel tempo, specialmente dopo le prime tuttavia molte iterazioni. Mi sembra che la parte verticale della curva a L si verifichi perché non esiste una soluzione unica / valida in un problema mal posto; questa caratteristica verticale sarebbe presente in tutti i problemi mal condizionati?
nukeguy,

Ad un certo punto, raggiungerai una tale linea verticale, in genere perché gli errori numerici nel metodo della tua soluzione generano || Ax-b || non in calo. Tuttavia, hai ragione nel dire che in tali problemi privi di rumore la curva non sembra sempre una L, il che significa che in genere hai alcuni angoli tra cui scegliere e scegliere uno sopra l'altro può essere difficile. Credo che il documento a cui ho fatto riferimento nel mio commento sopra discuti brevemente scenari senza rumore.
OscarB,
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.