Mathematica 9 is now available
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: 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[52]:=
PiecewiseIntegrate[f[z]*f[x - z], {z, -Infinity, Infinity}]

Out[52]=
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[53]:=
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[54]=
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
  • Previous by thread: Re: a question about the UnitStep function
  • Next by thread: Re: a question about the UnitStep function