       Re: a question about the UnitStep function

• To: mathgroup at smc.vnet.net
• Subject: [mg58447] Re: a question about the UnitStep function
• From: Maxim <ab_def at prontomail.com>
• Date: Sat, 2 Jul 2005 04:07:10 -0400 (EDT)
• References: <da2msl\$944\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```On Fri, 1 Jul 2005 06:12:37 +0000 (UTC), Zhou Jiang
<jiangzhou_yz at yahoo.com> wrote:

>
> Dear Mathgroup,
> I want to let Mathematica compute the convolution of two sqare waves. I
> did as follows
> f[x_]:=(UnitStep[x+1]-UnitStep[x-1])/2;
> integrand=f[z] f[x-z];
> Assuming[Element[x, Reals], Integrate[integrand, {z, -Infinity,
> Infinity}]]
> Mathematica gave me the result as follows,
> ((-1 + x) UnitStep[-1 + x] - x UnitStep[x] + (2 + x) UnitStep[2 + x])/4
> I plot the result to check
> Plot[%,{x,-10,10}, PlotRange->All];
> It is clear wrong since the convolution of two square waves should be
> convergent. Can anyone give me some help with the subtlties about the
> UnitStep function? Any thoughts are appriciable.
>

Use PiecewiseIntegrate
( http://library.wolfram.com/infocenter/MathSource/5117/ ):

In:=
PiecewiseIntegrate[f[z]*f[x - z], {z, -Infinity, Infinity}]

Out=
If[-2 < x < 0, (2 + x)/4, 0] + If[Inequality[0, LessEqual, x, Less, 2], (2
- x)/4, 0]

Also you can obtain the correct result from Integrate if you break the
domain of the parameter values into several 'simpler' cases:

In:=
L = Assuming[#, Integrate[f[z]*f[x - z], {z, -Infinity, Infinity}]]&;
Piecewise[{L[#], #}& /@ {x < -1, x == -1, -1 < x < 1, x == 1, 1 < x}] //
PiecewiseExpand

Out=
Piecewise[{{1/4, x == -1 || x == 1}, {1/2, x == 0}, {(2 - x)/4, 0 < x < 1
|| Inequality[1, Less, x, LessEqual, 2]}, {(2 + x)/4, Inequality[-2,
LessEqual, x, Less, -1] || -1 < x < 0}}]

But this isn't very reliable, for example, changing -1 < x < 1 to -1 < x
<= 1 would give a wrong answer.

Maxim Rytin
m.r at inbox.ru

```

• Prev by Date: Re: Controlling inverses of functions
• Next by Date: Re: Integrate and Boole problems