我试图用sympy计算第二类不正确积分的精确值:
from sympy import integrate, log
from sympy.abc import x
print (integrate(log(x) * log(x) /(1+x*x), (x,0,1)))
这段代码返回了很多错误。可能我需要使用另一种方法吗?我试过Integral
并没有得到任何结果。
我想从Dwight表(863.61和863.10)计算这些积分:
我可以用数值方法计算它们,但我希望得到精确的解决方案。是否可以通过同情来获得第二类不正确积分的精确解?或者这些积分对于同情来说太复杂了?
答案 0 :(得分:2)
浮点数对于符号计算是有害的,尤其是像符号集成一样复杂。不要把它们放在符号积分中。
此外,宣布正面变量可能是一个很大的帮助。
x = symbols('x', positive=True)
int1 = integrate(log(x)**2 / (1 + x**2), (x, 0, 1))
int2 = integrate(log(1/x) / (1 - x), (x, 0, 1))
现在没有错误,但int1
只是未评估的原始积分; SymPy没有成功找到它的价值。它似乎超出了它的能力。
对于第二个,它返回polylog(2, -exp_polar(I*pi))
。复数I*pi
和exp_polar
的存在意味着SymPy正在进行一些复杂的平面工作,其中原点周围的缠绕量可能很重要。函数exp_polar
与exp
的不同之处在于exp_polar(2*I*pi)
不会像exp(2*I*pi)
那样简化为1:它保持转向360度而不转弯的区别。
但如果我们忽略所有这些并将exp
放在结果中,
polylog(2, -exp(I*pi))
评估为pi**2 / 6
,第二个积分的正确值。