AttributeError:模块'sympy'没有属性'polys'

时间:2017-12-18 15:56:14

标签: python-3.x sympy

我遇到了一些使用sympy的问题,这是我的代码:

from sympy import integrate as inter
import sympy as sp
from sympy import symbols 

def f(x):
    f1 = (sp.exp(-x ** 2)) / (1 + x ** 2)
    f2 = (2 * (sp.cos(x)) ** 2) / (1 + (x - 4) ** 2)
    f = f1 + f2
    return(f)

def integrate_f_from0(b):
    x = symbols('x')
    a = inter(f(x), (x, 0, b))
    return(a)

运行integrate_f_from0函数时出现的错误是:

AttributeError: module 'sympy' has no attribute 'polys'

导致此错误的原因是什么?

1 个答案:

答案 0 :(得分:3)

在SymPy 1.1.1中,您的代码按预期工作:integrate_f_from0(3)返回

Integral((2*x**2*exp(x**2)*cos(x)**2 + x**2 - 8*x + 2*exp(x**2)*cos(x)**2 + 17)*exp(-x**2)/((x**2 + 1)*(x**2 - 8*x + 17)), (x, 0, 3))

这意味着,SymPy找不到该积分的符号表达式,因此它返回未评估的值(尽管在搜索反导数的过程中进行了转换)。

使用Wolfram Alpha快速检查确认在基本功能方面没有反衍生物。

建议:

  1. 如果您有两个复杂函数的总和,请尝试一次整合一个术语。在这种情况下它没有帮助,但总的来说,你至少知道表达的哪个部分没有基本的反衍生物。

  2. 要找到积分数字,请使用N(Integral(f(x), (x, 0, 3)))(返回1.24063 ...),当然,对于数字积分,更有可能使用SciPy。