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

问题描述 投票:1回答:1

我遇到了一些使用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'

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

python-3.x sympy
1个回答
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。
© www.soinside.com 2019 - 2024. All rights reserved.