J'ai un programme qui calcule la plus grande valeur propre de nombreuses matrices 50x50 symétriques réelles en effectuant des décompositions de valeurs singulières sur chacune d'entre elles. Le SVD est un goulot d'étranglement dans le programme.
Existe-t-il des algorithmes beaucoup plus rapides pour trouver la plus grande valeur propre, ou l'optimisation de cette partie ne donnerait-elle pas beaucoup de retour sur investissement?
Réponses:
Selon la précision dont vous avez besoin pour la plus grande valeur propre, vous pouvez essayer d'utiliser l' itération de puissance .
Pour votre exemple spécifique, j'irais jusqu'à ne pas former explicitement, mais calculer x ← X ( X T x ) à chaque itération. Le calcul de A nécessiterait des opérations O ( n 3 ) alors que le produit matrice-vecteur ne nécessite que O ( n 2 ) .A=XXT x←X(XTx) A O(n3) O(n2)
Le taux de convergence dépend de la séparation entre les deux plus grandes valeurs propres, donc cela peut ne pas être une bonne solution dans tous les cas,
la source
Si seulement 5 valeurs propres sont très significatives, l'algorithme de Lanczsos avec comme multiplication matrice-vecteur devrait donner une convergence linéaire rapide après 5 étapes initiales, d'où une valeur propre plus grande et assez précise avec peu d'itérations.X(XTx)
la source
Pour une matrice semi-définie positive telle que cela peut valoir la peine d'accélérer la convergence avec un décalage de spectre . Autrement dit, un scalaire adapté μ est choisi et la méthode de la puissance est appliquée à A - μ I au lieu d' un .A=XXT μ A−μI A
Quelques itérations de la méthode de puissance de base devraient vous donner une estimation approximative de la plus grande valeur propre λ 1 . En supposant que la valeur propre dominante a la multiplicité 1 et que toutes les autres sont dans [ 0 ,||Ax||/||x|| λ1 [0,56λ1] A−512λ1I 712λ1 [−512λ1,512λ1]
En d'autres termes, vous augmenteriez la dominance de la plus grande valeur propre de 20% sur la prochaine plus grande à 40% sur la prochaine plus grande (valeur absolue d'une) valeur propre. La convergence géométrique de la méthode de puissance s'accélérerait en conséquence. Une fois que la plus grande valeur propre deA - μ I est trouvé avec une précision suffisante, λ1 est estimé en ajoutant le décalage μ qui avait été enlevé.
Notez que vous n'avez pas besoin de former explicitementA - μ I car ( A - μ I) x = X( XTx ) - μ x peut toujours être calculé avec O ( n2) effort.
la source