MathGroup Archive 2011

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

Search the Archive

Re: Numerical convolution

  • To: mathgroup at smc.vnet.net
  • Subject: [mg116434] Re: Numerical convolution
  • From: Bob Hanlon <hanlonr at cox.net>
  • Date: Tue, 15 Feb 2011 06:33:56 -0500 (EST)
  • Reply-to: hanlonr at cox.net

f1[x_] = PDF[NormalDistribution[0, 1], x];

Prior to version 8 the PDF for LogNormalDistribution was defined as

f2[x_] = 1/(E^((1/2)*Log[x]^2)*(Sqrt[2*Pi]*x));

This required the user to avoid negative arguments (which I did not). However, with version 8 the PDF for one-sided distributions uses Piecewise.

f3[x_] = PDF[LogNormalDistribution[0, 1], x]

Piecewise[{{1/(E^((1/2)*Log[x]^2)*(Sqrt[2*Pi]*x)), x > 0}}, 0]


convolve[f_, g_, t_?NumericQ] := NIntegrate[f[u]*g[t - u], {u, 0, t}];

NIntegrate[convolve[f1, f2, t], {t, -Infinity, 0}] // Re

0.5

NIntegrate[convolve[f1, f3, t], {t, -Infinity, 0}] // Re

NIntegrate::izero: Integral and error estimates are 0 on all integration subregions. Try increasing the value of the MinRecursion option. If value of integral may be 0, specify a finite value for the AccuracyGoal option. >>

0.

NIntegrate[convolve[f1, f2, t], {t, -Infinity, Infinity}] // Re

1.

NIntegrate[convolve[f1, f3, t], {t, -Infinity, Infinity}] // Re

0.5

Without Piecewise in its definition the PDF for LogNormalDistribution acts as if two-sided and gives the different result.  Alternatively, the definition of convolve could be changed for one-sided distributions.

convolve2[f_, g_, t_?NumericQ] := 
  NIntegrate[f[u]*g[t - u], {u, 0, Max[0, t]}];

NIntegrate[convolve2[f1, f2, t], {t, -Infinity, 0}] // Re

NIntegrate::izero: Integral and error estimates are 0 on all integration subregions. Try increasing the value of the MinRecursion option. If value of integral may be 0, specify a finite value for the AccuracyGoal option. >>

0.

NIntegrate[convolve2[f1, f2, t], {t, -Infinity, Infinity}] // Re

0.5


Bob Hanlon

---- "Rob Y. H. Chai" <yhchai at ucdavis.edu> wrote: 

=============
Dear Bob,

 

I found your suggested solution in MathGroup from 2007 for numerical
integration of a convolution integral. I tried it in Mathematica 8.0 and was
surprised to see that the results are now different from yours earlier.  

 

More specifically

 

NIntegrate[convolve[f1,f2,t],{t,-Infinity,Infinity}]//Re gives 0.5 as
opposed to 1.0

 

Any idea what might have happened? 

 

Thanks and sincerely

 

Rob Chai, UC Davis

 

==============================================================

Re: Numerical Integrate

*	To: mathgroup at smc.vnet.net
*	Subject: [mg72883] Re: [mg72864] Numerical Integrate
*	From: Bob Hanlon <hanlonr at cox.net>
*	Date: Wed, 24 Jan 2007 05:30:04 -0500 (EST)
*	Reply-to: hanlonr at cox.net

  _____  

Needs["Statistics`"];

 

f1[x_]=PDF[NormalDistribution[0, 1],x];

 

f2[x_]=PDF[LogNormalDistribution[0, 1],x];

 

convolve[f_,g_, t_?NumericQ]:=

    NIntegrate[f[u]*g[t-u],{u,0,t}];

 

NIntegrate[convolve[f1,f2,t],{t,-Infinity,0}]//Re

 

0.5

 

NIntegrate[convolve[f1,f2,t],{t,-Infinity,Infinity}]//Re

 

1.

 

 

Bob Hanlon

 

---- "mailcwc at gmail.com" <mailcwc at gmail.com> wrote: 

> I need to perform the following integration:

> 

> Integrate[  Convolution[G(t), X(t)], {t, -inf, 0}],

> 

> where G is Normal distribution, and X is Log-normal distribution.

> 

> As I know, there is no analytical form for the convolution.

> I tried NIntegrate to perform numerical calculation, but Mathematica

> can't accept it.

> Does anyone know how to deal such problem?




  • Prev by Date: Re: Another point about Mathematica 8.0
  • Next by Date: Re: Mathematica: subscript simplification under non-communicative multiplication.
  • Previous by thread: Re: Projectile Launched Around the Earth
  • Next by thread: Numerical Convolution