Je travaille sur un projet où je prépare des millions de PCA sur des ensembles de 20 à 100 points. Actuellement, nous utilisons un code hérité qui utilise le pack d'algèbre linéaire GSL de GSU pour faire la SVD sur la matrice de covariance. Cela fonctionne, mais est très lent. Je me demandais s'il existait des méthodes simples pour effectuer des décompositions propres sur une matrice symétrique 3x3, de sorte que je puisse simplement le mettre sur le GPU et le laisser fonctionner en parallèle. Comme les matrices elles-mêmes sont si petites, je n'étais pas sûr du type d'algorithme à utiliser, car il semble qu'elles aient été conçues pour de grandes matrices ou ensembles de données. Il y a aussi le choix de faire une SVD droite sur l'ensemble de données, mais je ne suis pas sûr de ce qui serait la meilleure option.Méthode rapide pour le calcul de la décomposition spectrale matricielle symétrique 3x3
Je dois admettre, je ne suis pas brillante à l'algèbre linéaire, en particulier lorsque l'on considère les avantages de l'algorithme. Toute aide serait grandement appréciée.
(Je travaille en C++ en ce moment)
De quelles valeurs spécifiques avez-vous besoin? Avez-vous besoin des valeurs propres elles-mêmes? La factorisation? Résoudre un système linéaire? Plus de détails peuvent être utiles. – Escualo
J'ai besoin des 3 valeurs propres elles-mêmes, avec le dernier vecteur propre. Merci – Xzhsh
Vous pouvez utiliser la méthode analytique, associée à l'arithmétique de précision multiple. Il devrait être plus rapide que les méthodes itératives basées sur QR, et ne devrait contenir que quelques branches. –