Comment approximer le numéro de condition d'une grande matrice?

9

Comment puis-je approximer le nombre de conditions d'une grande matrice G , si G est une combinaison de transformées de Fourier F (non uniformes ou uniformes), de différences finies R et de matrices diagonales S ?

Les matrices sont très grandes et ne sont pas stockées en mémoire et ne sont disponibles qu'en tant que fonctions.

En particulier, j'ai la matrice suivante:

Gμ=SHFHFS+μRHR

Je veux étudier la relation entre μ et le nombre de conditions k(Gμ) .

Je suppose que l'on a besoin d'une approche itérative? Idéalement, il y aurait du code MATLAB disponible.

Stiefel
la source
1
Gμ

Réponses:

11

MATLAB a quelques fonctions "exactes" pour cela, condet rcondavec ce dernier retournant une réciproque du numéro de condition. La fonction approximative de Matlab condestest décrite plus en détail ci-dessous.

Souvent, les estimations du nombre de conditions sont générées en tant que sous-produits de la solution d'un système linéaire pour la matrice, de sorte que vous pourriez être en mesure de superposer les estimations de nombre de conditions sur d'autres travaux que vous devez faire de toute façon. Voir ici pour une brève description de la façon dont les estimations sont calculées. De même, la documentation AztecOO de Sandia Labs fait remarquer (voir la section 3.1) que des estimations facultatives du nombre de conditions sont disponibles à partir de solveurs itératifs (en utilisant la matrice Lanczos tridiagonale générée avec des Gradients conjugués ou la matrice Hessenburg générée avec GMRES redémarré).

Étant donné que vos matrices sont "très grandes" et "uniquement disponibles en tant que fonctions", l'approche logique serait une méthode qui se superpose à un solveur ou variant de gradient conjugué.

Un récent article arXiv.org Approximations de valeurs propres extrêmes non stationnaires dans les solutions itératives de systèmes linéaires et d'estimateurs d'erreur relative propose une telle approche et a quelques citations de la littérature antérieure.

Maintenant que je regarde, ce forum a un certain nombre de questions précédentes étroitement liées (pas toutes avec des réponses, mais vérifiez les commentaires):

Estimer les valeurs propres extrêmes avec CG

Estimation des nombres de conditions pour de très grandes matrices

Algorithme le plus rapide pour calculer le numéro de condition d'une grande matrice dans Matlab / Octave


condestA1A11A1A11

Puisque votre matrice est apparemment hermitienne et définie positive, le nombre de conditions à 2 normes est peut-être plus intéressant. Le problème revient alors à estimer le rapport des valeurs propres les plus grandes aux plus petites (absolues). Le défi est quelque peu parallèle au cas de la norme 1 dans la mesure où il est généralement facile d'obtenir une bonne estimation de la plus grande valeur propre , mais il est plus difficile d'estimer la plus petite valeur propre.

Bien qu'il vise des cas non SPD (et même non carrés), ce récent article arXiv.org, Reliable Iterative Condition-Number Estimation , donne un bon aperçu du plus petit problème d'estimation des valeurs propres et une ligne d'attaque prometteuse par un sous-espace Krylov (LSQR) qui équivaut à des gradients conjugués dans le cas du SPD.

hardmath
la source
Merci pour votre réponse. Comment obtenir le numéro de condition comme produit secondaire d'un solveur de gradient conjugué?
Stiefel
@Stiefel: Il y a un article de 1992 sur le calcul approximatif des valeurs propres extrêmes et du nombre de conditions des matrices non singulières par Lei Guang-yao. Voyons voir si je peux trouver une meilleure référence (pas derrière un mur payant).
hardmath
@Stiefel: Ajout de quelques liens. Vous pouvez également consulter Google Books (ou une bibliothèque) pour les méthodes de solution itérative d' Owe Axelsson (1996), en particulier. Type. 13 Le taux de convergence de la méthode du gradient conjugué , bien que l'accent soit mis sur l'obtention de meilleures estimations du nombre d'itérations nécessaires à la convergence que le seul nombre de conditions.
hardmath
1
@Stiefel Avec un nom comme le vôtre, vous devriez nous enseigner la méthode CG :) Voir en.wikipedia.org/wiki/Eduard_Stiefel
stali