penso che migh in realtà è un bug Integrate
.
Definiamo tuo
U[x_] := If[x >= 0, Sqrt[x], -Sqrt[-x]]
e l'equivalente
V[x_] := Piecewise[{{Sqrt[x], x >= 0}, {-Sqrt[-x], x < 0}}]
che sono equivalenti sui reali
FullSimplify[U[x] - V[x], x \[Element] Reals] (* Returns 0 *)
Per entrambi U
e V
, il comando analitica Expectation
utilizza il Method
opzione "Integrate"
questo può essere visto eseguendo
Table[Expectation[U[x], x \[Distributed] NormalDistribution[1, 1],
Method -> m], {m, {"Integrate", "Moment", "Sum", "Quantile"}}]
Così, quello che sta realmente facendo è l'integrale
Integrate[U[x] PDF[NormalDistribution[1, 1], x], {x, -Infinity, Infinity}]
che restituisce
(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))
L'integrale per V
Integrate[V[x] PDF[NormalDistribution[1, 1], x], {x, -Infinity, Infinity}]
dà la stessa risposta, ma moltiplicato per un fattore di 1 + I
. Questo è chiaramente un bug.
L'integrale numerico utilizzando U
o V
restituisce il valore atteso di 0,796,449 mila:
NIntegrate[U[x] PDF[NormalDistribution[1, 1], x], {x, -Infinity, Infinity}]
Questo è presumibilmente la soluzione corretta.
Edit: La ragione per cui kguler's answer restituisce lo stesso valore per tutte le versioni è perché la definizione u[x_?NumericQ]
impedisce gli integrali analitici vengano eseguite in modo Expectation
è non valutata e ripristina che utilizza NExpectation
quando richiesto per il suo valore numerico. .
Edit 2: Abbattere il problema un po 'di più, a trovare
In[1]:= [email protected][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]:= [email protected][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
su entrambe le gamme, l'integrando è reale, non oscillatorio con un decadimento esponenziale. Non ci dovrebbe essere alcun bisogno di risultati immaginari/complessi.
Infine notare che i risultati sopra riportati valgono per Mathematica versione 8.0.3. Nella versione 7, gli integrali restituiscono le funzioni ipergeometriche 1F1 e il risultato analitico corrisponde al risultato numerico. Quindi questo bug (che è presente anche in Wolfram | Alpha) è una regressione.
Penso che potrebbe essere un problema di diramazione nelle funzioni di Bessel ... È interessante notare che se utilizzo 'U [x_]: = Piecewise [{{Sqrt [x], x> = 0}, {-Sqrt [-x], x <0}}] 'invece del costrutto' If', quindi 'NExpectation' fornisce lo stesso valore, ma' N [Expectation [...]] 'restituisce il risultato complesso ovviamente sbagliato:' -0.104154 - 0.104154 I'. – Simon
@Simon, sembra un bug 'Integrate'. Con 'v [x _]: = Piecewise [{{Sqrt [x], x> = 0}, {-Sqrt [-x], x <0}}]', se provi 'N @ Expectation [v [x ], x \ Distributed NormalDistribution [1.0, 1.], Method -> "Integrate"] 'ottieni' -0.104154 - 0.104154 I'. Se modifichi il metodo, 'N @ Expectation [v [x], x \ [Distributed] NormalDistribution [1.0, 1.], Method ->" Moment "]' restituisce '0.796449'. – kglr
@kguler: Sì, ho notato che la mia ipotesi originale non era corretta. Vedi la mia risposta per una discussione più completa ... – Simon