Re: FoourierTransform of a function defined in sections
- To: mathgroup at smc.vnet.net
- Subject: [mg70202] Re: [mg70176] FoourierTransform of a function defined in sections
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Sat, 7 Oct 2006 07:07:41 -0400 (EDT)
- References: <200610060559.BAA15565@smc.vnet.net>
Eckhard Schlemm wrote: > Hello, > > I want Mathematica to calculate the FourierTransform of a function which is > defined by Sin[x]^2 for Abs[x]<PI and zero else. I tried and defined the > function g as follows: > > g[x_]:=If[Abs[x]>PI,0,Sin[x]^2]; > > That works fine. But if I have mathematica try to determine the > FourierTransform by > > FourierTransform[g[x],x,p] > > I always get the error that the recursion limit and the iteration limit were > exceeded... > > what am I'm doing wrong? > > Any help is appreciated > > thanks > > Eckhard > > -- > _________________________ > Ludwig Schlemm > Tel: +49 (0) 160 91617114 > LudwigSchlemm at hotmail.com > Infinite recursion suggests a bug in the implementation of FourierTransform. That said, it may not handle very well a programming construct such as If. Instead one could use Piecewise or products of UnitStep cutoffs. In[3]:= ff = UnitStep[Pi-x]*UnitStep[Pi+x]*Sin[x]^2; In[4]:= InputForm[FourierTransform[ff, x, w]] Out[4]//InputForm= (-2*Sqrt[2/Pi]*Sin[Pi*w])/(-4*w + w^3) In[7]:= hh[x_] = Piecewise[{{Sin[x]^2, Abs[x]<Pi}}]; In[11]:= InputForm[FourierTransform[hh[x], x, w]] Out[11]//InputForm= (-2*Sqrt[2/Pi]*Sin[Pi*w])/(-4*w + w^3) Version 5.2 of Mathematica does in fact handle your If formulation. My guess is some preprocessing reformulates an integrand as a Piecewise construct. In[12]:= g[x_]:=If[Abs[x]>Pi,0,Sin[x]^2] In[14]:= InputForm[FourierTransform[g[x],x,p]] Out[14]//InputForm= (-2*Sqrt[2/Pi]*Sin[p*Pi])/(-4*p + p^3) Daniel Lichtblau Wolfram Research
- References:
- FoourierTransform of a function defined in sections
- From: "Eckhard Schlemm" <e.schlemm@hotmail.de>
- FoourierTransform of a function defined in sections