sympy在integrate上生成异常(log(abs(x)),x)

2024-04-25 19:35:02 发布

您现在位置:Python中文网/ 问答频道 /正文

integrate(log(abs(x)),x)给出异常。但是integrate(log(x),x)没有。为什么?你知道吗

>python
Python 3.6.1 |Anaconda custom (64-bit)| (default, May 11 2017, 13:09:58) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from sympy import *
>>> x=symbols('x')
>>> integrate(log(x),x)
x*log(x) - x
>>> integrate(log(abs(x)),x)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/me/anaconda3/lib/python3.6/site-packages/sympy/integrals/integrals.py", line 1295, in integrate
    risch=risch, manual=manual)
  File "/home/me/anaconda3/lib/python3.6/site-packages/sympy/integrals/integrals.py", line 486, in doit
    conds=conds)
  File "/home/me/anaconda3/lib/python3.6/site-packages/sympy/integrals/integrals.py", line 926, in _eval_integral
    for arg in result.args
  File "/home/me/anaconda3/lib/python3.6/site-packages/sympy/integrals/integrals.py", line 926, in <listcomp>
    for arg in result.args
  File "/home/me/anaconda3/lib/python3.6/site-packages/sympy/core/basic.py", line 1554, in doit
    for term in self.args]
  File "/home/me/anaconda3/lib/python3.6/site-packages/sympy/core/basic.py", line 1554, in <listcomp>
    for term in self.args]
  File "/home/me/anaconda3/lib/python3.6/site-packages/sympy/integrals/integrals.py", line 397, in doit
    function = function.doit(**hints)
  File "/home/me/anaconda3/lib/python3.6/site-packages/sympy/core/basic.py", line 1554, in doit
    for term in self.args]
  File "/home/me/anaconda3/lib/python3.6/site-packages/sympy/core/basic.py", line 1554, in <listcomp>
    for term in self.args]
  File "/home/me/anaconda3/lib/python3.6/site-packages/sympy/core/function.py", line 1315, in doit
    return self.func(expr, *self.variables, **hints)
  File "/home/me/anaconda3/lib/python3.6/site-packages/sympy/core/function.py", line 1208, in __new__
    expr = Expr.__new__(cls, expr, *unhandled_variables, **assumptions)
TypeError: __new__() got an unexpected keyword argument 'manual'

这是枫树的结果

Mathematica graphics

如果sympy不能集成它,它是否应该返回未赋值的输入?你知道吗


Tags: inpyhomeforlibpackageslinesite
1条回答
网友
1楼 · 发布于 2024-04-25 19:35:02

在Sympy1.1中,问题中给出的代码抛出错误。但以下情况并非如此:

from sympy import *
x = symbols('x', real=True)
print(integrate(log(x),x))
print(integrate(log(abs(x)),x))

输出:

x*log(x) - x
Integral(log(Abs(x)), x)

虽然在计算过程中抛出未经处理的异常不是预期的行为(即,它是一个bug),但是值得注意的是,将实数变量声明为实数(并将正值声明为正值等)可以避免一些麻烦。你知道吗

请参阅assumption attributes的列表。你知道吗

相关问题 更多 >