       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)

```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)

_____

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