Я думаю, что это может быть ошибка Integrate
.
Давайте определим ваш
U[x_] := If[x >= 0, Sqrt[x], -Sqrt[-x]]
и эквивалент
V[x_] := Piecewise[{{Sqrt[x], x >= 0}, {-Sqrt[-x], x < 0}}]
, которые эквивалентны реальным
FullSimplify[U[x] - V[x], x \[Element] Reals] (* Returns 0 *)
Для U
и V
аналитическая команда Expectation
использует параметр Method
"Integrate"
, что можно увидеть, запустив
Table[Expectation[U[x], x \[Distributed] NormalDistribution[1, 1],
Method -> m], {m, {"Integrate", "Moment", "Sum", "Quantile"}}]
Таким образом, то, что он действительно делает, это интеграл
Integrate[U[x] PDF[NormalDistribution[1, 1], x], {x, -Infinity, Infinity}]
, который возвращает
(Sqrt[Pi] (BesselI[-(1/4), 1/4] - 3 BesselI[1/4, 1/4] +
BesselI[3/4, 1/4] - BesselI[5/4, 1/4]))/(4 Sqrt[2] E^(1/4))
Интеграл для V
Integrate[V[x] PDF[NormalDistribution[1, 1], x], {x, -Infinity, Infinity}]
дает тот же ответ, но умноженный на коэффициент 1 + I
. Это явно ошибка.
Числовой интеграл с использованием U
или V
возвращает ожидаемое значение 0,796449:
NIntegrate[U[x] PDF[NormalDistribution[1, 1], x], {x, -Infinity, Infinity}]
Вероятно, это правильное решение.
Редактировать: Причина, по которой ответ kguler возвращает одинаковое значение для всех версий, состоит в том, что определение u[x_?NumericQ]
не позволяет выполнять аналитические интегралы, поэтому Expectation
не оценивается и возвращается к использованию NExpectation
при запросе его числового значения ..
Редактировать 2:
Еще больше разбирая проблему, вы найдете
In[1]:= N@Integrate[E^(-(1/2) (-1 + x)^2) Sqrt[x] , {x, 0, Infinity}]
NIntegrate[E^(-(1/2) (-1 + x)^2) Sqrt[x] , {x, 0, Infinity}]
Out[1]= 0. - 0.261075 I
Out[2]= 2.25748
In[3]:= N@Integrate[Sqrt[-x] E^(-(1/2) (-1 + x)^2) , {x, -Infinity, 0}]
NIntegrate[Sqrt[-x] E^(-(1/2) (-1 + x)^2) , {x, -Infinity, 0}]
Out[3]= 0.261075
Out[4]= 0.261075
В обоих диапазонах подынтегральное выражение вещественное, не колебательное с экспоненциальным затуханием. Не должно быть никакой необходимости в мнимых / сложных результатах.
В заключение отметим, что приведенные выше результаты верны для Mathematica версии 8.0.3.
В версии 7 интегралы возвращают гипергеометрические функции 1F1, а аналитический результат соответствует числовому результату. Так что эта ошибка (которая также присутствует в Wolfram | Alpha) является регрессией.