speed up numerical integration
- To: mathgroup at smc.vnet.net
- Subject: [mg59129] speed up numerical integration
- From: "Ruth Lazkoz" <ruth.lazkoz at ehu.es>
- Date: Sat, 30 Jul 2005 01:25:03 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Hi, Let us suppose that chi2f2[om,w] is a previously (and efficiently) defined complicated function. Is there a way to speed up this other function? chimar[(w_)?NumericQ] := -2Log[NIntegrate[Exp[-chi2f2[ 0.23 + omvar, w]]/2, {omvar, -0.07, 0.07}]] The whole code would be for instance (thanks to Peter Pein) In[1]:= Nn = 50; z = #1 & ; mi = #1^2 & ; smi = #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]; In[2]:=chimar[(w_)?NumericQ] := -2Log[NIntegrate[Exp[-chi2f2[ 0.23 + omvar, w]]/2, {omvar, -0.07, 0.07}]] In[3]:= Timing[chimar[0.2]] Out[3]= {0. Second, chimar[0.2]} Thanks so many.