Sympy和Wolframalpha给出了不同的结果

时间:2017-10-20 02:21:31

标签: python sympy integral wolframalpha

Sympy和wolframalpha产生了不同的结果。在这里做了什么明显的错误?

import sympy as smp
smp.init_printing()
In [2]:

a,R,t = smp.symbols('a,R,t',real=True)
In [3]:

f = t**2/(1+t**2/a**2);f
Out[3]:

enter image description here

In [4]:
I=smp.Integral(f,t); I
Out[4]:

enter image description here

In [5]:
I.doit()
Out[5]:

一个 2

Wolframalpha然而

enter image description here

2 个答案:

答案 0 :(得分:1)

这是SymPy中的一个错误:我打开了一个关于它的issue。同时,一种解决方法是声明a是积极的而不仅仅是真实的。无论如何,这个符号并不重要,因为a是平方的,但我想知道它的正面有助于SymPy在复杂的平面上做出正确的分支切割,或类似的东西。

>>> from sympy import *
>>> a = symbols('a', positive=True)
>>> t = symbols('t', real=True)
>>> integrate(t**2/(1+t**2/a**2), t)
a**2*(-a*atan(t/a) + t)

在此处使用integrate(expr, var),比Integral(expr, var).doit()更容易输入。

答案 1 :(得分:-1)

Sympy目前无法计算无限积分。它计算

$$\(\int_{x_0}^{x} f(x)dx\)$$

documentation有更多详情。

与wolfram alpha相同的免费工具sagemath 查看他们可以工作的online platform,并将工作表存储在云中。