J'ai une matrice carrée symétrique réelle dense. La dimension est d'environ 1000x1000. Je dois calculer le premier composant principal et me demander quel pourrait être le meilleur algorithme pour ce faire.
Il semble que MATLAB utilise les algorithmes Arnoldi / Lanczos (pour eigs
). Mais en lisant à leur sujet, je ne sais pas s'ils ont des avantages par rapport à la simple itération de puissance , car ma matrice n'est pas rare et je ne suis intéressé que par le premier vecteur propre.
Des recommandations quel est l'algorithme le plus rapide dans ce cas?
linear-algebra
algorithms
eigensystem
Mika Fischer
la source
la source
Réponses:
La méthode la plus rapide dépendra probablement du spectre et de la normalité de votre matrice, mais dans tous les cas, les algorithmes de Krylov devraient être strictement meilleurs que l'itération de puissance. GW Stewart a une discussion intéressante sur ce problème dans le chapitre 4, section 3 des algorithmes matriciels, volume II: Eigensystems :
la source
L'itération de puissance est la plus simple, mais comme mentionné ci-dessus, elle convergerait probablement très lentement si la matrice n'est pas normale. Vous obtenez un phénomène de "bosse" où la séquence semble diverger pendant de nombreuses itérations avant que le comportement asymptotique ne se déclenche.
Comme votre matrice est symétrique, vous pouvez envisager des itérations RQI, qui dans le cas symétrique produisent une convergence cubique: http://en.wikipedia.org/wiki/Rayleigh_quotient_iteration .
Ce qui rend les itérations Arnoldi ou Lanczos très agréables (du moins à mon avis, mais je ne recherche pas l'algèbre linéaire numérique), c'est qu'elles sont très polyvalentes. Il est généralement possible de contrôler les valeurs propres qu'ils vous donnent et le nombre que vous obtenez. Cela est particulièrement vrai dans le cas symétrique (et encore mieux si votre matrice est définie). Pour les problèmes symétriques, ils sont très robustes. En tant que boîte noire, ils fonctionnent bien, mais ils sont également très réceptifs aux nouvelles informations sur les problèmes, telles que la capacité de résoudre des systèmes impliquant la matrice.
la source