Risolvere un sistema con un aggiornamento diagonale di piccolo rango


9

Supponiamo che io abbia il sistema lineare ampio e originale: . Ora, non ho poiché A è troppo grande per essere considerato o qualsiasi tipo di decomposizione di A , ma suppongo che la soluzione \ textbf {x} _0 sia stata trovata con una soluzione iterativa.A - 1 A x 0UNX0=B0UN-1UNX0

Ora, desidero applicare un aggiornamento di piccolo rango alla diagonale di A (modifica alcune voci diagonali): (UN+D)X1=B0 dove D è una matrice diagonale con principalmente 0 sulla sua diagonale e alcuni valori diversi da zero. Se avessi UN-1 sarei in grado di sfruttare la formula di Woodbury per applicare un aggiornamento all'inverso. Tuttavia, non ho questo disponibile. C'è qualcosa che posso fare a parte risolvere nuovamente l'intero sistema? Esiste forse un modo per escogitare un precondizionatore M che è facile \ più facile da invertire, ad esempio MUN1UN0 , in modo che tutto ciò che dovrei fare se avessi X0 è applicare M-1 e un metodo iterativo converrebbe in un paio / poche iterazioni?


Stai iniziando con un buon precondizionatore per e vuoi sapere come aggiornarlo? Qual è il grado di aggiornamento? (Un aggiornamento di grado è "piccolo" rispetto a una matrice di dimensioni ma non piccola in termini di numero di iterazioni.)1000 10 9UN1000109
Jed Brown

10 6 10 7A una dimensione e e l'aggiornamento è <1000 (probabilmente <100) elementi. Sto usando un tipo diagonale di precondizionatore per A che funziona davvero bene, quindi l'aggiornamento sarebbe banale, ma mi chiedevo se c'è qualcosa di meglio che posso fare piuttosto che risolvere il nuovo sistema da zero. 106107
Costis,

2
La soluzione di un sistema non ti dice molto al riguardo. Se risolvi lo stesso sistema più volte, la mappa inversa su quei vettori (e / o spazi Krylov associati) ti fornisce alcune informazioni che possono essere utilizzate per accelerare la convergenza. Quanti sistemi risolvi in ​​ciascun caso?
Jed Brown,

Attualmente sto solo risolvendo per un RHS ( vettoriale) tra matrice prima di modificare . A ABUNUN
Costis,

Risposte:


4
  1. Salvare nelle colonne di due matrici e tutti i vettori a cui è stata applicata la matrice nelle iterazioni precedenti e i risultati .C b j c j = A b jBCBjcj=UNBj

  2. Per ogni nuovo sistema (o , che è il caso speciale ), risolvere approssimativamente il sistema lineare sovradeterminato , ad es. selezionando un sottoinsieme delle righe (possibilmente tutte) e usando un metodo meno quadrato denso. Si noti che solo la parte selezionata di deve essere assemblata; quindi questa è un'operazione veloce! A x = b D = 0 ( C + D B )(UN+D)X'=B'UNX=B'D=0 C + D B(C+DB)yB'C+DB

  3. Put . Questa è una buona approssimazione iniziale con cui iniziare l'iterazione per la risoluzione . Nel caso in cui siano necessari ulteriori sistemi, utilizzare i prodotti vettoriali a matrice in questa nuova iterazione per estendere le matrici e sul sottosistema risultante.( A + D ) x X0=By B C(UN+D)X'=B'BC

Se le matrici e non si adattano alla memoria principale, archiviare su disco e selezionare in anticipo il sottoinsieme di righe. Ciò consente di mantenere nel nucleo la parte rilevante di e necessaria per formare il sistema dei minimi quadrati e il successivo può essere calcolato con un passaggio attraverso con un uso ridotto della memoria principale.C B BBCBBx 0 BCX0B

Le righe dovrebbero essere selezionate in modo tale da corrispondere approssimativamente a una discreta discretizzazione dell'intero problema. Dovrebbero essere sufficienti cinque volte più righe del numero totale dei moltiplicatori di matrice previsti.

Modifica: perché funziona? Per costruzione, le matrici e sono correlate da . Se il sottospazio attraversato dalle colonne di contiene il vettore esatto della soluzione (una situazione rara ma semplice) allora ha la forma per qualche . Sostituendo questo nell'equazione che definisce ottiene l'equazione . Pertanto, in questo caso, il processo sopra riportato fornisce come punto di partenza , che è la soluzione esatta.BCC=UNBBX'X'X'=ByyX'(C+DB)y=B'X0=By=X'

In generale, non ci si può aspettare che si trovi nello spazio colonna di , ma il punto di partenza generato sarà il punto in questo spazio cloumn più vicino a , in una metrica determinata dalle righe selezionate. Quindi è probabile che sia un'approssimazione ragionevole. Man mano che vengono elaborati più sistemi, lo spazio della colonna aumenta e l'approssimazione probabilmente migliorerà molto, in modo che si possa sperare di convergere in sempre meno iterazioni.X'BX'

Modifica2: Informazioni sul sottospazio generato: Se uno risolve ciascun sistema con un metodo Krylov, i vettori utilizzati per ottenere il punto di partenza per il secondo sistema si estendono sul sottospazio Krylov del primo lato destro. Quindi si ottiene una buona approssimazione ogni volta che questo sottospazio di Krylov contiene un vettore vicino alla soluzione del secondo sistema. In generale, i vettori utilizzati per ottenere il punto di partenza per il sistema estendono su uno spazio contenente il sottospazio di Krylov dei primi lati di destra.(K+1)K


Grazie, Prof. Neumaier. Lo proverò. Potresti forse darmi una breve spiegazione su come funziona?
Costis,

Inoltre, se volessi risolvere lo stesso sistema per molti diversi vettori RHS? cioè , A x 1 = b 1 , A x 2 = b 2 , ecc. Ci sono delle informazioni che posso usare dalle soluzioni precedenti per accelerare quelle successive? UNX0=B0UNX1=B1UNX2=B2
Costis,

@Costis: una risoluzione con la stessa matrice è solo il caso speciale del problema generale. Per la tua prima domanda vedi la modifica. D=0
Arnold Neumaier,

@Costis: ho aggiunto un po 'più di dettagli al passaggio 2. - Se si scrive l'applicazione, si prega di inviare una prestampa.
Arnold Neumaier,

Grazie per la spiegazione! Perché non posso semplicemente risolvere il sistema sovradeterminato usando un approccio basato sulla fattorizzazione QR e usando tutte le righe anziché solo un sottoinsieme? Immagino che con l'aumentare del numero di colonne di C e B, potrei dover liberarmi di alcune file per rendere l'operazione più veloce. Certo, scriverò una descrizione del sistema e te lo invierò per e-mail. In realtà penso che sia possibile elaborare uno schema specifico per l'applicazione che funzioni meglio del caso più generale. Grazie! (C+DB)yB'
Costis,
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.