Come posso stimare il numero di condizione di una matrice sparsa grande usando PETSc?


Risposte:


11

Per matrici piccole, il numero di condizione può essere calcolato in modo affidabile utilizzando la decomposizione del valore singolare. Fai un KSPSolve()con la matrice e corri con -pc_type svd -pc_svd_monitor.

Per matrici più grandi, è possibile stimare il numero della condizione utilizzando un metodo Krylov. Ad esempio, l'iterazione di Arnoldi eseguita da GMRES calcola in modo incrementale una decomposizione di Hessenberg. I valori singolari e gli autovalori estremi della matrice di Hessenberg sono buone approssimazioni a quelli della matrice originale. Per avere gli autovalori di stima PETSc in questo modo, eseguire con

-ksp_monitor_singular_value -ksp_type gmres -ksp_gmres_restart 1000 -pc_type none

Queste opzioni dicono di stimare i valori singolari estremi su ogni iterazione di Krylov. GMRES è usato per calcolare lo spazio di Krylov (potresti anche usare CG) con un grande riavvio. Al riavvio, GMRES scarta l'attuale spazio di Krylov, quindi tutti i progressi nelle stime di valori singolari vengono persi in un riavvio. L'ultima opzione -pc_type nonedice di eseguire questa iterazione sulla matrice non condizionata. Per impostazione predefinita, verrebbe utilizzato l'operatore precondizionato ( o ), quindi si otterrebbe una stima per l'operatore precondizionato.P1AAP1

Questo sarà generalmente accurato per i valori singolari più grandi, ma può sopravvalutare il valore singolare più piccolo a meno che il metodo non sia convergente. Se si dispone di un solutore per la matrice (ad es. Utilizzando KSPSolve()), è possibile stimare il valore singolare più piccolo di utilizzando la stessa procedura applicata ad .AA1

Utilizzare SLEPc se sono necessarie stime più accurate del valore singolare più piccolo (e per tutti gli altri problemi di autovalore e valore singolare).

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.