MATLAB ha un paio di funzioni "esatte" per questo cond
e 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
condest
∥A∥1∥A−1∥1∥A∥1∥A−1∥1
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.