Как мне сделать матричные вычисления в Python без округления? - PullRequest
1 голос
/ 17 октября 2011

У меня есть несколько целочисленных матриц среднего размера (несколько сотен строк). Мне нужно решить уравнения вида Ax = b, где b - стандартный базисный вектор, а A - одна из моих матриц. Я использовал numpy.linalg.lstsq для этой цели, но ошибки округления оказываются слишком значительными.

Как мне выполнить точное символьное вычисление?

(PS Мне не нужен код, чтобы быть эффективным; меня больше беспокоит легкость кодирования.)

Ответы [ 3 ]

2 голосов
/ 17 октября 2011

Если ваш единственный вариант - использовать бесплатные инструменты, написанные на python, sympy может работать, но может быть проще использовать mathematica.

1 голос
/ 17 октября 2011

Обратите внимание, что если вы серьезно относитесь к своему комментарию о том, что ваш вектор решения должен быть целочисленным, то вы ищете что-то, называемое "проблемой целочисленных наименьших квадратов".Который считается NP-трудным.Есть некоторые эвристические решатели, но все становится очень сложным.

0 голосов
/ 18 октября 2011

Библиотека mpmath поддерживает числа с плавающей запятой произвольной точности и поддерживает матричную алгебру: http://mpmath.googlecode.com/svn/tags/0.17/doc/build/matrices.html

Использование sympy для точного вычисления - это секундаопция.

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