2012-06-27 4 views
2

J'ai une fonction écrite en C pour calculer les valeurs propres et les vecteurs propres, mais cela prend beaucoup de temps CPU puisque j'appelle cette fonction plusieurs fois dans le cadre d'un autre algorithme. Selon Apple, le Accelerate framework peut être utilisé pour trouver des valeurs propres à partir de matrices très rapidement en utilisant BLAS et LAPACK. Comme je suis nouveau dans le framework Accélération, quelles fonctions dois-je utiliser pour trouver les valeurs propres et les vecteurs propres d'une matrice carrée?Comment trouver les valeurs propres et les vecteurs propres d'une matrice en utilisant le framework Accelerate?

Répondre

3

Cela dépend un peu du caractère de la matrice que vous souhaitez décomposer. Il existe différentes routines dans Lapack pour les matrices symétriques/hermitiennes, les matrices diagonales à bandes ou les matrices générales. Si vous avez une matrice générale (w/pas de structure particulière), vous devrez utiliser les routines de décomposition de Schur généralisées. Les routines sont divisées entre simple et double précision et entre les matrices avec des éléments réels ou complexes - tout comme Lapack.

Les routines de solveur Eigen-problèmes généraux sont nommés: SGEEV CGEEV DGEEV ZGEEV où S = réel simple précision, C = complexe simple précision, D = réel double précision, Z = complexe double précision.

IBM a une bonne référence en ligne pour lapack, here's un lien décrivant les routines ci-dessus.

Bonne chance!

Paul

+2

Ceci est une bonne réponse. Je voudrais souligner que les fonctions LAPACK dans la structure Accelerate attendent des données dans l'ordre ** column-major ** (comme dans Fortran), plutôt que dans l'ordre row-major (comme c'est le cas en C). C'est facilement la plus grande source de confusion et d'erreur pour les nouveaux arrivants. – warrenm

+0

Très bon point warrenm - se mélanger peut être un mal de tête. – Paul

+0

Merci beaucoup pour la réponse, je vais lire et essayer de mettre en œuvre – pradeepa

Questions connexes