Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

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

Search the Archive

Re: Parametric Numerical Integral

  • To: mathgroup at smc.vnet.net
  • Subject: [mg63133] Re: Parametric Numerical Integral
  • From: Peter Pein <petsie at dordos.net>
  • Date: Thu, 15 Dec 2005 03:06:42 -0500 (EST)
  • References: <dnopgm$2hb$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Nikola Letic schrieb:
> Hello,
> I have the following problem:
> I define a parametric integral as follows:
> int[p_]:=NIntegrate[If[t == 0, 0,1/(E^((1/2)*(-2 + 
> 1/t)^2)*(Sqrt[2*Pi]*t))],{t, -p, p}, MaxRecursion -> 50,WorkingPrecision -> 
> 50]
> 
> it works fine for numerical values of p such as int[10], but when I try 
> something like this:
> 
> << NumericalMath`NLimit`
> 
> NLimit[int[p], p -> Infinity]
> 
> it ends up with error messages:
> 
> NIntegrate::nlim: t = 1.00000 p is not a valid limit of integration.
> 
> Now I tought that NLimit should also deal only with numerical values, but I 
> was wrong. Seems that the way I defined this function above has serious 
> limitations in its further usage.
> 
> Does any of you Mathematica Gurus know an easy workaround for this?
> 
> Thanks in advance
> 
> Nikola Letic
> 
> 

Hi Nikola,

define int[] for numeric arguments only:

Needs["NumericalMath`NLimit`"];
f[t_] := 1/(E^((1/2)*(-2 + 1/t)^2)*(Sqrt[2*Pi]*t));
int[p_?NumericQ] := NIntegrate[f[t], {t, -p, 0, p}, WorkingPrecision -> 50, 
MaxRecursion -> 50]

The range {t, -p, 0, p} is a simple way to tell NIntegrate not to evaluate the 
function for t==0.

NLimit[int[p], p -> Infinity]
--> 0.639988

If you are just interested in a number, stop reading here.

I construct an expression, which combines the negative and the positive 
arguments of f and do a change of variables:

expr = Simplify[(f[t] + f[-t])*Dt[t] /. t -> 1/u /. Dt[u] -> 1]
--> -((-1 + E^(4*u))/(E^((1/2)*(2 + u)^2)*(Sqrt[2*Pi]*u)))

val = Integrate[-expr, {u, 0, Infinity}]
--> (Sqrt[Pi/2]*(I + Erfi[Sqrt[2]]))/E^2

Please, don't ask _me_ where _Mathematica_ found the I (most propably it's the 
"i" in "Theorem of Residues"). But the real part happens to be seemingly correct:

N[Re[val], 20]
0.63998807456540892568

Peter


  • Prev by Date: Re: Re: Remote Mathematica kernels and SSH password
  • Next by Date: Re: Mathematica Programmer vs. Programming in Mathematica
  • Previous by thread: Re: Parametric Numerical Integral
  • Next by thread: Timing differences