【问题标题】:Degradation of sympy det function performance when applied to large matrices of polynomials应用于大型多项式矩阵时,sympy det 函数性能下降
【发布时间】:2018-05-17 18:48:27
【问题描述】:

这发生在升级 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大小和计算时间。请注意,较小的多项式矩阵似乎不受影响,请参阅票证以获取更多信息。

下表显示了我机器上三个多项式的计算时间和结果 det 大小的变化,可以在这里找到:example polynomials

【问题讨论】:

  • 最好在SymPy issue tracker中打开这个。另外,请包括一些可以重现错误的代码,以及完整的回溯(不仅仅是最后一行)。
  • 感谢您的回复。是的,我计划为您的跟踪器进行完整的描述和复制。它似乎取决于我正在使用的多项式矩阵的大小。此外,我看到最新的计算时间更长,有时似乎卡住了。我不得不用旧的 sympy 发布我的项目,并且在修复之前将被锁定。
  • 我们正忙于出版 atm,良好的复制需要时间。所以可能在一个月后我才能创建这个问题。

标签: python sympy


【解决方案1】:

这是由于 sympy 重构之后发生的变化(显然)。多项式矩阵需要使用 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 创建您的矩阵。

【讨论】:

    猜你喜欢
    • 2018-02-27
    • 2021-06-20
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 2014-03-09
    相关资源
    最近更新 更多