这里发生了什么(Mathematica 8.x 版):
NIntegrate[Log[1/2 + Sqrt[1/4 - 1/(4 x^2)]]/x, {x, 1, Infinity}]
--> -0.171007
Integrate[Log[1/2 + Sqrt[1/4 - 1/(4 x^2)]]/x, {x, 1, Infinity}] // N
--> 0.171007
NIntegrate[]
值是正确的。我之前遇到过 PrincipalValue
选择问题,但是 a) 这些问题已在 mma8 中修复,并且 b) 该积分在积分区域中没有或至少不应该有极点。编辑:感谢人们建议解决这个问题,一个通用的解决方案是,例如,只使用
NIntegrate
。但是,我有兴趣找出具体发生这种情况的原因以及此错误是否可以预测。 最佳答案
恐怕这是 Integrate
中的一个错误。作为解决方法,更改变量 x->u^(-1/2)
:
In[12]:= Log[1/2 + Sqrt[1/4 - 1/(4*x^2)]]/x Dt[x]/Dt[u] /.
x -> 1/Sqrt[u]
Out[12]= Log[1/2 + Sqrt[1/4 - u/4]]/(2 u)
然后
In[14]:= Integrate[%, {u, 1, 0}]
Out[14]= 1/24 (-\[Pi]^2 + Log[8] Log[16])
In[15]:= N[%]
Out[15]= -0.171007
这与
NIntegrate
一致。关于wolfram-mathematica - mma8 中 Integrate 与 NIntegrate 中的错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6035146/