Numero di condizione delle formulazioni A 'A e AA'


9

Viene mostrato (Yousef Saad, Metodi iterativi per sistemi lineari sparsi , p. 260) checond(AA)cond(A)2

Questo vale anche per ?AA

Nel caso sia con , osservo cheN × M N M c o n d ( A A ) c o n d ( A A )AN×MNMcond(AA)cond(AA)

Ciò significa che in questo caso è preferibile una formulazione in termini di ?AA


2
Stai confrontando i numeri delle condizioni di due matrici con dimensioni molto diverse. Senza una spiegazione del perché, sembra che quel confronto non sia probabilmente significativo. Certamente, se puoi ottenere ciò di cui hai bisogno usando una matrice molto più piccola, dovresti (anche se il condizionamento fosse simile).
David Ketcheson,

1
La nuova risposta di Stefano M di seguito è corretta. Per favore, leggilo e votalo.
David Ketcheson,

Risposte:


6

Se con , allora modo che non possa essere al livello completo, cioè è singolare. N < M r a n k ( A T A ) = r a n k ( A A T ) = r a n k ( A ) N < M A T A R M × MARN×MN<M

rank(ATA)=rank(AAT)=rank(A)N<M
ATARM×M

Di conseguenza, il numero della condizione è . A causa dell'aritmetica di precisione finita, se si calcola in MATLAB si ottiene un numero elevato, no .κ2(ATA)=cond(A'A)Inf


@OscarB: i valori singolari di sono solo N , non esiste un valore singolare come M ! La tua derivazione è corretta, ma tieni presente che se σ i , i = 1 N sono gli sv di A , allora S S T = d i a g ( σ 2 1 , , σ 2 n ) , mentre S T S = d i a g ( σ 2ANMσii=1NASST=diag(σ12,,σn2)conzeri finaliM-N. STS=diag(σ12,,σn2,0,,0)MN
Stefano M,

8

Beh, Diamo un'occhiata al motivo per cui ha circa il numero di condizionamento quadrato di A . Usando la decomposizione SVD di A = U S V T , con U R N × N , S R N × M , V R M × M , possiamo esprimere A T A comeATAAA=USVTURN×NSRN×MVRM×MATA

ATA=(USVT)TUSVT=VSTUTUSVT=VSTSVT

Che si arriva a notando che è ortonormale, tale che U T U = I . Inoltre notiamo che S è una matrice diagonale, tale che la decomposizione finale di A T A può essere espressa come V S 2 V T , con S 2 che significa S T S , producendo una matrice diagonale con i primi N valori singolari da S al quadrato in diagonale. Ciò significa che poiché il numero della condizione è il rapporto tra il primo e l'ultimo valore singolare, c o n d (UUTU=ISATAVS2VTS2STSS perARN×M, cond(A)=s1sNARN×M

cond(ATA)=s12sM2=(s1sM)2=cond(A)2

Ora, possiamo eseguire lo stesso esercizio con :AAT

AAT=USVT(USVT)T=USVTVSTUT=US2UT

Il che significa che otteniamo il risultato , poichéS2qui significaSST, una sottile differenza dalla notazione sopra.cond(AAT)=s12sN2S2SST

Ma nota quella sottile differenza! Per , il numero di condizione ha l'M-esimo valore singolare nel denominatore, mentre A A T ha l'N-esimo valore singolare. Questo spiega il motivo per cui si sta vedendo differenze significative nel numero di condizionamento - A A T sarà davvero “meglio condizionata” di A T A .ATAAATAATATA

Tuttavia, David Ketcheson aveva ragione: stai confrontando i numeri delle condizioni tra due matrici molto diverse. In particolare, ciò che si può realizzare con non sarà lo stesso di quello che si può realizzare con un A T .ATAAAT


Questa è un'ottima spiegazione! Vedo chiaramente la differenza ora. Matrice A è usato per costruire equazioni normali e con lievi modifiche si possono anche formulare come , non classica A ' A . Puoi dire anche se è vantaggioso usare il solutore come LSQR invece di risolvere equazioni normali? Poiché LSQR non richiede affatto la creazione di questo prodotto. AAAA
Alexander

Sono contento che abbia senso. In generale, è necessario considerare il condizionamento del problema. Ma, se questo non è un problema, è possibile utilizzare equazioni normali / fattorizzazione QR (di A) / LSQR, a seconda della dimensione del problema (tra le altre cose). A meno che il tuo problema non sia grande o mal condizionato, probabilmente applicherei la fattorizzazione QR, ma senza una maggiore conoscenza del problema che stai cercando di risolvere, è difficile da dire. Sono sicuro che altri con più esperienza potrebbero fornire consigli più dettagliati.
OscarB

La stessa A è mal condizionata (con numero di condizione di ), denso e grande. QR non è un'opzione. Dato che è mal condizionato, devo aggiungere comunque un po 'di regolarizzazione. Ora la semplice regolarizzazione di Tikhonov sembra essere sufficiente. Il punto è che se c o n d ( A ) < c o n d ( A A T ) < c o n d ( A T A ) (per il mio caso con N < M107cond(A)<cond(AAT)<cond(ATA)N<M) quindi l'utilizzo dell'LSQR sembra essere sempre preferibile poiché non è necessario formare alcun prodotto. La domanda è se le soluzioni ottenute con equazioni normali e LSQR sono identiche?
Alexander

Bene, a quanto ho capito, LSQR fornirà una soluzione identica alle equazioni normali dopo "infinitamente molte" ripetizioni con precisione esatta. Tuttavia, per problemi errati, la normale soluzione delle equazioni non è quella desiderata. Invece, si desidera utilizzare LSQR per iterare fino al raggiungimento della semi-convergenza. Tuttavia, il controllo di algoritmi iterativi in ​​problemi posti male è un altro gioco da ragazzi. Inoltre, a seconda del costo del prodotto vettoriale a matrice e del numero di iterazioni (e quindi di matvec) necessarie, una soluzione tikhonov diretta con bidiagonalizzazione potrebbe essere migliore.
OscarB

Spiegazione eccezionale. +1 per te signore!
meawoppl

2

L'affermazione che (per matrici quadrate) nella domanda e [Modifica: ho letto male] nella risposta di Artan è una sciocchezza. Contro-esempiocondA2condATA

A=(ϵ10ϵ),ϵ1

per cui puoi facilmente verificare che mentre cond A 2 = O ( ϵ - 2 ) .condATA=O(ϵ4)condA2=O(ϵ2)


Va bene sottolineare che e A T A sono in generale molto diversi per quanto riguarda gli eigs, svds, numero di cond: ma a mio avviso la domanda è circa [ c o n d ( A ) ] 2 . A2ATA[cond(A)]2
Stefano M,

@StefanoM Grazie, mi sembra di aver letto male, anche se dalla discussione, non ero l'unico.
Jed Brown,

1

In esatto aritmetico cond (A ^ 2) = cond (A'A) = cond (AA '), vedere ad es. Golub e van Loan, 3a edizione, p70. Questo non è vero nell'aritmetica in virgola mobile se A è quasi carente. Il miglior consiglio è di seguire le ricette dei libri sopra riportate quando si risolvono i problemi meno quadrati, il più sicuro è l'approccio SVD, p257. Utilizzare \ varepsilon-rank invece quando si calcola SVD, dove \ varepsilon è la risoluzione dei dati della matrice.


Mi dispiace, ho guardato Golub e Van Loan 3rd ed p. 70 e non è stato possibile trovare alcun backup dell'istruzione cond (A ^ 2) = cond (A ^ TA) = cond (AA ^ T). Potresti essere più specifico con il tuo riferimento?
OscarB

Non vi è alcuna affermazione lì, ma è possibile derivare dal teorema 2.5.2 e dallo pseudoinverso, sezione 5.5.4 che cond (AA ') = cond (A'A). Il motivo per cui prendo pseudoinverso è che questo è ciò che conta per il problema dei minimi quadrati in mano. L'uguaglianza dopo cond (A ^ 2) dovrebbe essere \ approssimativamente, scusate il refuso.
Artan

No, questa risposta è totalmente errata. Vedi il mio contro-esempio.
Jed Brown,

Saad deve aver parlato di questo punto in un contesto specifico. Ciò che è rilevante per la domanda in corso è l'argomento procedurale.
Artan,
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.