<p><strong>算法很慢。</strong></p>
<p>Sympy解释了<a href="http://docs.sympy.org/0.7.2/modules/matrices/matrices.html#sympy.matrices.matrices.MatrixBase.berkowitz" rel="nofollow noreferrer">the Berkowitz method in its documentation</a>,并引用了<a href="http://www.sciencedirect.com/science/article/pii/0020019084900188" rel="nofollow noreferrer">"On computing the determinant in small parallel time using a small number of processors"</a>;实现了<a href="http://docs.sympy.org/0.7.2/_modules/sympy/matrices/matrices.html#MatrixBase.berkowitz" rel="nofollow noreferrer">look at the open-source sympy code</a>。在</p>
<p>Berkowitz的复杂性很难理解,如果你不想用暴力来证明它的正确性<a href="http://arxiv.org/pdf/math/0201315.pdf" rel="nofollow noreferrer">then you need to get involved in some pretty hairy combinatorics</a>。在</p>
<p><em>对于高度Pararallized的体系结构,该算法的速度很快;它主要是因为高斯椭圆化没有很好地parralize。形式上,它在<a href="https://en.wikipedia.org/wiki/NC_%28complexity%29#The_NC_hierarchy" rel="nofollow noreferrer">class ^{<cd1>}</a>中。我猜你的测试不是在这样的架构上运行的。如果你对这个主题有更多的问题,一些研究人员会对算法<a href="https://cstheory.stackexchange.com/questions/12448/smallest-known-formula-for-the-determinant">seem to be contributors on CS.SE</a>感兴趣。在</p>
<p><strong>多项式调用很慢</strong></p>
<p><a href="http://docs.sympy.org/0.6.7/modules/polynomials.html#sympy.polys.Poly" rel="nofollow noreferrer">From the docs</a>,有多种构造多项式的方法,这取决于传递给构造函数的集合的类型(列表<code>[1]</code>、元组<code>[2]</code>或字典{<cd4>});它们导致不同的验证,并具有非常不同的性能。我要向你指出文件中的这一点(强调我的,大写他们的):</p>
<blockquote>
<p>For interactive usage choose <code>[1]</code> as it’s safe and relatively fast.</p>
<p>CAUTION: Use <code>[2]</code> or <code>[3]</code> internally for time critical algorithms, when
you know that coefficients and monomials will be valid sympy
expressions. Use them with caution! If the coefficients are integers
instead of sympy integers (e.g. 1 instead of S(1)) <strong>the polynomial will
be created but you may run into problems if you try to print the
polynomial</strong>. If the monomials are not given as tuples of integers you
will have problems.</p>
</blockquote>
<hr/>
<p>Sympy还保留在需要表达式输出之前对表达式进行懒惰求值的权利。这是符号计算好处的一个重要部分——数学简化可以带来精度和性能的提高,但也可能意味着复杂表达式的实际计算可能会延迟到意想不到的时间。在</p>