2011-05-30 3 views
4

J'ai commencé à utiliser numpy avec le paquet pysparse qui interface UMFPACK, mais il y a un problème avec les résultats à virgule flottante avec numpy. En passant, c'est un solveur lanczos eigenvalue pour les problèmes structurels. Quand j'effectue les mêmes opérations dans MATLAB, j'obtiens des résultats différents, les résultats sont de l'ordre de 1e-6,1e-8 et avec la représentation de MATLAB, j'obtiens les bonnes valeurs propres. Les résultats de NumPy et PySparse ne sont pas si loin, au moins au niveau de l'ordre, mais les utiliser pour créer une matrice triadonale sur laquelle trouver les valeurs propres est la source du problème. Je ne pouvais pas comprendre ce qui ne va pas, et bien la question est la représentation en virgule flottante, mais comment y remédier si possible? J'ai essayé d'utiliser 'Float64' comme mon type de données, mais cela ne change pas les résultats du problème. Tels queproblème de représentation à virgule flottante numpy et pysparse

q = ones(n, dtype = 'Float64') 

Un de plus, ce qui est le paquet clairsemé le plus mature pour python, et quel type d'interfaces sont prévues, le cas échéant? Comme dit, PySparse m'a semblé bon à la première vue ...

+2

Je pense que vous aurez besoin de fournir plus d'informations. Quelles fonctions appelez-vous qui donnent des résultats incorrects? Comment construisez-vous les valeurs d'entrée pour ces fonctions? (pouvez-vous poster un exemple de code simple qui démontre le problème?) – Luke

Répondre

2

float64 est le type de données par défaut dans Numpy. Vous pouvez essayer d'utiliser float128 pour plus de précision, mais soyez averti que certaines fonctions (et fondamentalement tout sur Windows) le forceront à float64 de toute façon. Je recommande d'utiliser scipy.sparse pour vos problèmes de vecteurs propres. J'ai essayé à la fois PySparse et scipy.sparse, et je conclurais que même si PySparse est plus facile à utiliser, scipy.sparse est plus mature.

est ici la documentation d'algèbre linéaire rares: http://docs.scipy.org/doc/scipy/reference/sparse.linalg.html

Questions connexes