Ошибка в интеграции против NIntegrate в MMA8 - PullRequest
4 голосов
/ 17 мая 2011

Что здесь происходит (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) этот интеграл не имеет или, по крайней мере, не должен иметь полюсов в области интеграции.

EDIT: Благодаря людям, предлагающим решения этой проблемы, общее решение будет, например, использовать исключительно NIntegrate.Однако мне интересно узнать, почему именно это происходит и является ли эта ошибка предсказуемой.

1 Ответ

5 голосов
/ 17 мая 2011

Это ошибка в 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...