Re: fourier transform time
- To: mathgroup at smc.vnet.net
- Subject: [mg36439] Re: fourier transform time
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Sat, 7 Sep 2002 02:53:47 -0400 (EDT)
- Organization: Universitaet Leipzig
- References: <al9ldd$b2j$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
- Sender: owner-wri-mathgroup at wolfram.com
Hi, with your code you compute the expansion coefficents every time when FS[] is evaluated. Store the values for b[n] with L = 2; f[x_] := UnitStep[x - 1]; b[n_] := b[n] = (2/L)*Integrate[f[x]*Sin[n*Pi*x/L], {x, 0, L}]; FS[N_, x_] := Sum[b[n]*Sin[n*Pi*x/L], {n, 1, N}]; Timing[Plot[FS[30, x], {x, 0, 2}]] and you need only a 1-3 seconds (depending on your machine) Regards Jens Steve Story wrote: > > For my PDE class we have been calculating Fourier transforms. The instructor > arrived today with a printout of two plots of a certain Fourier transform, > done with a different CAS. The first plot was to 30 terms, the second was to > 120 terms. > Curious, I translated the functions into Mathematica (4.0 on Windows2000 > on a PIII 700) to see how much time this required to process. I was > Staggered at how much time it took. Here's the code: > > L = 2; > f[x_] := UnitStep[x - 1]; > b[n_] := (2/L)*Integrate[f[x]*Sin[n*Pi*x/L], {x, 0, L}]; > > FS[N_, x_] := Sum[b[n]*Sin[n*Pi*x/L], {n, 1, N}]; > > Timing[Plot[FS[30, x], {x, 0, 2}]] > > Out[23]= > {419.713 Second, \[SkeletonIndicator]Graphics\[SkeletonIndicator]} > > In this case the number of terms is 30. > > The time required per number of terms seems to fit the following polynomial: > > y = 0.3926x^2 + 2.2379x > > This is a large amount of time. I understand that the code is not optimized, > and was more or less copied from the code in the other CAS, but is this a > reasonable amount of time, or is something going wrong? I don't use Mathematica > because of the speed, but should it be this slow? > > Just curious, > > Steve Story