Ухудшение производительности функции Симпета при применении к большим матрицам многочленов - PullRequest
0 голосов
/ 17 мая 2018

Это произошло после обновления sympy (1.0-> 1.1.1) и mpmath (0.19-> 1.0.0).

poly_mat = eval(poly_mat_str) det = poly_mat.det(method="berkowitz")

где poly_mat_str - строка repr для некоторой сложной полиномиальной матрицы (примеры по ссылке ниже). Ухудшение наблюдается в виде значительно увеличенного размера результирующих частиц и времени расчета. Обратите внимание, что полиномиальные матрицы меньшего размера, похоже, не подвержены изменениям, см. Билет для получения дополнительной информации.

В приведенной ниже таблице показаны изменения на моем компьютере для времени вычислений и результирующих размеров det для трех полиномов, которые можно найти здесь: пример полиномов

enter image description here

1 Ответ

0 голосов
/ 24 августа 2018

Это связано с изменением, которое произошло после симпактного рефакторинга (по-видимому).Полиномиальные матрицы должны быть созданы с использованием типа PolyMatrix.Следующий код будет работать как для 1.0, так и для 1.1.1:

try:
    from sympy.polys.polymatrix import PolyMatrix as sym_matrix
except ImportError:
    from sympy.matrices import Matrix as sym_matrix

, а затем создать матрицу, используя sym_matrix.

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