Risolvere un sistema lineare con argomenti a matrice


10

Conosciamo tutti i numerosi metodi computazionali per risolvere il sistema lineare standard

Ax=b.
Tuttavia, sono curioso di sapere se esistono metodi computazionali "standard" per risolvere un sistema lineare più generale (dimensione finita) della forma

A m 1 × n 1 B m 2 × n 2 L m 1 × n 1 m 2 × n 2 A x = b

LA=B,
dove, diciamo, è una matrice , è una e è un operatore lineare che porta matrici alle matrici , che non comporta la vettorializzazione le matrici , ovvero la conversione di tutto nella forma standard . Am1×n1Bm2×n2Lm1×n1m2×n2Ax=b

Il motivo che mi chiedo è che ho bisogno di risolvere la seguente equazione per :u

R R u f

(RR+λI)u=f
dove è la trasformata Radon 2d, suo adiacente, e sia che sono matrici 2d (immagini). È possibile vettorializzare questa equazione, ma è una seccatura, specialmente se si passa al 3D.RRuf

Più in generale, che dire delle matrici ? Ad esempio, risolvendo dove e sono array 3D (dovrò farlo anche con la trasformazione del Radon ad un certo punto).L A = B A BnDLA=BAB

Grazie in anticipo e sentiti libero di spedirmi in un altro StackExchange se ne senti il ​​bisogno.


1
Potresti essere in grado di costruire un precondizionatore multilivello efficace quindi utilizzare il gradiente coniugato. Ho un problema simile in cui questo è abbastanza efficace e molto parallelizzabile. Se desideri metodi diretti, prendi in considerazione riduzioni per ottenere la forma come in questo documento sull'equazione di Lyapunov: cs.cornell.edu/cv/ResearchPDF/Hessenberg.Schur.Method.pdf
Nick Alger

Eccellente, grazie per il ref! Ho appena fatto lavorare CG in modo efficace, quindi sono felice.
icurays1

Risposte:


9

Rny,xRe(yHx)

Una cosa che devi fare attenzione quando stai implementando CG (o simili approcci iterativi) con operatori lineari generali è implementare correttamente l' aggiunta del tuo operatore lineare. Cioè, le persone spesso ottengono giusto, ma fanno un errore nell'implementazione di .z = F ( y )y=F(x)z=F(y)

Consiglio di implementare un semplice test che sfrutti la seguente identità: per qualsiasi e conforme , Quindi, quello che fai è generare valori casuali di ed , eseguirli attraverso le operazioni a termine e adjoint, rispettivamente, e calcolare i due prodotti interni sopra. Assicurati che corrispondano con ragionevole precisione e ripeti alcune volte.y y , F ( x ) = F * ( y ) , x . x yxy

y,F(x)=F(y),x.
xy

EDIT: cosa fai se il tuo operatore lineare dovrebbe essere simmetrico? Bene, devi anche verificare quella simmetria. Usa lo stesso test, basta notare che --- applicano la stessa operazione di ed . Ovviamente, l'OP ha sia un operatore asimmetrico che uno simmetrico per gestire ... x yF=Fxy


Grazie @ChristianClason! So per esperienza quanto possano essere frustranti gli errori nei calcoli aggiunti. :) Nel nostro pacchetto TFOCS abbiamo implementato una linop_test.mroutine per questo motivo. Tale pacchetto supporta anche matrici, matrici e prodotti cartesiani in spazi vettoriali.
Michael Grant,

3

A quanto pare, poiché il mio sistema è simmetrico e definito positivo (poiché il mio operatore lineare è scritto come ), il gradiente coniugato può essere adattato per risolvere questo tipo di equazione in modo iterativo. L'unica modifica arriva quando si calcolano i prodotti interni, ovvero un tipico calcolo del prodotto interno in CG sembra o . Nella versione modificata, utilizziamo il prodotto interno Frobenius, che può essere calcolato sommando le voci del prodotto Hadamard (in senso puntuale). ier T k r k p T k A p kRR+λIrkTrkpkTApk

A,B=i,jAijBij

Sospetto che questo andrà bene quando eseguirò l'aggiornamento a array 3D, anche se devo ancora vedere il prodotto interno Frobenius definito su array 3D (lavorerò sul presupposto che posso nuovamente sommare semplicemente il prodotto puntuale).

Sarei comunque interessato a metodi più generali se qualcuno ne fosse a conoscenza!

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.