Come approssimare il numero di condizione di una matrice di grandi dimensioni?


9

Come approssimo il numero di condizione di una matrice grande G , se G è una combinazione di trasformate di Fourier F (non uniforme o uniforme), differenze finite R e matrici diagonali S ?

Le matrici sono molto grandi e non memorizzate e sono disponibili solo come funzioni.

In particolare, ho la seguente matrice:

Gμ=SHFHFS+μRHR

Voglio studiare la relazione tra μ e il numero di condizione k(Gμ) .

Presumo che uno abbia bisogno di un qualche tipo di approccio iterativo? In modo ottimale, sarebbe disponibile un codice MATLAB.


1
Gμ

Risposte:


11

MATLAB ha un paio di funzioni "esatte" per questo conde rcond, con quest'ultima che restituisce un reciproco del numero di condizione. La funzione approssimativa di Matlab condestè descritta più dettagliatamente di seguito.

Spesso le stime del numero di condizione sono generate come sottoprodotti della soluzione di un sistema lineare per la matrice, quindi potresti essere in grado di eseguire il piggyback delle stime del numero di condizione su altri lavori che devi comunque svolgere. Vedi qui per una breve descrizione di come vengono calcolate le stime. Anche la documentazione AztecOO di Sandia Labs osserva (vedere Sez. 3.1) che le stime opzionali dei numeri di condizione sono disponibili presso i solutori iterativi (usando la matrice tridiagonale Lanczos generata con gradienti coniugati o la matrice Hessenburg generata con GMRES riavviato).

Poiché le tue matrici sono "molto grandi" e "disponibili solo come funzioni", l'approccio logico sarebbe un metodo che trasporta sulle spalle un risolutore di gradiente coniugato o una variante.

Un recente articolo di arXiv.org Approssimazioni di autovalori estremi non stazionari nelle soluzioni iterative di sistemi lineari e stimatori per errori relativi propone un simile approccio e ha alcune citazioni alla letteratura precedente.

Ora che guardo, questo forum ha una serie di domande precedenti strettamente correlate (non tutte con Risposte, ma controlla Commenti):

Stima autovalori estremi con CG

Stima dei numeri delle condizioni per matrici molto grandi

Algoritmo più veloce per calcolare il numero di condizione di una matrice di grandi dimensioni in Matlab / Octave


condestA1A11A1A11

Dal momento che la tua matrice è apparentemente eremitica e definita positiva, forse il numero della condizione a 2 norme è di maggiore interesse. Il problema equivale quindi a stimare il rapporto tra autovalori più grandi e più piccoli (assoluti). La sfida è in qualche modo parallela al caso della 1 norma in quanto in genere si può facilmente ottenere una buona stima per il più grande autovalore , ma stimare il più piccolo autovalore si rivela più difficile.

Pur mirando a casi non SPD (e anche non quadrati), questo recente articolo di arXiv.org, Stima del numero di condizioni iterative affidabili , offre una buona panoramica del più piccolo problema di stima degli autovalori e una promettente linea di attacco da parte di un sottospazio di Krylov metodo (LSQR) che equivale a gradienti coniugati nel caso SPD.


La ringrazio per la risposta. Come posso ottenere il numero di condizione come prodotto secondario di un risolutore di gradiente coniugato?
Stiefel

@Stiefel: c'è un articolo del 1992 sul calcolo approssimativo di autovalori estremi e il numero di condizione delle matrici non singolari di Lei Guang-yao. Fammi vedere se riesco a trovare un riferimento migliore (non dietro una pay-wall).
Hardmath

@Stiefel: aggiunti alcuni collegamenti. Potresti anche essere interessato a controllare Google Libri (o una biblioteca) per Iterative Solution Methods (1996) di Owe Axelsson , esp. Cap. 13 Il tasso di convergenza del metodo del gradiente coniugato , sebbene l'accento sia posto sull'ottenimento di stime migliori del numero di iterazioni richieste per la convergenza rispetto al solo numero di condizione.
Hardmath

1
@Stiefel Con un nome come il tuo dovresti insegnarci il metodo CG :) Vedi en.wikipedia.org/wiki/Eduard_Stiefel
stali
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.