Re: NIntegrate within FixedPoint (HoldAll)
- To: mathgroup at smc.vnet.net
- Subject: [mg24582] Re: NIntegrate within FixedPoint (HoldAll)
- From: Albert Maydeu-Olivares <amaydeu at tinet.fut.es>
- Date: Tue, 25 Jul 2000 00:56:14 -0400 (EDT)
- Organization: Universitat de Barcelona
- References: <8lgpvk$1r3@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hello everyone,
I have been able to locate the source of the problem I posted in the
group, but I still do not know how to solve it. In any case, you may
skip my previous message.
Let,
pdf2[h_, k_, x_] := N[E^((-(k*(k/(1 - x^2) - (h*x)/(1 - x^2))) -
h*(h/(1 - x^2) - (k*x)/(1 - x^2)))/2)/(2*Pi*Sqrt[1 - x^2]),
16];
cdf1[h_] := Chop[N[(1 + Erf[h/Sqrt[2]])/2, 16]];
cdf2[h_, k_, r_] := Chop[Module[{x},
NIntegrate[E^((-(k*(k/(1 - x^2) - (h*x)/(1 - x^2))) -
h*(h/(1 - x^2) - (k*x)/(1 - x^2)))/2)/(2*Pi*
Sqrt[1 - x^2]), {x, 0, r}, PrecisionGoal -> 10] +
cdf1[h] cdf1[k]]];
where cdf1 and cdf2 are the uni and bivariate standard normal CDF
functions.
For some values of t1, t2, and r I generate some "data"
In[2] =
t1 = 1.; t2 = -1.; r = .3;
obs = cdf2[t1, t2, r]
Clear[r]
Out[2]=
0.148338
Now, I recover the value r from obs using Newton's method (for fixed t1
and t2)
In[41]:=
step[r_] := r - (cdf2[t1, t2, r] - obs)/pdf2[t1, t2, r];
FixedPointList[step, .2, SameTest -> (Abs[#1 - #2] < 10.^(-6) &)]
Out[42]=
{0.2, 0.293054, 0.299959, 0.3, 0.3}
However, when I divide the step in FixedPoint in parts
a := cdf2[t1, t2, r];
b := obs;
c := pdf2[t1, t2, r];
step[r_] := r - (a - b)/c;
FixedPointList[step, .2, SameTest -> (Abs[#1 - #2] < 10.^(-6) &)]
I obtain the following error
NIntegrate::"nlim": "\!\(x$50\) = \!\(r\) is not a valid limit of \
integration."
I would like to know how can I get this piece of code to work. It's not
working because of the attribute HoldAll.
Any help would be sincerely appreciated.
Albert