Ускорение разложения по сингулярным числам с произвольной десятичной точностью и обращения матриц

Я использую mpmath для произвольной десятичной точности. Я создаю большие квадратные матрицы (30 х 30 и 100 х 100). В моем коде я выполняю разложение по единственному значению и инверсия матрицы с использованием встроенных пакетов mpmath.

Моя проблема в том, что mpmath работает медленно, даже с серверной частью gmpy. Мне нужна точность до 50 знаков после запятой (если решение быстрое, я предпочитаю, чтобы оно масштабировалось до большего количества знаков после запятой).

Есть ли решение для ускорения этих задач линейной алгебры в python?

Кто-то задал аналогичный вопрос здесь, но есть 2 отличия:

  1. Ответы не касались разложения по сингулярным значениям
  2. Ответы давали методы оценки обратного, но они не пытались показать, что приближение к истинному ответу быстрее, чем метод mpmath. Я попробовал решение, приведенное в этом посте, и обнаружил, что оно медленнее, чем внутренний алгоритм mpmath.

person Paul Terwilliger    schedule 10.05.2017    source источник
comment
Если Фредерик этого не видит, рассмотрите возможность создания вопроса в репозитории mpmath на Github. Процедуры линейной алгебры, вероятно, не получили такой любви, как все остальное, но, возможно, у него есть какая-то идея. Примите мои искренние наилучшие пожелания… это сложный вопрос.   -  person Ahmed Fasih    schedule 11.05.2017
comment
@AhmedFasih Я не знаком с открытием проблемы в репозитории Github ... Как мне это сделать?   -  person Paul Terwilliger    schedule 11.05.2017
comment
github.com/fredrik-johansson/mpmath/issues   -  person Ahmed Fasih    schedule 11.05.2017


Ответы (1)


Выход в этом случае — переписать код, который нужно ускорить, на чистый С/С++ с использованием самых быстрых алгоритмов. Например, попробуйте использовать библиотеку GPM на c++ напрямую, без использования оболочек python. После этого подключите этот код к коду Python с помощью pybind11. Пример с pybind11: https://github.com/pybind/python_example

person don_vanchos    schedule 18.07.2019