проблема представления числа с плавающей точкой - PullRequest
4 голосов
/ 30 мая 2011

Я начал использовать numpy вместе с пакетом pysparse, который взаимодействует с UMFPACK, однако есть проблема с результатами с плавающей запятой с numpy. Кстати, это решатель собственных значений Ланцоша для структурных задач.

Когда я делаю те же операции в MATLAB, я получаю разные результаты, ну, результаты порядка 1e-6,1e-8, и с представлением MATLAB я получаю правильные собственные значения. Результаты NumPy и PySparse также не так далеки, по крайней мере, на уровне порядка, однако их использование для создания трехдиагональной матрицы, по которой можно найти собственные значения, является источником проблемы. Я не мог понять, что идет не так, хорошо, проблема в представлении с плавающей запятой, но как это исправить, если это возможно? Я пытался использовать «Float64» в качестве моего типа данных, но это не меняет результаты проблемы. Такие как

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

Еще один, какой самый зрелый редкий пакет для python и какие интерфейсы предоставляются, если таковые имеются? Как уже говорилось, PySparse показался мне хорошим с первого взгляда ...

1 Ответ

2 голосов
/ 26 сентября 2011

float64 - тип данных по умолчанию в Numpy. Вы можете попробовать использовать float128 для большей точности, но имейте в виду, что определенные функции (и в основном все в Windows) в любом случае приведут его к float64.

Я бы рекомендовал использовать scipy.sparse для ваших разреженных проблем с собственным вектором. Я пробовал и PySparse, и scipy.sparse, и я пришел бы к выводу, что хотя PySparse проще в использовании, scipy.sparse более зрелый.

Вот документация по разреженной линейной алгебре: http://docs.scipy.org/doc/scipy/reference/sparse.linalg.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...