Comment puis-je approximer le nombre de conditions d'une grande matrice , si est une combinaison de transformées de Fourier (non uniformes ou uniformes), de différences finies et de matrices diagonales ?
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:
Je veux étudier la relation entre et le nombre de conditions .
Je suppose que l'on a besoin d'une approche itérative? Idéalement, il y aurait du code MATLAB disponible.
Réponses:
MATLAB a quelques fonctions "exactes" pour cela,
cond
etrcond
avec ce dernier retournant une réciproque du numéro de condition. La fonction approximative de Matlabcondest
est 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
condest
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.
la source