2012-03-16 4 views
1

Existe-t-il un moyen de calculer la puissance d'une matrice clairsemée dans matlab sans la convertir en une matrice complète. Si je tentePuissance d'une matrice clairsemée dans matlab

b = a^0.5 

où est une matrice creuse, je reçois l'erreur "Utiliser plein (x) complète^(y).". Cependant, la conversion d'une matrice complète en une matrice défait l'idée d'avoir une matrice clairsemée pour commencer. Quelqu'un sait si cela est possible?

+0

Ce [fichier] (http://www.mathworks.com/matlabcentral/fileexchange/25782-mpower2-a-faster-matrix-power-function) peut vous intéresser. –

+0

J'ai déjà essayé cela, le problème est qu'il ne permet que des puissances entières, et j'essaye d'augmenter à 0.5. – user818794

+0

Avez-vous une structure supplémentaire à exploiter dans votre matrice? – Memming

Répondre

3

La racine carrée de votre matrice clairsemée ne sera généralement pas éparse. Il n'y a donc aucun avantage à l'avoir éparpillé.

2

Ce dont vous avez besoin est de calculer vous-même la racine. On suppose une matrice carrée kxk, puis

[v d] = eigs (a, k) 
r = v*(d^0.5)*v' 

Cependant, cela ne fonctionnera pas pour les matrices non symétriques ou complexes, et il bat vraiment le but d'avoir une matrice creuse, parce que vous produisez une autre matrices couple qui sont pleins. Malheureusement, les vecteurs propres ne devraient pas être clairsemés. Ainsi, vous voyez pourquoi il est nécessaire de travailler avec des matrices complètes.

Questions connexes