2017-08-15 3 views
1

J'essaye d'une eigendecomposition hermitienne en utilisant la fonction pheigfact fournie avec le paquet LowRankApprox.jl dans Julia v0.6.0. Fondamentalement, c'était juste une ligne de code comme:Problèmes avec LowRankApprox dans Julia

(E, F) = pheigfact(A); 

où A est une vraie matrice symétrique définie positive. Cependant, j'ai l'erreur suivante:

MethodError: no method matching 
start(::LowRankApprox.PartialHermitianEigen{Float64,Float64}) 
Closest candidates are: 
    start(!Matched::SimpleVector) at essential.jl:258 
    start(!Matched::Base.MethodList) at reflection.jl:560 
    start(!Matched::ExponentialBackOff) at error.jl:107 

Appréciez toute aide!

Répondre

2

TL; DR

Utilisez la fonction pheig pas pheigfact de retourner un tuple de valeurs et vecteurs


réponse complète

Je n'ai pas le paquet, mais à partir des documents, il ressemble à pheigfact renvoie un seul élément à partir duquel vous pouvez accéder aux valeurs/vecteurs en utilisant getindex(x,ind::Symbol).

par exemple.

F = pheigfact(A) 
values=F[:values] 
vectors=F[:vectors] 

et si vous essayez et d'assigner un seul élément à un tube, il va essayer de itérer qu'un type qui ne le supporte pas et ainsi vous donner votre erreur (à savoir le type n'a pas la méthode start) . Je pourrais avoir une erreur semblable soit faire x,y = :onetwo ou start(:onetwo)

Solution

Utilisez la fonction pheig qui ne retourne un tuple.

E, F = pheig(A) 
+0

Cela a fonctionné! Je vous remercie! – ywa136