MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Re: NIntegrate::inum continued

  • To: mathgroup at smc.vnet.net
  • Subject: [mg59222] Re: [mg59131] Re: NIntegrate::inum continued
  • From: wtplasar at lg.ehu.es
  • Date: Tue, 2 Aug 2005 00:42:53 -0400 (EDT)
  • References: <200507300525.BAA21839@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Peter's advice didn't work, perhaps I didn't implemented it OK, but 
his previous guidance help me in making some modifications to get a 
fast and unproblematic code:

In[1]:=
 datanw = {{0.04`, 
    36.38`, 0.19`}, {0.05`, 36.84`, 0.21`}, {0.0307`, 35.9`, 0.2`}}; 
In[2]:=
ndat = 3;
In[3]:=
  z = datanw[[#1, 1]] & ; mi = datanw[[#1, 2]] & ;  
smi = datanw[[#1, 3]] & ; SetAttributes[smi, Listable]; 
In[4]:=
f[x_, om_, w_] := 1/Sqrt[om*(1 + x)^3 + ( 1 - om)*(1 + x)^(3*(1 + 
w))]; 
In[5]:=
rr[1, om_, w_] := rr[1, om, w] = NIntegrate[f[x, om, w], {x, 0, z
[1]}]; 
In[6]:=
rr[i_?IntegerQ, om_, w_] := rr[i, om, w] = rr[i - 1, om,
     w] + NIntegrate[f[x, om, w], {x, z[i - 1], z[i]}];
In[7]:=
ff[i_?IntegerQ, om_, w_] := 5*Log[ 10, rr[i, om, w]*(1 + z[i])]; 
In[8]:=
ci = Sum[1/smi[i]^2, {i, 1, ndat}]; chi2f2[(om_)?
        NumericQ, (w_)?NumericQ] := Module[{vec = ((mi[#1] - ff[#1, 
om,  w])/
      smi[#1] & ) /@ Range[ndat]}, vec . 
    vec - Total[vec/smi[Range[ndat]]]^2/ci]; 
In[9]:=
chi2f2[om_, w_] := Sum[(
    mi[i] - ff[z[i], om, 
      w])^2/smi[i]^2, {i, 1, Nn}] - (Sum[(mi[i] - ff[z[i], om, 
        w])/smi[i]^2, {i, 1, Nn}])^2/ci
In[10]:=
Timing[chi2f2[0.1, -1]]
Out[10]=
{0.01 Second, 0.315617}

Thanks to all of you for your time.


> wtplasar at lg.ehu.es schrieb:
> > Hi,
> >
> > I have these code which is a modification on a code which was improved 
> 
> > by one of the mathgroup members (see the original message below). When 
> 
> > I evaluate it a get a Recursion Limit problem. Can you help me?
> >
> >
> > In[1]:=
> > datanw={{0.04`,36.38`,0.19`},{0.05`,36.84`,0.21`},
> > {0.0307`,35.9`,0.2`}};
> >
> > In[2]:=
> > ndat=3;
> >
> > In[3]:=
> > Nn = ndat;
> >
> > In[4]:=
> > z =datanw[[#1,1]]  & ; mi = datanw[[#1,2]] & ;
> >  smi =datanw[[#1,3]] & ; SetAttributes[smi, Listable]; f[
> >     x_, om_, w_] := 1/Sqrt[om*(1 + x)^3 + (
> > 1 - om)*(1 + x)^(3*(1 + w))]; rr[1, om_, w_] := rr[1, om, w] =
> >       NIntegrate[f[x, om, w], {x, 0, 1}];
> >       rr[zz_, om_, w_] := rr[zz, om, w] = NIntegrate[f[x,
> >                  om, w], {x, zz -
> >                   1, zz}] + rr[zz - 1, om, w]; ff[zz_, om_, w_] :=
> > 5*Log[
> >       10, rr[zz, om,
> >     w]*(1 + zz)]; ci = Sum[1/smi[
> >       i]^2, {i, 1, Nn}]; chi2f2[(om_)?
> >           NumericQ, (w_)?NumericQ] := Module[{vec = ((mi[#1] - ff
[z=
> 
> > [#1], om,
> >       w])/smi[#1] & ) /@
> >         Range[Nn]}, vec . vec - Total[vec/smi[Range[Nn]]]^2/ci];
> >
> >
> >
> > ---------- Mensaje reenviado ----------
> > Para: mathgroup at smc.vnet.net
> > Asunto: NIntegrate::inum
> > De: <wtplasar at lg.ehu.es>
> > Fecha: Thu, 28 Jul 2005 02:35:51 +0200 (CEST)
> >
> > Hi,
> >
> > I have to minimize a function which is defined through a numerical
> > integral. I get the "NIntegrate::inum .." error message. I know I 
can
> > switch it off, but I wonder if there is a more elegant way to deal
> > with the problem.
> >
> > These my input and output lines:
> > In[1]:=
> > Do[z[i] = i, {i, 1, 50}]
> > Do[mi[i] = i^2, {i, 1, 50}]
> > Do[smi[i] = i^3, {i, 1, 50}]
> >
> > In[4]:=
> > f[x_, om_, w_] := 1/Sqrt[om (1 + x)^3 + (1 - om)(1 + x)^(3*(1 + 
w))];=
> 
> > rr[zz_?NumberQ, om_, w_] := NIntegrate[f[x, om, w], {x, 0, zz}];
> > ff[zz_?NumberQ, om_, w_] := 5*Log[10, rr[zz, om, w]*(1 + zz)];
> > Nn = 50;
> >
> > In[8]:=
> > ci = Sum[1/smi[i]^2, {i, 1, 50}];
> >
> > In[9]:=
> > chi2f2[om_, w_] := Sum[(mi[i] - ff[z[i], om, w])^2/smi[i]^2, {i, 1,
> > Nn}] -
> > (Sum[(mi[i] - ff[z[i], om, w])/smi[i]^2, {i, 1, Nn}])^2/ci
> >
> > In[10]:=
> > Timing[NMinimize[{chi2f2[om, w], 0 =A1=DC om =A1=DC 1}, {om, w}]]
> >
> > NIntegrate::inum: Integrand ..... is not numerical at {x} = {0.5}
> >
> > Out[10]=
> > {38.966 Second, {0.26337, {om -> 0.999998, w -> 0.0738109}}}
> >
> >
> > Thanks in advance,
> >
> > Ruth Lazkoz
> >
> 
> In this case, there are other first arguments for rr possible than
> positive Integers. Replace the two definitions for rr by
> rr[zz_?NumericQ,om_?NumericQ,w_?NumericQ]:=NIntegrate[f[x,om,w],
{x,0,zz=
> }];
> and chi2f2[(om_)?NumericQ, (w_)?NumericQ]:=... by chi2f2
[om_,w_]:=...=
> =2E
> 
> Good luck,
> Peter
> --
> Peter Pein
> Berlin
> http://people.freenet.de/Peter_Berlin/
> 



  • Prev by Date: Re: fit a tube around a trajectory
  • Next by Date: Re: Re: Some bugs in Mathematica
  • Previous by thread: Re: fit a tube around a trajectory
  • Next by thread: Visualizing the "10th planet"