Re: NIntegrate problem
- To: mathgroup at smc.vnet.net
- Subject: [mg84728] Re: NIntegrate problem
- From: Norbert Marxer <marxer at mec.li>
- Date: Fri, 11 Jan 2008 22:05:23 -0500 (EST)
- References: <fm7dur$euo$1@smc.vnet.net>
On 11 Jan., 10:47, Outof Africa <renaysi... at gmail.com> wrote:
> Hi All
>
> I would really appreciate any help on the following code. I get errors
> (a lot of them) in the from In[6] onwards....
>
> =========================
==========================
==================
> In[1]:= ndist = NormalDistribution[0, 1];
>
> In[2]:= a = Quantile[ndist, 0.05]
>
> Out[2]= -1.64485
>
> In[3]:= f[x_?NumericQ] := 1/Sqrt[2 \[Pi]] Exp[-x^2/2]
>
> In[4]:= g[t_?NumericQ] :=
> =A0NIntegrate[f[u]*CDF[ndist, (t - u)], {u, a, \[Infinity]}]
>
> In[5]:= b = b /. FindRoot[g[b] == 0.05, {b, -1}]
>
> Out[5]= -2.03202
>
> In[6]:= h[x_?NumericQ] := =A0NIntegrate[ =A0f[u]*Exp[-(x - u)^2/2]/Sqr=
t[2 \
> [Pi]], {u, a, \[Infinity]}]
>
> In[7]:= gg[t_?NumericQ] := =A0Integrate[ =A0h[u]*CDF[ndist, (t - u)/Sq=
rt[\
> [Delta]]], {u, b, \[Infinity]}]
>
> In[8]:= c = c /. FindRoot[gg[c] == 0.05, {c, -2}]
Hello
I took your code and made two modifications:
- I set \[Delta] = 2; (because it was not set).
- I replaced Integrate by NIntegrate in the definition of gg.
Then it seems to work OK:
ndist = NormalDistribution[0, 1];
{"a", a = Quantile[ndist, 0.05]}
f[(x_)?NumericQ] := (1/Sqrt[2*Pi])*Exp[-x^2/2]
g[(t_)?NumericQ] :=
NIntegrate[f[u]*CDF[ndist, t - u], {u, a, Infinity}]
{"b", b = b /. FindRoot[g[b] == 0.05, {b, -1}]}
h[(x_)?NumericQ] :=
NIntegrate[f[u]*(Exp[-(x - u)^2/2]/Sqrt[2*Pi]), {u, a, Infinity}]
\[Delta] = 2;
gg[(t_)?NumericQ] :=
NIntegrate[
h[u]*CDF[ndist, (t - u)/Sqrt[\[Delta]]], {u, b, Infinity}]
{"c", c = c /. FindRoot[gg[c] == 0.05, {c, -2}]}
The following plots show the different functions. Note that the
calculation of the curve for gg[x] takes quite a while (some minutes
on my coomputer).
(Plot[#1[x], {x, -5, 5}, ImageSize -> 200, PlotLabel -> #1] &) /@ {f,
CDF[ndist, #1] &, g, h,gg} // Column
It would probably be a good idea (for speeding up the calculations) to
approximate these (smooth) functions by Interpolation.
Best Regards
Norbert Marxer