为什么sympy count_ops()在集成的结果上失败?

为什么sympy count_ops()在集成的结果上失败?,sympy,Sympy,我使用sympy的count\u opt来估计integrate返回的anti-derivative的大小(叶数) 我发现它在某些表达式上失败。这是在上使用sympy 1.1.1 Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56) [GCC 7.2.0] on linux 这里有一个例子 from sympy import * x,n,a = symbols('x n a') integrand = x

我使用sympy的
count\u opt
来估计
integrate
返回的
anti-derivative
的大小(叶数)

我发现它在某些表达式上失败。这是在上使用sympy 1.1.1

   Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56) 
   [GCC 7.2.0] on linux
这里有一个例子

from sympy import *
x,n,a = symbols('x n a')
integrand = x**n*log(a*x)
anti= integrate(integrand,x)
count_ops(anti)
现在呢

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/anaconda/lib/python3.6/site-packages/sympy/core/function.py", 
    line 2473, in count_ops
    if a.is_Rational:
AttributeError: 'NoneType' object has no attribute 'is_Rational'
这是一个已知的问题吗?为什么会这样?这是虫子吗?我应该报告吗?怎么做


以上是linux Manjaro 17.1 XFCE上的函数
count\u ops
不希望看到
None
,它有时出现在
分段对象中。我得说这是一只虫子。已经是了

一种解决方法是将
conds='none'
传递给
integrate
,这将导致它忽略特例n=-1并返回一个表达式

n*x*x**n*log(a)/(n**2 + 2*n + 1) + n*x*x**n*log(x)/(n**2 + 2*n + 1) + x*x**n*log(a)/(n**2 + 2*n + 1) + x*x**n*log(x)/(n**2 + 2*n + 1) - x*x**n/(n**2 + 2*n + 1)
然后,
count\u ops
工作正常

anti = integrate(integrand, x, conds='none')
count_ops(anti)   # 49

哦,是的。我现在想起来了。我是一年前报道此事的人。我忘了。为什么还没有修好?好啊将添加一个异常处理程序。
anti = integrate(integrand, x, conds='none')
count_ops(anti)   # 49