Conflicting Sage vs Wolfram evaluation of a limit?
>Why are the following computed limits different (1 by Sage, 0 by Wolfram), and which (if either) is correct?
EDIT: Increasing the numerical precision in Wolfram produces a plot that strongly suggests that the limit is indeed $0$, which it had already computed. Presumably, Sage is computing the wrong limit simply because of inadequate numerical precision, so the question is now ...
How can I increase the numerical precision in Sage, so that
limit()
andplot()
will produce the correct results (i.e., the limit should be $0$ and the plot should show a stable approach to $0$)?
Sage: (you can cut/paste/execute this code here)
#in()=
f(x) = exp(-x^2/2)/sqrt(2*pi)
F(x) = (1 + erf(x/sqrt(2)))/2
num1(a,w) = (a+w)*f(a+w) - a*f(a)
num2(a,w) = f(a+w) - f(a)
den(a,w) = F(a+w) - F(a)
V(a,w) = 1 - num1(a,w)/den(a,w) - (num2(a,w)/den(a,w))^2
assume(w>0); print(limit(V(a,w), a=oo))
plot(V(a,1),a,0,8)
#out()=
1 #<--------- computed limit = 1
Wolfram: (you can execute this code here)
#in()=
f[x_]:=Exp[-x^2/2]/Sqrt[2*Pi]
F[x_]:=(1 + Erf[x/Sqrt[2]])/2
num1[a_,w_] := (a+w)*f[a+w] - a*f[a]
num2[a_,w_] := f[a+w] - f[a]
den[a_,w_] := F[a+w] - F[a]
V[a_,w_] := 1 - num1[a,w]/den[a,w] - (num2[a,w]/den[a,w])^2
Assuming[w>0, Limit[V[a,w], a -> Infinity]]
Plot[V[a, 10], {a, 0, 100}, WorkingPrecision -> 128]
#out()=
0 (* <--------- computed limit = 0 *)
(This is supposed to compute the limit, as a -> oo, of the variance of a standard normal distribution when truncated to the interval (a,a+w).)
I don't know how to get the plot to use extra precision. You can evaluate
V
with as high precision as you like:V(20, 1).n(100)
will give 100 bits of precision, whileV(20,1).n(digits=100)
will give 100 digits of precision. For plotting, you could play with theadaptive_tolerance
andadaptive_recursion
arguments, although I haven't been able to use those to get anything good in this case. (It actually looks from the code like plotting usesfloat(...)
on its arguments, without an option to specify precision. But I am not an expert in the plotting code in Sage.)