{VERSION 6 0 "IBM INTEL NT" "6.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 }{CSTYLE "2D Comment" 2 18 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 23 "Courier" 1 10 0 0 0 0 0 0 0 0 0 0 3 0 0 1 }{CSTYLE " Blue Emphasis" -1 256 "Times" 0 0 0 0 255 1 0 1 0 0 0 0 0 0 0 1 } {CSTYLE "Green Emphasis" -1 257 "Times" 1 12 0 128 0 1 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "Maroon Emphasis" -1 258 "Times" 1 12 128 0 128 1 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "Dark Red Emphasis" -1 259 "Times" 1 12 128 0 0 1 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "Red Emphasis" -1 260 "Times" 1 12 255 0 0 1 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "Purple Emphasis" -1 261 "Times " 1 12 102 0 230 1 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 262 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 263 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 264 "Courier" 1 10 0 0 0 0 0 0 0 0 0 0 3 0 0 1 }{CSTYLE "" -1 265 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 266 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 }{CSTYLE "" -1 267 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 }{CSTYLE "" -1 268 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 }{CSTYLE "" -1 269 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 } {CSTYLE "" -1 270 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 }{CSTYLE "" -1 271 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "Grey Emphasis" -1 272 "Times" 1 12 96 52 84 1 0 1 0 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Heading 1" -1 3 1 {CSTYLE "" -1 -1 "Ti mes" 1 18 0 0 128 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 8 4 3 0 3 0 2 2 0 1 } {PSTYLE "Heading 2" -1 4 1 {CSTYLE "" -1 -1 "Times" 1 14 128 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 8 2 1 0 1 0 2 2 0 1 }{PSTYLE "Maple Output " -1 11 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 } 3 3 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Maple Output" -1 12 1 {CSTYLE " " -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 3 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Maple Plot" -1 13 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Bulle t Item" -1 15 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 3 3 1 0 1 0 2 2 15 2 }{PSTYLE "Normal" -1 256 1 {CSTYLE " " -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Normal" -1 257 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "" 0 258 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {PARA 3 "" 0 "" {TEXT -1 51 "A procedure for the discrete fast Fourier transform" }}{PARA 0 "" 0 "" {TEXT -1 37 "by Peter Stone, Nan aimo, B.C., Canada" }}{PARA 0 "" 0 "" {TEXT -1 19 "Version: 27.3.2007 " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}} {SECT 1 {PARA 4 "" 0 "" {TEXT -1 52 "load Fourier series and Fourier t ransform procedures" }}{PARA 0 "" 0 "" {TEXT -1 17 "The Maple m-file \+ " }{TEXT 272 9 "fourier.m" }{TEXT -1 37 " contains the code for the pr ocedure " }{TEXT 0 13 "FourierSeries" }{TEXT -1 25 " used in this work sheet. " }}{PARA 0 "" 0 "" {TEXT -1 121 "It can be read into a Maple s ession by a command similar to the one that follows, where the file pa th gives its location." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "re ad \"K:\\\\Maple/procdrs/fourier.m\";" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}} {SECT 1 {PARA 4 "" 0 "" {TEXT -1 46 "Economical fast Fourier transform of real data" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}{PARA 0 "" 0 "" {TEXT -1 15 "The procedures " }{TEXT 0 3 "fft" }{TEXT -1 5 " and " }{TEXT 0 4 "ifft" }{TEXT -1 152 " given in the next section inc orporate an improvement in the efficiency of the calculation of the fa st Fourier transform of real data as outlined below." }}{PARA 0 "" 0 " " {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 69 "See: Numerical Recipies in 'C', Cambridge University Press, page 512." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 121 "To perform the FFT of a \+ real function more economically than by using the method for complex d ata, we can split the data " }{XPPEDIT 18 0 "y[0],y[1],` . . . `,y[n-1 ];" "6&&%\"yG6#\"\"!&F$6#\"\"\"%(~.~.~.~G&F$6#,&%\"nGF)F)!\"\"" } {TEXT -1 234 ", in half to form two data sets each having half the len gth of the original set. We do this by taking the even data for one da ta set and the odd data for the other data set. These data sets are th en combined to form a complex data set" }}{PARA 256 "" 0 "" {TEXT -1 1 " " }{XPPEDIT 18 0 "z[0] = y[0]+i*y[1];" "6#/&%\"zG6#\"\"!,&&%\"yG6# F'\"\"\"*&%\"iGF,&F*6#F,F,F," }{TEXT -1 3 ", " }{XPPEDIT 18 0 "z[1] = y[2]+i*y[3]" "6#/&%\"zG6#\"\"\",&&%\"yG6#\"\"#F'*&%\"iGF'&F*6#\"\"$F' F'" }{TEXT -1 3 ", " }{TEXT 271 5 ". . ." }{TEXT -1 3 " , " } {XPPEDIT 18 0 "z[n/2-1] = y[n-2]+i*y[n-1];" "6#/&%\"zG6#,&*&%\"nG\"\" \"\"\"#!\"\"F*F*F,,&&%\"yG6#,&F)F*F+F,F**&%\"iGF*&F/6#,&F)F*F*F,F*F*" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 69 "Taking the discrete Fou rier transform of this complex data set gives " }{XPPEDIT 18 0 "n/2" " 6#*&%\"nG\"\"\"\"\"#!\"\"" }{TEXT -1 21 " complex coefficients" }} {PARA 256 "" 0 "" {TEXT -1 2 " " }{XPPEDIT 18 0 "D[k]=Sum(z[j]*exp(-4 *Pi*i*j*k/n),j=0..n/2-1)" "6#/&%\"DG6#%\"kG-%$SumG6$*&&%\"zG6#%\"jG\" \"\"-%$expG6#,$*.\"\"%F0%#PiGF0%\"iGF0F/F0F'F0%\"nG!\"\"F:F0/F/;\"\"!, &*&F9F0\"\"#F:F0F0F:" }{TEXT -1 2 ". " }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}{PARA 0 "" 0 "" {TEXT -1 26 "The required coefficients " } {XPPEDIT 18 0 "C[k]" "6#&%\"CG6#%\"kG" }{TEXT -1 81 " for the transfor m of the original real data are extracted from the coefficients " } {XPPEDIT 18 0 "D[k]" "6#&%\"DG6#%\"kG" }{TEXT -1 25 " by means of the \+ formulas" }}{PARA 256 "" 0 "" {TEXT -1 2 " " }{XPPEDIT 18 0 "C[k]=1/2 " "6#/&%\"CG6#%\"kG*&\"\"\"F)\"\"#!\"\"" }{TEXT -1 1 " " }{XPPEDIT 18 0 "``(D[k]+conjugate(D[n/2-k]));" "6#-%!G6#,&&%\"DG6#%\"kG\"\"\"-%*con jugateG6#&F(6#,&*&%\"nGF+\"\"#!\"\"F+F*F5F+" }{TEXT -1 1 " " } {XPPEDIT 18 0 "-i/2;" "6#,$*&%\"iG\"\"\"\"\"#!\"\"F(" }{TEXT -1 1 " " }{XPPEDIT 18 0 "``(D[k]-conjugate(D[n/2-k]))*exp(2*pi*k*i/n);" "6#*&-% !G6#,&&%\"DG6#%\"kG\"\"\"-%*conjugateG6#&F)6#,&*&%\"nGF,\"\"#!\"\"F,F+ F6F6F,-%$expG6#*,F5F,%#piGF,F+F,%\"iGF,F4F6F," }{TEXT -1 2 ". " }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT 261 5 "Notes" } {TEXT -1 1 ":" }}{PARA 15 "" 0 "" {TEXT -1 18 " The coefficients " } {XPPEDIT 18 0 "C[k]" "6#&%\"CG6#%\"kG" }{TEXT -1 31 " satisfy the symm etry relation " }{XPPEDIT 18 0 "conjugate(C[k]) = C[n-k];" "6#/-%*conj ugateG6#&%\"CG6#%\"kG&F(6#,&%\"nG\"\"\"F*!\"\"" }{TEXT -1 156 ", so th ere is no point in saving all of them. Saving half of them is sufficie nt, which means that they can be stored in the same array as the origi nal data." }}{PARA 15 "" 0 "" {TEXT -1 0 "" }{XPPEDIT 18 0 "C[0]" "6#& %\"CG6#\"\"!" }{TEXT -1 5 " and " }{XPPEDIT 18 0 "C[n/2]" "6#&%\"CG6#* &%\"nG\"\"\"\"\"#!\"\"" }{TEXT -1 82 " are both real, so to fit the re al numbers required to determine the coefficients " }{XPPEDIT 18 0 "C[ k]" "6#&%\"CG6#%\"kG" }{TEXT -1 48 " in the original array, it is conv enient to put " }{XPPEDIT 18 0 "C[n/2]" "6#&%\"CG6#*&%\"nG\"\"\"\"\"#! \"\"" }{TEXT -1 42 " into the space for the imaginary part of " } {XPPEDIT 18 0 "C[0]" "6#&%\"CG6#\"\"!" }{TEXT -1 1 "." }}{PARA 15 "" 0 "" {TEXT -1 113 "The algorithm can be modified slightly to perform t he inverse transform of data satisfying the symmetry property " } {XPPEDIT 18 0 "conjugate(C[k]) = C[n-k];" "6#/-%*conjugateG6#&%\"CG6#% \"kG&F(6#,&%\"nG\"\"\"F*!\"\"" }{TEXT -1 48 ", which will then be a da ta set of real numbers." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 69 "Procedures for the discrete Fourier trans form and inverse transform: " }{TEXT 0 8 "fft,ifft" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT 0 8 "fft,ifft" }{TEXT -1 7 ": usage" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 262 18 "Calling Sequence:\n" }}{PARA 0 "" 0 "" {TEXT -1 23 " fft( A ), ifft ( A ) " }{TEXT 265 1 "\n" }}{PARA 257 "" 0 "" {TEXT -1 11 "Parameters: " }}{PARA 0 "" 0 "" {TEXT -1 5 " " }}{PARA 0 "" 0 "" {TEXT 23 8 " \+ A - " }{TEXT -1 58 " an array or list of real or complex constants of length " }{XPPEDIT 18 0 "2^m" "6#)\"\"#%\"mG" }{TEXT -1 8 ", where " }{XPPEDIT 18 0 "m>=2" "6#1\"\"#%\"mG" }{TEXT -1 1 "." }{TEXT 264 1 " " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 257 "" 0 "" {TEXT -1 12 "D escription:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 15 "The procedures " }{TEXT 0 3 "fft" }{TEXT -1 6 " and " }{TEXT 0 4 "ifft" }{TEXT -1 140 " compute the discrete fast Fourier transform , and the inverse discrete fast Fourier transform, of a real or compl ex sequence of length 2^m." }}{PARA 0 "" 0 "" {TEXT -1 96 "The various conventions used in the physical sciences and electrical engineering \+ are supported.\n" }}{PARA 0 "" 0 "" {TEXT 263 8 "Options:" }{TEXT -1 38 "\n\nThe default options use the formulas" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 256 "" 0 "" {TEXT -1 1 " " }{XPPEDIT 18 0 "C[k]=1/sqrt (n)" "6#/&%\"CG6#%\"kG*&\"\"\"F)-%%sqrtG6#%\"nG!\"\"" }{TEXT -1 1 " " }{XPPEDIT 18 0 "Sum(y[j]*exp(2*Pi*i*j*k/n),j = 0 .. n-1);" "6#-%$SumG6 $*&&%\"yG6#%\"jG\"\"\"-%$expG6#*.\"\"#F+%#PiGF+%\"iGF+F*F+%\"kGF+%\"nG !\"\"F+/F*;\"\"!,&F4F+F+F5" }{TEXT -1 5 ", " }{XPPEDIT 18 0 "y[j] = 1/sqrt(n);" "6#/&%\"yG6#%\"jG*&\"\"\"F)-%%sqrtG6#%\"nG!\"\"" }{TEXT -1 1 " " }{XPPEDIT 18 0 "Sum(C[k]*exp(-2*Pi*i*j*k/n),k = 0 .. n-1);" " 6#-%$SumG6$*&&%\"CG6#%\"kG\"\"\"-%$expG6#,$*.\"\"#F+%#PiGF+%\"iGF+%\"j GF+F*F+%\"nG!\"\"F6F+/F*;\"\"!,&F5F+F+F6" }{TEXT -1 2 ", " }}{PARA 0 " " 0 "" {TEXT -1 47 "for the transform and its inverse respectively." } }{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT 266 10 "convent ion" }{TEXT -1 2 ": " }}{PARA 0 "" 0 "" {TEXT -1 44 "With the option \+ \"convention\" set to any of: " }}{PARA 256 "" 0 "" {TEXT -1 79 "\"phy sical_sciences\", \"PS\", \"positive_exponent\", \"positive\", 1, \+ \"POS\", \"pos\"," }}{PARA 0 "" 0 "" {TEXT -1 43 "the exponents used h ave the signs as above." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 44 "With the option \"convention\" set to any of: " }} {PARA 256 "" 0 "" {TEXT -1 69 " \"electrical_engineeering\", \"EE\", \+ \"negative\", -1, \"NEG\", \"neg\"," }}{PARA 0 "" 0 "" {TEXT -1 54 "the exponents used have signs opposite to those above." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT 267 4 "form" }{TEXT -1 2 ": " }}{PARA 0 "" 0 "" {TEXT -1 113 "With the option \"form\" set to \"symmetric\", both the forward and inverse transforms are computed w ith the factors " }{XPPEDIT 18 0 "1/sqrt(n)" "6#*&\"\"\"F$-%%sqrtG6#% \"nG!\"\"" }{TEXT -1 16 " as shown above." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 82 "With the option \"form\" set to \" asymmetric\", the forward transform has the factor " }{XPPEDIT 18 0 " 1/sqrt(n)" "6#*&\"\"\"F$-%%sqrtG6#%\"nG!\"\"" }{TEXT -1 51 " omitted, \+ and the inverse transform has the factor " }{XPPEDIT 18 0 "1/sqrt(n)" "6#*&\"\"\"F$-%%sqrtG6#%\"nG!\"\"" }{TEXT -1 13 " replaced by " } {XPPEDIT 18 0 "1/n" "6#*&\"\"\"F$%\"nG!\"\"" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT 268 4 "mode" }{TEXT -1 2 ": " }}{PARA 0 "" 0 "" {TEXT -1 306 "\"mode=auto\" is the default mode, whereby, with real input data, a special algorithm is used whic h cuts down the amount of computation. In addition, when the input dat a for the inverse transform exhibits the symmetry associated with it b eing obtained from real input data, this algorithm is used in reverse. " }}{PARA 0 "" 0 "" {TEXT -1 134 "To force the use of complex arithmet ic (for which there is no advantage, except for checking purposes), us e the option \"mode=complex\"." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT 269 4 "eval" }{TEXT -1 2 ": " }}{PARA 0 "" 0 "" {TEXT -1 170 "With \"eval\" set to \"auto\", which is the default sett ing, hardware floating point arithmetic will be preformed if \"Digits \" has not been increased from its default setting." }}{PARA 0 "" 0 " " {TEXT -1 109 "With \"eval\" set to any of \"hardware_float\", \"HF\" , \"hf\", hardware floating point arithmetic will be performed." }} {PARA 0 "" 0 "" {TEXT -1 129 "In this case the results will have the p recision of the hardware floating point arithmetic regardless of the s etting of \"Digits\"." }}{PARA 0 "" 0 "" {TEXT -1 193 "With \"eval\" s et to any of \"Maple_float\", \"MF\", \"mf\", Maple's floating point a rithmetic will be performed with the results given to a precision corr esponding to the currrent setting of \"Digits\"." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT 270 15 "info=true/false" }{TEXT -1 2 ": " }}{PARA 0 "" 0 "" {TEXT -1 192 "With info set to \"true\", i nformation regarding any improvements of efficiency either by using ha rdware floating point arithmetic or by using the special algorithm for real data are being used." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT 261 16 "How to activat e:" }{TEXT 256 1 "\n" }{TEXT -1 155 "To make the procedure active, ope n the subsection, place the cursor anywhere after the prompt [ > and \+ press [Enter].\nYou can then close up the subsection." }}{SECT 1 {PARA 4 "" 0 "" {TEXT 0 3 "fft" }{TEXT -1 16 ": implementation" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11259 "fft := proc() xfft(1,args[1..nargs]) end proc:\nifft := proc() \+ xfft(-1,args[1..nargs]) end proc:\n\nxfft := proc(direction,A)\nlocal \+ nn,xx,t1,t2,c,listdata,realdata,saveDigits,i,nv2,eps,\n frm,Optio ns,B,sqrtn,complexround,symdata,cnvtn,md,hdf,\n prntflg;\n\n # \+ Increase precision for the computation\n saveDigits := Digits;\n D igits := Digits + min(trunc(Digits/3),5);\n hdf := evalb(Digits<=eva lhf(Digits));\n\n listdata := type(A,list);\n if listdata then\n \+ nn := nops(A);\n if not type(A,list(complexcons)) then\n \+ error \"data must consist of real or complex constants\"\n en d if;\n realdata := type(A,list(realcons));\n elif type(A,array ) then\n if type(A,name) then t1 := [op(2,eval(A))]\n else t 1 := [op(2,A)] end if;\n if nops(t1)<>1 then error \"expecting a \+ 1 dimensional array\" end if;\n if op(1,t1[1])=1 then nn := op(2, t1[1])\n else error \"data array must be indexed from 1\" end if; \n for i from 1 to nn do\n if not type(A[i],complexcons) \+ then\n error \"data must consist of real or complex constan ts\"\n end if;\n if realdata and not type(A[i],realcon s) then\n realdata := false\n end if;\n end do ;\n else\n error \"the 1st argument, %1, is invalid .. it shoul d be a list or an array of complex constants\"\n end if;\n if nn<4 then\n error \"the data must have length at least 4\"\n end if ;\n xx := 1.442695041*evalf(ln(nn));\n if abs(xx-round(xx))>0.0000 00001 then\n error \"the data must have length which is a power o f 2\"\n end if;\n \n if not member(direction,\{-1,1\}) then\n \+ error \"the 1st argument must be either 1 or -1\"\n end if;\n\n # Get the options.\n # Set the default value to start with.\n frm : = 'symmetric';\n cnvtn := 1;\n symdata := true;\n prntflg := fal se;\n if nargs>2 then\n Options:=[args[3..nargs]];\n if no t type(Options,list(equation)) then\n error \"each optional ar gument must be an equation\"\n end if;\n if hasoption(Option s,'form','frm','Options') then\n if not member(frm,\{symmetric ,asymmetric\}) then\n error \"\\\"form\\\" must be 'symmetr ic' or 'asymmetric'\"\n end if;\n end if;\n if hasop tion(Options,'convention','cnvtn','Options') then\n if not me mber(cnvtn,\{'physical_sciences','PS',\n 'positive_exponent' ,'positive',1,'POS','pos',\n 'electrical_engineeering','EE','ne gative', -1,'NEG','neg'\}) then\n error \"\\\"convention\\\" must be 'physical_sciences','PS','positive_exponent','positive',1,'PO S','pos','electrical_engineeering','EE','negative', -1,'NEG' or 'neg' \"\n end if;\n if member(cnvtn,\{'physical_sciences',' PS','positive_exponent',\n 'positive',1,'POS','pos'\}) then \+ cnvtn := 1\n else cnvtn := -1 end if;\n end if;\n if hasoption(Options,'mode','md','Options') then\n if not member (md,\{'real','complex'\}) then\n error \"\\\"mode\\\" must \+ be 'real' or 'complex'\"\n end if;\n if md='complex' t hen\n symdata := false;\n realdata := false;\n \+ end if;\n end if;\n if hasoption(Options,'eval','vl', 'Options') then\n if not member(vl,\{'auto','hardware_float',' HF','hf',\n 'Maple_float','MF','mf'\}) then\n \+ error \"\\\"eval\\\" must be 'auto','hardware_float','HF','hf','M aple_float','MF' or 'mf'\"\n end if;\n if member(vl,\{ 'hardware_float','HF','hf'\}) then\n hdf := true;\n \+ elif member(vl,\{'Maple_float','MF','mf'\}) then\n hdf := \+ false;\n end if;\n end if;\n if hasoption(Options,'i nfo','prntflg','Options') then\n if prntflg<>true then prntflg := false end if;\n end if;\n if nops(Options)>0 then\n \+ error \"%1 is not a valid option for %2\",op(1,Options),procname; \n end if;\n end if;\n\n if direction=-1 then realdata := fal se end if;\n if direction=1 then symdata := false end if;\n if sym data then \n nv2 := nn/2;\n eps := Float(2,1-saveDigits); \n symdata := type(A[1],realcons) and type(A[nv2+1],realcons);\n \+ if symdata then\n for i from 2 to nv2 do\n if \+ abs(Re(A[i])-Re(A[nn+2-i]))+\n abs(Im(A[i])+Im(A[nn+2-i]) )>eps*abs(A[i]+A[nn+2-i]) then\n symdata := false;\n \+ break;\n end if;\n end do:\n end if ;\n end if;\n\n if symdata then\n if hdf then c := hfarray(1. .nn)\n else c := array(1..nn) end if;\n c[1] := evalf(A[1]); \n c[2] := evalf(A[nv2+1]);\n for i from 2 to nv2 do\n \+ c[2*i-1] := evalf(Re(A[i]));\n c[2*i] := evalf(Im(A[i]));\n end do;\n else\n if listdata then\n if realdata t hen\n if hdf then c := hfarray(1..nn,evalf(A))\n \+ else c := array(1..nn,evalf(A)) end if;\n else\n i f hdf then\n c := hfarray([seq(op([evalf(Re(A[i])),\n \+ evalf(Im(A[i]))]),i=1..nn)]);\n else\n \+ c := array([seq(op([evalf(Re(A[i])),\n \+ evalf(Im(A[i]))]),i=1..nn)]);\n end if;\n nn := 2*nn;\n end if;\n else\n if realdata then\n \+ if hdf then c := hfarray(1..nn)\n else c := array(1. .nn) end if;\n for i from 1 to nn do c[i] := evalf(A[i]) en d do;\n else\n nn := 2*nn;\n if hdf then c := hfarray(1..nn)\n else c := array(1..nn) end if;\n \+ for i from 1 to oldn do\n c[2*i-1] := evalf(Re(A [i]));\n c[2*i] := evalf(Im(A[i]));\n end do; \n end if;\n end if;\n end if;\n\n# local procedure\nco mplexround := proc(zz,eps)\n local re,im;\n re := Re(zz);\n im : = Im(zz);\n if im=0 then return Re(zz) end if;\n if re=0 then retu rn Im(zz) end if;\n if abs(re) <= eps*abs(im) then return im*I\n e lif abs(im) <= eps*abs(re) then return re\n else return zz end if;\n end proc: # of complexround\n \n if realdata then\n if prntfl g then\n print(`using economical method for real data`)\n \+ end if;\n if hdf then\n if prntflg then\n pri nt(`using hardware floating point arithmetic`)\n end if;\n \+ evalhf(realft(direction,cnvtn,var(c),nn));\n else realft(dir ection,cnvtn,c,nn) end if;\n B := array(1..nn);\n nv2 := nn/ 2;\n B[1] := c[1];\n B[nv2+1] := c[2];\n for i from 2 t o nv2 do\n B[i] := c[2*i-1]+I*c[2*i];\n B[nn+2-i] := c [2*i-1]-I*c[2*i];\n end do;\n if frm=symmetric then\n \+ sqrtn := evalf(sqrt(nn));\n for i from 1 to nn do B[i] := B[ i]/sqrtn end do;\n end if;\n Digits := saveDigits;\n if listdata then return convert(evalf(eval(B)),list)\n else return \+ evalf(eval(B)) end if;\n elif symdata then\n if prntflg then\n \+ print(`using economical method to give real inverse data`)\n \+ end if;\n if hdf then\n if prntflg then\n \+ print(`using hardware floating point arithmetic`)\n end if;\n \+ evalhf(realft(direction,cnvtn,var(c),nn));\n B := arra y(1..nn);\n if frm=symmetric then\n sqrtn := evalf( sqrt(nn));\n for i from 1 to nn do B[i] := 2*c[i]/sqrtn end do;\n else\n for i from 1 to nn do B[i] := 2*c[i]/ nn end do;\n end if;\n Digits := saveDigits;\n \+ if listdata then return convert(evalf(eval(B)),list)\n else r eturn evalf(eval(B)) end if;\n else\n realft(direction,cn vtn,c,nn);\n if frm=symmetric then\n sqrtn := evalf (sqrt(nn));\n for i from 1 to nn do c[i] := 2*c[i]/sqrtn en d do;\n else\n for i from 1 to nn do c[i] := 2*c[i] /nn end do;\n end if;\n Digits := saveDigits;\n \+ if listdata then return convert(evalf(eval(c)),list)\n else \+ return evalf(eval(c)) end if;\n end if;\n else\n if hdf th en\n if prntflg then\n print(`using hardware floati ng point arithmetic`)\n end if;\n evalhf(complexft(dir ection*cnvtn,var(c),nn));\n else complexft(direction*cnvtn,c,nn) \+ end if;\n nn := nn/2;\n B := array(1..nn);\n eps := Flo at(1,-Digits);\n for i from 1 to nn do\n B[i] := complexr ound(c[2*i-1]+I*c[2*i],eps);\n end do;\n if frm=symmetric th en\n sqrtn := evalf(sqrt(nn));\n for i from 1 to nn do B[i] := B[i]/sqrtn end do;\n else\n if direction=-1 then \n for i from 1 to nn do B[i] := B[i]/nn end do;\n \+ end if;\n end if;\n Digits := saveDigits;\n if listdata then return convert(evalf(eval(B)),list)\n else return evalf(eva l(B)) end if;\n end if;\nend proc:\n\ncomplexft := proc(isign,c,n)\n local m,i,j,t,nm1,mmax,istep,theta,xx,pi2,\n wr,wi,wpr,wpi,wtemp, tempr,tempi,nv2;\n\n nv2 := n/2;\n j := 1;\n for i from 1 to n-2 by 2 do\n if j>i then # swap\n t := c[j]; c[j] := c[i]; \+ c[i] := t;\n t := c[j+1]; c[j+1] := c[i+1]; c[i+1] := t;\n \+ end if;\n m := nv2;\n while m >= 2 and j > m do\n \+ j := j - m;\n m := m/2;\n end do;\n j := j + m;\n \+ end do;\n mmax := 2;\n pi2 := evalf(2*Pi);\n \n while mmax " 0 "" {MPLTEXT 1 0 1 ";" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 " " {TEXT -1 39 "Examples are given in the next section." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}} {SECT 1 {PARA 4 "" 0 "" {TEXT 0 8 "fft,ifft" }{TEXT -1 10 ": Examples " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 9 "Example 1" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 75 "Do a calculation of a discrete Fourier transform \+ directly from the formula:" }}{PARA 256 "" 0 "" {TEXT -1 1 " " } {XPPEDIT 18 0 "C[k] := 1/sqrt(n)" "6#>&%\"CG6#%\"kG*&\"\"\"F)-%%sqrtG6 #%\"nG!\"\"" }{TEXT -1 1 " " }{XPPEDIT 18 0 "Sum(y[j]*exp(2*Pi*i*j*k/n ),j = 0 .. n-1);" "6#-%$SumG6$*&&%\"yG6#%\"jG\"\"\"-%$expG6#*.\"\"#F+% #PiGF+%\"iGF+F*F+%\"kGF+%\"nG!\"\"F+/F*;\"\"!,&F4F+F+F5" }{TEXT -1 2 " . " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 356 "# set up some data\nn := 4;\nf := x -> 1/(1+x^2);\nh := evalf(0.1);\nxvals :=[seq(i*h,i=0..n-1)]:\nyvals := map(f,xvals): \ny := array(0..n-1,yvals):\n\n# construct transformed data\nC := arra y(0..n-1):\nw := evalf(exp(2*Pi*I/n));\nj := 'j':\nsqrtn := evalf(sqrt (n));\nfor k from 0 to n-1 do\n C[k] := sum(y[j]*w^(j*k),j=0..n-1)/s qrt(n);\nend do:\nevalf(convert(C,list));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"nG\"\"%" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"fGf* 6#%\"xG6\"6$%)operatorG%&arrowGF(*&\"\"\"F-,&F-F-*$)9$\"\"#F-F-!\"\"F( F(F(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"hG$\"\"\"!\"\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"wG^#$\"\"\"\"\"!" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%&sqrtnG$\"\"#\"\"!" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #7&$\"+KV`M>!\"*^$$\"+Dp2B>!#6$\"+g3RLOF*$\"+XHT+FF*^$F($!+g3RLOF*" }} }{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 97 "n := 4;\nf := x -> 1/(1+x^2):\nh := evalf(0.1):\nxvals :=[seq(i* h,i=0..n-1)]:\nyvals := map(f,xvals);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"nG\"\"%" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%&yvalsG7&$\"\"\"\" \"!$\"+*4!*4!**!#5$\"+:YQ:'*F+$\"+F>Ju\"*F+" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 95 "Complex arithmetic performed ev en with real data, but using hardware floating point arithmetic." }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 66 "fft(yvals,mode=complex,info=true);\nifft(%,mode=complex,info=true) ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%Iusing~hardware~floating~point~a rithmeticG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7&$\"+KV`M>!\"*^$$\"+Dp2 B>!#6$\"+g3RLOF*$\"+XHT+FF*^$F($!+g3RLOF*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%Iusing~hardware~floating~point~arithmeticG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7&$\"+++++5!\"*$\"+*4!*4!**!#5$\"+:YQ:'*F)$ \"+F>Ju\"*F)" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 78 "Complex arithmetic performed without using hardware float ing point arithmetic." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 100 "fft(yvals,mode=complex,eval=Maple_float, info=true);\nifft(%,mode=complex,eval=Maple_float,info=true);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#7&$\"+KV`M>!\"*^$$\"+Dp2B>!#6$\"+g3RLO F*$\"+XHT+FF*^$F($!+g3RLOF*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7&$\"++ +++5!\"*$\"+*4!*4!**!#5$\"+:YQ:'*F)$\"+F>Ju\"*F)" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 77 "Special algorithm for rea l data, but using Maple's floating point arithmetic." }}{PARA 0 "" 0 " " {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 84 "fft(yvals, eval=Maple_float,info=true);\nifft(%,eval=Maple_float,info=true,info=t rue);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%Fusing~economical~method~for ~real~dataG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7&$\"+KV`M>!\"*^$$\"+Dp 2B>!#6$\"+g3RLOF*$\"+XHT+FF*^$F($!+g3RLOF*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%Rusing~economical~method~to~give~real~inverse~dataG" } }{PARA 11 "" 1 "" {XPPMATH 20 "6#7&$\"+++++5!\"*$\"+*4!*4!**!#5$\"+:YQ :'*F)$\"+F>Ju\"*F)" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 " " {TEXT -1 74 "Special algorithm for real data, using hardware floatin g point arithmetic." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "fft(yvals,info=true);\nifft(%,info=true);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%Fusing~economical~method~for~real~d ataG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%Iusing~hardware~floating~poin t~arithmeticG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7&$\"+KV`M>!\"*^$$\"+ Dp2B>!#6$\"+g3RLOF*$\"+XHT+FF*^$F($!+g3RLOF*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%Rusing~economical~method~to~give~real~inverse~dataG" } }{PARA 11 "" 1 "" {XPPMATH 20 "6#%Iusing~hardware~floating~point~arith meticG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7&$\"+++++5!\"*$\"+*4!*4!**! #5$\"+:YQ:'*F)$\"+F>Ju\"*F)" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 75 "Alternative convention with minus in exponent o f forward transform formula." }}{PARA 0 "" 0 "" {TEXT -1 59 "Transform ed data following zero frequency term is reversed." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 94 "fft(yvals,co nvention=EE,mode=complex,info=true);\nifft(%,convention=EE,mode=comple x,info=true);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%Iusing~hardware~floa ting~point~arithmeticG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7&$\"+KV`M>! \"*^$$\"+Dp2B>!#6$!+g3RLOF*$\"+XHT+FF*^$F($\"+g3RLOF*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%Iusing~hardware~floating~point~arithmeticG" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#7&$\"+++++5!\"*$\"+*4!*4!**!#5$\"+:YQ: '*F)$\"+F>Ju\"*F)" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 68 "fft(yvals,convention=EE,info=true);\nifft(%, convention=EE,info=true);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%Fusing~e conomical~method~for~real~dataG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%Iu sing~hardware~floating~point~arithmeticG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7&$\"+KV`M>!\"*^$$\"+Dp2B>!#6$!+g3RLOF*$\"+XHT+FF*^$F($\"+g3RLOF *" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%Rusing~economical~method~to~give ~real~inverse~dataG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%Iusing~hardwar e~floating~point~arithmeticG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7&$\"+ ++++5!\"*$\"+*4!*4!**!#5$\"+:YQ:'*F)$\"+F>Ju\"*F)" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 9 "Example 2" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 65 "Make a comparison of times for the v arious methods of computation" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 101 "n := 1024;\nf := x -> 1/(1+ x^2):\nh := evalf(0.01):\nxvals :=[seq(i*h,i=0..n-1)]:\nyvals := map(f ,xvals):" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"nG\"%C5" }}}{PARA 0 " " 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 95 "Complex arithmetic performed even with real data, but using hardware floating point arit hmetic." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 71 "st := time():\nfft(yvals,mode=complex):\nifft(%,mode= complex):\ntime()-st;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"$2%!\"$" } }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 78 "Complex arithmetic performed without using hardware floating point arithmetic ." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 105 "st := time():\nfft(yvals,mode=complex,eval=Maple_flo at):\nifft(%,mode=complex,eval=Maple_float):\ntime()-st;" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#$\"%W8!\"$" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 77 "Special algorithm for real data, but usin g Maple's floating point arithmetic." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 79 "st := time():\nfft(yvals,e val=Maple_float):\nifft(%,eval=Maple_float):\ntime()-st;" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#$\"$?(!\"$" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 73 "Special algorithm for real data using har dware floating point arithmetic." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "st := time():\nfft(yvals):\n ifft(%):\ntime()-st;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"$m#!\"$" }} }{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 9 "Example 3" }}{PARA 0 " " 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 353 "# se t up the data\nn := 8:\nf := x -> 1/(1+x^2):\nh := evalf(0.2):\nxvals \+ :=[seq(i*h,i=0..n-1)]:\nyvals := map(f,xvals);\ny := array(0..n-1,yval s):\n\n# construct transformed data\nC := array(0..n-1):\nw := evalf(e xp(2*Pi*I/n)):\nj := 'j':\nsqrtn := evalf(sqrt(n)):\nfor k from 0 to n -1 do\n C[k] := sum(y[j]*w^(j*k),j=0..n-1)/sqrtn;\nend do:\nconvert( evalf(C),list);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%&yvalsG7*$\"\"\" \"\"!$\"+:YQ:'*!#5$\"+b'*o?')F+$\"+w6%HN(F+$\"+w4c(4'F+$\"+++++]F+$\"+ c1O)4%F+$\"+y$y$yLF+" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7*$\"+%Qi\\\"> !\"*^$$\"+1g#*R:!#5$\"+/;PYPF*^$$\"+/R[%>\"F*$\"+uVAt8F*^$$\"+*4:&>7F* $\"+R5-'[&!#6$\"+KuzE7F*^$$\"+,^^>7F*$!+Y5-'[&F7^$$\"+6R[%>\"F*$!+yVAt 8F*^$$\"+Cg#*R:F*$!+@;PYPF*" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "fft(yvals);\nifft(%);" }} {PARA 12 "" 1 "" {XPPMATH 20 "6#7*$\"+$Qi\\\">!\"*^$$\"+.g#*R:!#5$\"+/ ;PYPF*^$$\"+,R[%>\"F*$\"+sVAt8F*^$$\"+%4:&>7F*$\"+B5-'[&!#6$\"+FuzE7F* ^$F3$!+B5-'[&F7^$F.$!+sVAt8F*^$F($!+/;PYPF*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7*$\"+++++5!\"*$\"+ " 0 "" {MPLTEXT 1 0 1 ";" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 9 "Example 4" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 119 "# set up the data\nn : = 1024:\nf := x -> 1/(1+x^2):\nh := evalf(0.01):\nxvals :=[seq(i*h,i=0 ..n-1)]:\nyvals := map(f,xvals):" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 198 "Digits := 14:\nfft(yvals): \nYvals := ifft(%):\nDigits := 10:\nYvals := evalf(Yvals):\nYvals[17]; \nyvals[17];\nfor i to nops(yvals) do\n if Yvals[i]<>yvals[i] then p rint(Yvals[i]<>yvals[i]) end if;\nend do:" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+;+R](*!#5" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+;+ R](*!#5" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}} }{SECT 1 {PARA 4 "" 0 "" {TEXT -1 73 "Comparison of discrete Fourier t ransform with Fourier series coefficients" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}{PARA 0 "" 0 "" {TEXT -1 48 "Let f(x) be the rea l valued function defined by " }}{PARA 256 "" 0 "" {TEXT -1 2 " " } {XPPEDIT 18 0 "f(x) = PIECEWISE([2*x/Pi, x < Pi/2],[2-2*x/Pi, Pi/2 <= \+ x]);" "6#/-%\"fG6#%\"xG-%*PIECEWISEG6$7$*(\"\"#\"\"\"F'F.%#PiG!\"\"2F' *&F/F.F-F07$,&F-F.*(F-F.F'F.F/F0F01*&F/F.F-F0F'" }{TEXT -1 2 " ," }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 4 "and " } {XPPEDIT 18 0 "f(x)" "6#-%\"fG6#%\"xG" }{TEXT -1 41 " is an odd period ic function with period " }{XPPEDIT 18 0 "2*Pi" "6#*&\"\"#\"\"\"%#PiGF %" }{TEXT -1 2 ". " }}{PARA 256 "" 0 "" {TEXT -1 1 " " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 45 "The Fourier sine serie s for this function is:" }}{PARA 256 "" 0 "" {TEXT -1 1 " " }{XPPEDIT 18 0 "8*sin(x)/(Pi^2)-8/9*sin(3*x)/(Pi^2)+8/25*sin(5*x)/(Pi^2)-8/49*si n(7*x)/(Pi^2)+8/81*sin(9*x)/(Pi^2)+` . . . `;" "6#,.*(\"\")\"\"\"-%$si nG6#%\"xGF&*$%#PiG\"\"#!\"\"F&**F%F&\"\"*F.-F(6#*&\"\"$F&F*F&F&*$F,F-F .F.**F%F&\"#DF.-F(6#*&\"\"&F&F*F&F&*$F,F-F.F&**F%F&\"#\\F.-F(6#*&\"\"( F&F*F&F&*$F,F-F.F.**F%F&\"#\")F.-F(6#*&F0F&F*F&F&*$F,F-F.F&%(~.~.~.~GF &" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 148 "We make a graphical comparison of the function given by \+ truncating this series to include just the first two non-zero terms, w ith the function f(x)." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 155 "f := x -> piecewise(x7$$\"3YqR*pd)>hDF-$\"3puS2b'40j\"F-7$ $\"3Zs[E^dK,RF-$\"3eE?q66m$[#F-7$$\"3ab^NehL]_F-$\"3aS`)*4yYULF-7$$\"3 5*QhW&\\$Hf'F-$\"3C![V*\\F>(>%F-7$$\"3zS11.fpPyF-$\"3A!z#p\"=K'*)\\F-7 $$\"3upr'fwtl7*F-$\"3kffQ8t:5eF-7$$\"3!QRa&4L&f/\"!#<$\"3QljNybuemF-7$ $\"3YjXwg<#)y6FR$\"3py))**4Ch/vF-7$$\"36qGW%H$\\:8FR$\"3'p*Hf;/pu$)F-7 $$\"3$*)e)pbO(eV\"FR$\"3REWR)fb59*F-7$$\"3/]+3VNj.:FR$\"3[8))>R%GCd*F- 7$$\"396:YIMRr:FR$\"3a+o**>()>'***F-7$$\"3Z'z]kaJ%R;FR$\"3/@E'3iaIc*F- 7$$\"3!=3SCmpuq\"FR$\"3`T%G<_5*H\"*F-7$$\"3LmSEEVgQ=FR$\"3i(>(RB83&H)F -7$$\"3S`:%R;(od>FR$\"3EBfCLk(p`(F-7$$\"3#=uye<)G*4#FR$\"3D-7Q$R;bj'F- 7$$\"3Ua[#o!GC>AFR$\"3g)o2\\\\h=(eF-7$$\"3-YwJf&y(eBFR$\"3q&o;]I\\N)\\ F-7$$\"3oNrpV8H#[#FR$\"3==^D)\\Us>%F-7$$\"3EzY)QW/yh#FR$\"3*[#HJ3$RXL$ F-7$$\"35v)>8'\\%ou#FR$\"3$>.b*f=/8DF-7$$\"3w$GCS?&[\")GFR$\"3#y1NLX&* el\"F-7$$\"3Z%)='p(p70IFR$\"3U@Z3*zuwo)F07$$\"3sA%)\\K8\\QJFR$\"3aIqAF BOu>!#?7$$\"3c&fJlT>qF$FR$!3A!))['*\\N:i)F07$$\"39l2\"4_3wR$FR$!3VjOwJ w%)H;F-7$$\"3MOnGd![y_$FR$!3YiHxr#y*eCF-7$$\"3#*=4JU#)RiOFR$!3.vSR`8b: LF-7$$\"3%G,f%[$HSz$FR$!3)))**=<+TN:%F-7$$\"3KoE+7#*Q@RFR$!3ay#)4v!RV' \\F-7$$\"3y(f0ii+G1%FR$!3s[()H)4#fkeF-7$$\"3;fORr]')*=%FR$!3-9^,![4Nn' F-7$$\"3R&p%*z[LbK%FR$!3iK`&\\W,s`(F-7$$\"3M'pExBp%[WFR$!34uv0NZ$)>$)F -7$$\"3oh/x$[qGe%FR$!3!ye!oT'fa<*F-7$$\"3qQq'H.,hk%FR$!3q4E/?y*zd*F-7$ $\"3e;O;#eJ$4ZFR$!3-OYS)*f`!)**F-7$$\"3sU'G^sDax%FR$!3u9J5>cp)f*F-7$$ \"3&)oO4o)>:%[FR$!33h3hOs#z<*F-7$$\"3Ou\"4%z!e2(\\FR$!3m`@#*H7#Q\\(F-7$$\"3n*e![/*ojB&FR$!33c)o**>SUm'F-7 $$\"3#ob8X5I'p`FR$!30vYm^I(e\"eF-7$$\"3PA\"GX$yy,bFR$!3i#yz;\"3`u\\F-7 $$\"39L1/jqABcFR$!34*[e:nC9?%F-7$$\"3mweKB,TidFR$!3BQj***yd`J$F-7$$\"3 'oIe;6(*o)eFR$!3_lrC3!\\G_#F-7$$\"3nKcu0ii>gFR$!3kyGg^$pyn\"F-7$$\"3w) *zj%)[mYhFR$!3MW^>K+;\"p)F07$$\"3)****>YH&=$G'FR$!3Uc(yh+\"o&*z!#E-%'C OLOURG6&%$RGBG$\"*++++\"!\")$\")AR!)\\Fc\\lF(-F$6$7[oF'7$F+$\"3Y_\"y1n k$puF07$F2$\"3&)QIK$*f]F9F-7$F7$\"3mZHY&G(G`AF-7$F<$\"3#[k;D(4HiJF-7$F A$\"3.J\"esR!=QTF-7$FF$\"3]TN2CCI#3&F-7$FK$\"3MNb!oq\\*egF-7$FP$\"3,@N odvK6qF-7$FV$\"3qd**>8eRPyF-7$Fen$\"3_ijRrl4#\\)F-7$$\"3SH22vMov8FR$\" 3WTT-xbf-()F-7$Fjn$\"3;()3I8S))f))F-7$$\"3Q>$*Q*f`(p9FR$\"38#R?QLAR#*) F-7$F_o$\"3!)3.'ReK)p*)F-7$$\"3q!yqn[8v`\"FR$\"3%HVka^_t**)F-7$Fdo$\"3 ]n*G\\aCj+*F-7$$\"3\"Q:c%)[7ag\"FR$\"3w;L)=S>m**)F-7$Fio$\"3)4!**yM!=# o*)F-7$$\"39RaW/1Xt;FR$\"3zZwy)R%G@*)F-7$F^p$\"3/Uz#Rv)3c))F-7$$\"33u? N%*p.toS>0&F-7$Fiu$!3qoD9suYAhF-7$F^v$!3I%Hlv! R*p-(F-7$Fcv$!3S(RHMBue'yF-7$Fhv$!3sH/?'f8yX)F-7$$\"3,z&[2')pc^%FR$!3? :MY#fawp)F-7$F]w$!3s*H\"oF,Ir))F-7$Fbw$!3#za$4*Rv2(*)F-7$Fgw$!3lfzpl;D 1!*F-7$$\"3lHhk`'yBu%FR$!3q%)oMi+/***)F-7$F\\x$!3e`$>OmrT(*)F-7$$\"3zb 6h'zs%3[FR$!3Z+Vz')>yJ*)F-7$Fax$!3K)eqQ^,@())F-7$$\"3;@9vt*Qh!\\FR$!3& fr3@1enq)F-7$Ffx$!3Yk8t\\N,![)F-7$F[y$!3;j'[['\\!z#yF-7$F`y$!3'3K-tWir ,(F-7$Fey$!33lQ,i0jlgF-7$Fjy$!3'[9u'QY " 0 "" {MPLTEXT 1 0 149 "data := [seq(evalf((f(2*Pi*n/64))),n=1..64)]:\npts := [seq([i,dat a[i]],i=1..64)]:\nplot([pts,pts],style=[line,point],color=[grey,brown] ,symbol=circle);" }}{PARA 13 "" 1 "" {GLPLOT2D 480 267 267 {PLOTDATA 2 "6'-%'CURVESG6%7\\o7$$\"\"\"\"\"!$\"3+++++++]i!#>7$$\"\"#F*$\"3+++++ ++]7!#=7$$\"\"$F*$\"3+++++++v=F37$$\"\"%F*$\"3++++++++DF37$$\"\"&F*$\" 3+++++++DJF37$$\"\"'F*$\"3+++++++]PF37$$\"\"(F*$\"3+++++++vVF37$$\"\") F*$\"3++++++++]F37$$\"\"*F*$\"3+++++++DcF37$$\"#5F*$F,F37$$\"#6F*$\"3+ ++++++voF37$$\"#7F*$\"3++++++++vF37$$\"#8F*$\"3+++++++D\")F37$$\"#9F*$ \"3+++++++]()F37$$\"#:F*$\"3+++++++v$*F37$$\"#;F*F(7$$\"#F*Fbo7$$\"#?F*F]o7$$\"#@F*Fhn7$$\"#AF*FZ7$$\"#BF*FU7$$\"# CF*FP7$$\"#DF*FK7$$\"#EF*FF7$$\"#FF*FA7$$\"#GF*F<7$$\"#HF*F77$$\"#IF*F 17$$\"#JF*F+7$$\"#KF*$F*F*7$$\"#LF*$!3+++++++]iF-7$$\"#MF*$!3+++++++]7 F37$$\"#NF*$!3+++++++v=F37$$\"#OF*$!3++++++++DF37$$\"#PF*$!3+++++++DJF 37$$\"#QF*$!3+++++++]PF37$$\"#RF*$!3+++++++vVF37$$\"#SF*$!3++++++++]F3 7$$\"#TF*$!3+++++++DcF37$$\"#UF*$FfsF37$$\"#VF*$!3+++++++voF37$$\"#WF* $!3++++++++vF37$$\"#XF*$!3+++++++D\")F37$$\"#YF*$!3+++++++]()F37$$\"#Z F*$!3+++++++v$*F37$$\"#[F*$!\"\"F*7$$\"#\\F*Fjw7$$\"#]F*Few7$$\"#^F*F` w7$$\"#_F*F[w7$$\"#`F*Ffv7$$\"#aF*Fbv7$$\"#bF*F]v7$$\"#cF*Fhu7$$\"#dF* Fcu7$$\"#eF*F^u7$$\"#fF*Fit7$$\"#gF*Fdt7$$\"#hF*F_t7$$\"#iF*Fjs7$$\"#j F*Fes7$$\"#kF*Fas-%'COLOURG6&%$RGBG$\")=THv!\")Fe[lFe[l-%&STYLEG6#%%LI NEG-F$6%F&-Fb[l6&Fd[l$\")#)eqkFg[l$\"))eqk\"Fg[lFb\\l-Fi[l6#%&POINTG-% +AXESLABELSG6$Q!6\"Fj\\l-%'SYMBOLG6#%'CIRCLEG-%%VIEWG6$%(DEFAULTGFc]l " 1 2 4 1 10 0 2 9 1 4 2 1.000000 45.000000 45.000000 0 0 "Curve 1" "C urve 2" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 61 "Now we construct the discrete Fourier transform of this data." }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 84 "fdata := fft(data):\npts2 := [seq([i,abs(fdata[i])],i=1..64)]:\npl ot(pts2,color=blue);" }}{PARA 13 "" 1 "" {GLPLOT2D 559 236 236 {PLOTDATA 2 "6&-%'CURVESG6#7\\o7$$\"\"\"\"\"!$F*F*7$$\"\"#F*$\"31+++*H $)[C$!#<7$$\"\"$F*F+7$$\"\"%F*$\"3y******yfoGO!#=7$$\"\"&F*F+7$$\"\"'F *$\"38+++*epKK\"F:7$$\"\"(F*F+7$$\"\")F*$\"3e+++,pd$)o!#>7$$\"\"*F*F+7 $$\"#5F*$\"33+++$*zrtUFK7$$\"#6F*F+7$$\"#7F*$\"3)******R0.f&HFK7$$\"#8 F*F+7$$\"#9F*$\"3:+++gpe,AFK7$$\"#:F*F+7$$\"#;F*$\"3'*******eXHKIU\"FK7$$\"#>F*F+7$$\"#?F*$\"30+++tI(4@ \"FK7$$\"#@F*F+7$$\"#AF*$\"3)*******yh\">1\"FK7$$\"#BF*F+7$$\"#CF*$\"3 m*****R\\A,c*!#?7$$\"#DF*F+7$$\"#EF*$\"3B******)z%p7))Ffq7$$\"#FF*F+7$ $\"#GF*$\"3w+++\"H&o-$)Ffq7$$\"#HF*F+7$$\"#IF*$\"3K+++`GS%)zFfq7$$\"#J F*F+7$$\"#KF*$\"37+++d]NJyFfq7$$\"#LF*F+7$$\"#MF*Fes7$$\"#NF*F+7$$\"#O F*F]s7$$\"#PF*F+7$$\"#QF*Fer7$$\"#RF*F+7$$\"#SF*F]r7$$\"#TF*F+7$$\"#UF *Fdq7$$\"#VF*F+7$$\"#WF*F\\q7$$\"#XF*F+7$$\"#YF*Fdp7$$\"#ZF*F+7$$\"#[F *F\\p7$$\"#\\F*F+7$$\"#]F*Fdo7$$\"#^F*F+7$$\"#_F*F\\o7$$\"#`F*F+7$$\"# aF*FZ7$$\"#bF*F+7$$\"#cF*FR7$$\"#dF*F+7$$\"#eF*FI7$$\"#fF*F+7$$\"#gF*F A7$$\"#hF*F+7$$\"#iF*F87$$\"#jF*F+7$$\"#kF*F/-%'COLOURG6&%$RGBGF+F+$\" *++++\"!\")-%+AXESLABELSG6$Q!6\"Faz-%%VIEWG6$%(DEFAULTGFfz" 1 2 0 1 10 0 2 6 1 4 2 1.000000 45.000000 45.000000 0 0 "Curve 1" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 48 "We zoom in at the left hand end of this picture." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 110 "pts3 := [seq([i,abs(fdata[i ])],i=1..8)];\nplot([pts3,pts3],style=[line,point],color=[grey,blue],s ymbol=circle);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%%pts3G7*7$\"\"\"$ \"\"!F)7$\"\"#$\"+*H$)[C$!\"*7$\"\"$F(7$\"\"%$\"+zfoGO!#57$\"\"&F(7$\" \"'$\"+*epKK\"F57$\"\"(F(7$\"\")$\"+,pd$)o!#6" }}{PARA 13 "" 1 "" {GLPLOT2D 437 317 317 {PLOTDATA 2 "6'-%'CURVESG6%7*7$$\"\"\"\"\"!$F*F* 7$$\"\"#F*$\"31+++*H$)[C$!#<7$$\"\"$F*F+7$$\"\"%F*$\"3y******yfoGO!#=7 $$\"\"&F*F+7$$\"\"'F*$\"38+++*epKK\"F:7$$\"\"(F*F+7$$\"\")F*$\"3e+++,p d$)o!#>-%'COLOURG6&%$RGBG$\")=THv!\")FPFP-%&STYLEG6#%%LINEG-F$6%F&-FM6 &FOF+F+$\"*++++\"FR-FT6#%&POINTG-%+AXESLABELSG6$Q!6\"F]o-%'SYMBOLG6#%' CIRCLEG-%%VIEWG6$%(DEFAULTGFfo" 1 2 4 1 10 0 2 9 1 4 2 1.000000 45.000000 44.000000 0 0 "Curve 1" "Curve 2" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 83 "a2 := abs(fdata[2] );\na4 := abs(fdata[4]);\na6 := abs(fdata[6]);\na8 := abs(fdata[8]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#a2G$\"+*H$)[C$!\"*" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#>%#a4G$\"+zfoGO!#5" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#a6G$\"+*epKK\"!#5" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#a8G$ \"+,pd$)o!#6" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 97 "These values have roughly the same relative magnitudes as the coefficients in the Fourier series." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "a2/a4;\na2/a6;\na2/a8 ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+p%4B%*)!\"*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+\"*4<_C!\")" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$ \"+p$\\Rr%!\")" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 50 "Taking more sample points, gives better agreement." }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 153 "data := [seq(evalf((f(2*Pi*n/1024))),n=1..1024)]:\nfdata := fft(d ata):\na2 := abs(fdata[2]);\na4 := abs(fdata[4]);\na6 := abs(fdata[6]) ;\na8 := abs(fdata[8]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#a2G$\"+? _\"pH\"!\")" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#a4G$\"+\"3`5W\"!\"* " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#a6G$\"+A:0)=&!#5" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#>%#a8G$\"+*Qkrk#!#5" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "a2/a4;\na2/a6;\na2 /a8;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+.Tx***)!\"*" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#$\"+f<\")*\\#!\")" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+9@E**[!\")" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 47 "Adding \"noise\" to periodic data, smoothing data" }}{PARA 0 "" 0 "" {TEXT -1 106 "The examples in this section are taken from the \"Mat hematica\" book, by Stephen Wolfram, 2nd Edition, 1991." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}} {SECT 1 {PARA 4 "" 0 "" {TEXT -1 9 "Example 1" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 140 "In this example start wi th data based on a simple sine wave, with amplitude 1 and frequency 30 , and add random noise of a similar magnitude." }}{PARA 0 "" 0 "" {TEXT -1 1 " " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 69 "data:=[seq( evalf((sin(30*2*Pi*n/256)+(rand()/10^12-1/2))),n=1..256)]:" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 75 "The resulting d ata appears to be fairly random in a plot is still present." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 46 "pt s := [seq([i,data[i]],i=1..256)]:\nplot(pts);" }}{PARA 13 "" 1 "" {GLPLOT2D 466 270 270 {PLOTDATA 2 "6%-%'CURVESG6$7\\[l7$$\"\"\"\"\"!$ \"39+++Siy*)f!#=7$$\"\"#F*$\"3%********>aH;)F-7$$\"\"$F*$\"3#)*****H01 %okF-7$$\"\"%F*$\"3/+++dYY$p\"F-7$$\"\"&F*$!3C+++_-WcXF-7$$\"\"'F*$!3Y *****R0l=5(F-7$$\"\"(F*$!3++++rq#>P\"!#<7$$\"\")F*$!3'******p5$4(f\"F- 7$$\"\"*F*$\"3x*****Hna>T%F-7$$\"#5F*$\"3)******>I,v7\"FL7$$\"#6F*$\"3 m******f?V)H(F-7$$\"#7F*$\"3y*****H?dkl$F-7$$\"#8F*$\"3\"*******f,\\/: F-7$$\"#9F*$!32+++f3%QB\"FL7$$\"#:F*$!3/+++%)[O59FL7$$\"#;F*$!3')***** *o%zgY#F-7$$\"#F *$\"3\"******\\!z?L6FL7$$\"#?F*$\"3)*******fX4_7FL7$$\"#@F*$\"3E++++rL SpF-7$$\"#AF*$!3[*****pH/\"\\#)F-7$$\"#BF*$!3-+++-L&fG\"FL7$$\"#CF*$!3 %)*****zeo[%**F-7$$\"#DF*$!3'******\\#eE@SF-7$$\"#EF*$\"3e******H'G&)G '!#>7$$\"#FF*$\"3#******p4()[x&F-7$$\"#GF*$\"3'******R@on:\"FL7$$\"#HF *$\"3p******R\"GF-7$$\"#WF*$\"31+++WoLu5FL7$$\"#XF*$\"3r**** *H=)=<**F-7$$\"#YF*$\"31+++*fpWL$F-7$$\"#ZF*$\"3A+++V6thFF-7$$\"#[F*$! 37+++P@3_@F-7$$\"#\\F*$!35+++iO\">Q\"FL7$$\"#]F*$!3=+++^s-A$*F-7$$\"#^ F*$\"35+++o#Qm[\"F-7$$\"#_F*$\"3g*****f.,0&oF-7$$\"#`F*$\"3!******pB#[ 17FL7$$\"#aF*$\"3$)*****Rqf^$yF-7$$\"#bF*$\"3%*******ffZ?:Ffs7$$\"#cF* $\"3********\\/<9KFfs7$$\"#dF*$!34+++JWnA6FL7$$\"#eF*$!34+++\"fRG+\"FL 7$$\"#fF*$!33+++TLo]CF-7$$\"#gF*$!3!******fml?C#F-7$$\"#hF*$\"3S+++ikM $3*F-7$$\"#iF*$\"35+++Pf5[5FL7$$\"#jF*$\"3%******p>uI1\"FL7$$\"#kF*$\" 3.+++\"G[K?\"F-7$$\"#lF*$!3++++us/(e#F-7$$\"#mF*$!3'******RXnYp*F-7$$ \"#nF*$!37+++8'Rtb)F-7$$\"#oF*$\"3%******p07S'GF-7$$\"#pF*$\"3=+++IJ_v UF-7$$\"#qF*$\"33+++Oy#*\\9FL7$$\"#rF*$\"3]+++V!ohh&F-7$$\"#sF*$\"3W++ +$4G=l(F-7$$\"#tF*$!3s*****>jp#y\\F-7$$\"#uF*$!3\"******4m3gJ\"FL7$$\" #vF*$!31+++k'40N\"FL7$$\"#wF*$!39+++$>FT\"[F-7$$\"#xF*$!38+++0i=E?F-7$ $\"#yF*$\"3U+++;?>k#)F-7$$\"#zF*$\"3g*****4T9h\"eF-7$$\"#!)F*$\"3')*** ***30RncF-7$$\"#\")F*$\"3.+++Q[`1BF-7$$\"##)F*$!3w*****zXNlC%F-7$$\"#$ )F*$!3++++iA2e7FL7$$\"#%)F*$!3[*****H-\\mP'F-7$$\"#&)F*$!3a*****RCvna& F-7$$\"#')F*$!3?+++g'R%yL\"FL7$$\"##*F*$!3%******fqi(f8FL7$$\"#$*F*$!3@+ ++iL5/VF-7$$\"#%*F*$!3A+++[W'e/$F-7$$\"#&*F*$\"3%******p&QP@5FL7$$\"#' *F*$\"3-+++Scy([\"FL7$$\"#(*F*$\"3k*****>)R\\^\"*F-7$$\"#)*F*$!37+++R \\KzEF-7$$\"#**F*$!3$*******=sH3MF-7$$\"$+\"F*$!3*******RUu*R8FL7$$\"$ ,\"F*$!30+++14&)45FL7$$\"$-\"F*$!3++++yW&oc$F-7$$\"$.\"F*$\"3)******Hu *zi#)F-7$$\"$/\"F*$\"3-+++XL6%4*F-7$$\"$0\"F*$\"3))*****fzYf'pF-7$$\"$ 1\"F*$\"3Y+++7@>V#*F-7$$\"$2\"F*$!3(******H][\"45F-7$$\"$3\"F*$!35+++W pbw6FL7$$\"$4\"F*$!32+++:22JjF-7$$\"$5\"F*$!3x*****zUc)HXF-7$$\"$6\"F* $\"31+++aY&)>^F-7$$\"$7\"F*$\"3!******pst73\"FL7$$\"$8\"F*$\"3$******* [du/9FL7$$\"$9\"F*$\"3R+++@MjD#)F-7$$\"$:\"F*$!3!******H$oV\"p#F-7$$\" $;\"F*$!3M+++=p4&))*F-7$$\"$<\"F*$!39+++)=NF[)F-7$$\"$=\"F*$!3#******* e`Me6FL7$$\"$>\"F*$!3%*******Qv:LcF-7$$\"$?\"F*$\"31+++Q\"y5$HF-7$$\"$ @\"F*$\"35+++S0\\j5FL7$$\"$A\"F*$\"3#******R>:\\M\"FL7$$\"$B\"F*$\"3%* *****R8Ib[#F-7$$\"$C\"F*$!3=+++g[Sq))Ffs7$$\"$D\"F*$!30+++!HZFB\"FL7$$ \"$E\"F*$!31+++(\\FJ<\"FL7$$\"$F\"F*$!3%)*****zh(Q#f&F-7$$\"$G\"F*$\"3 #******R)*o9)>F-7$$\"$H\"F*$\"3z*****pAG6g*F-7$$\"$I\"F*$\"3!*******39 Bj5FL7$$\"$J\"F*$\"35+++`uo)G\"FL7$$\"$K\"F*$\"3E+++CYZc]F-7$$\"$L\"F* $!3;+++vj/HOF-7$$\"$M\"F*$!3++++I5LL7FL7$$\"$N\"F*$!3!******4-xUM\"FL7 $$\"$O\"F*$\"3#********H^?7$!#?7$$\"$P\"F*$\"3%*******z\">Dc%Ffs7$$\"$ Q\"F*$\"3/+++f5TX7FL7$$\"$R\"F*$\"3a*****>]M%\\gF-7$$\"$S\"F*$\"3;+++ \\O'y_*F-7$$\"$T\"F*$\"3/+++6cg'y\"F-7$$\"$U\"F*$!3-+++_bT[OF-7$$\"$V \"F*$!3o*****RX\")HY'F-7$$\"$W\"F*$!3g*****f(Rp=yF-7$$\"$X\"F*$\"3)*** ***Rhxc)RF-7$$\"$Y\"F*$\"3C+++ZZXc[F-7$$\"$Z\"F*$\"3%******\\9G3O\"FL7 $$\"$[\"F*$\"3'******Hu*omNF-7$$\"$\\\"F*$!3y*******[OzB'Ffs7$$\"$]\"F *$!3w*****RE'pGUF-7$$\"$^\"F*$!3`+++==[D))F-7$$\"$_\"F*$!3)******R/)e# 4\"FL7$$\"$`\"F*$!3e******=.?2nF-7$$\"$a\"F*$\"3#******H%*\\2o%F-7$$\" $b\"F*$\"36+++RP\"3%oF-7$$\"$c\"F*$\"3.+++as%z@\"FL7$$\"$d\"F*$\"3E+++ '\\%4rhF-7$$\"$e\"F*$\"3-+++dN\"yP#F-7$$\"$f\"F*$!3W+++zvT!o)F-7$$\"$g \"F*$!33+++LGcv6FL7$$\"$h\"F*$!3s*****\\#3M#3(F-7$$\"$i\"F*$!3;+++8/*) [EF-7$$\"$j\"F*$\"3O+++@u?H()F-7$$\"$k\"F*$\"3u******e$3,y(F-7$$\"$l\" F*$\"3t*****RwO'GRF-7$$\"$m\"F*$!3')*****f#4Gt'F-7$$\"$\"=F*$\"3A+++(F-7$$\"$#=F*$\"3/+++ 6XzmVF-7$$\"$$=F*$\"3))*****>.tF*$ \"33+++\\.Z\"\\\"FL7$$\"$\">F*$\"3)******H'>9)e$F-7$$\"$#>F*$!33+++TZb 3JFfs7$$\"$$>F*$!35+++#Rf#y5FL7$$\"$%>F*$!3<+++iXSDmF-7$$\"$&>F*$!3)** ******=%ykUF-7$$\"$'>F*$!3-+++\"G\"3XVF-7$$\"$(>F*$\"3g+++g#Q#*)zFfs7$ $\"$)>F*$\"3&******4**>)QxF-7$$\"$*>F*$\"32+++a$*3W8FL7$$\"$+#F*$\"3%* ******)\\adm%F-7$$\"$,#F*$!35+++V'Hb%\\F-7$$\"$-#F*$!3C+++kb)z3'F-7$$ \"$.#F*$!3\"******R/dRJ)F-7$$\"$/#F*$!36+++v'4a]\"F-7$$\"$0#F*$\"3U+++ fuL2eF-7$$\"$1#F*$\"30+++53uW6FL7$$\"$2#F*$\"3X+++W#\\'4gF-7$$\"$3#F*$ \"3W+++@6E>]F-7$$\"$4#F*$!3-+++W\"*)[x\"F-7$$\"$5#F*$!3#)*****4iXz[$F- 7$$\"$6#F*$!3E+++\"*)fXb'F-7$$\"$7#F*$!3W+++.5]&\\'F-7$$\"$8#F*$!3E+++ t)ylC(F-7$$\"$9#F*$\"3$)*****f%=U7EF-7$$\"$:#F*$\"3U+++Irg!3)F-7$$\"$; #F*$\"3C+++5bR:iF-7$$\"$<#F*$\"3/+++75@a>F-7$$\"$=#F*$!3U+++obU0jF-7$$ \"$>#F*$!3-+++tZT2OF-7$$\"$?#F*$!37+++%>7*QgF-7$$\"$@#F*$!3<+++B?'>-(F -7$$\"$A#F*$!3'******f'=P\\uFfs7$$\"$B#F*$\"3)******pTAu4\"FL7$$\"$C#F *$\"3-+++ib+)R\"FL7$$\"$D#F*$\"3;+++?[;,hF-7$$\"$E#F*$\"3B+++[u::GF-7$ $\"$F#F*$!3`+++!Rj3q&F-7$$\"$G#F*$!3'*******)*HTe5FL7$$\"$H#F*$!3#**** **\\0/!*)QF-7$$\"$I#F*$\"3#*******H`DR?F-7$$\"$J#F*$\"3%)******Qd&*QzF -7$$\"$K#F*$\"31+++$pOAO\"FL7$$\"$L#F*$\"3,+++')[\"QC\"FL7$$\"$M#F*$\" 3[+++/l3FaF-7$$\"$N#F*$\"3)*******4S?.DFfs7$$\"$O#F*$!3-+++HEI>5FL7$$ \"$P#F*$!33+++Vt2R6FL7$$\"$Q#F*$!3/+++y@fc5FL7$$\"$R#F*$\"3#)*****\\-z E&QF-7$$\"$S#F*$\"3N+++>U@7$)F-7$$\"$T#F*$\"3X+++!3dTM&F-7$$\"$U#F*$\" 33+++eAm!Q$F-7$$\"$V#F*$!3K+++q$R6'QFfs7$$\"$W#F*$!3U+++i[s')**F-7$$\" $X#F*$!33+++4FBu7FL7$$\"$Y#F*$!3))*****>,6\\'yF-7$$\"$Z#F*$!3++++gh6#) HFfs7$$\"$[#F*$!3z*******G3bt%Ffs7$$\"$\\#F*$\"3'******4Y#Q^7FL7$$\"$] #F*$\"3e*****fIG-k)F-7$$\"$^#F*$\"3]+++a()QN'*F-7$$\"$_#F*$!3C+++7@$4z #F-7$$\"$`#F*$!3W+++7?V`dF-7$$\"$a#F*$!3*******>T7vS\"FL7$$\"$b#F*$!3w *****RKhE-*F-7$$\"$c#F*$\"3A+++LjYbZF--%'COLOURG6&%$RGBG$FY!\"\"$F*F*F \\\\p-%+AXESLABELSG6$Q!6\"F`\\p-%%VIEWG6$%(DEFAULTGFe\\p" 1 2 0 1 10 0 2 9 1 4 2 1.000000 45.000000 45.000000 0 0 "Curve 1" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 140 "The underlying peri odicity is still retained, however, as can be seen from the Fourier tr ansform of the data, which has a strong peak at 30." }}{PARA 0 "" 0 " " {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 85 "fdata := f ft(data):\npts2 := [seq([i,abs(fdata[i])],i=1..256)]:\nplot(pts2,color =blue);" }}{PARA 13 "" 1 "" {GLPLOT2D 462 260 260 {PLOTDATA 2 "6&-%'CU RVESG6#7\\[l7$$\"\"\"\"\"!$\"3y*****4Vle4*!#>7$$\"\"#F*$\"3)******\\V) R$=)F-7$$\"\"$F*$\"3\"******Hb!H18!#=7$$\"\"%F*$\"3'******f/)*G'\\F87$ $\"\"&F*$\"3*******RWZ5h\"F87$$\"\"'F*$\"35+++/G!HE\"F87$$\"\"(F*$\"3S +++>#=F!eF87$$\"\")F*$\"3')*****H\"Qf(R\"F87$$\"\"*F*$\"3C+++>'R$*Q$F8 7$$\"#5F*$\"3'*******)47.*=F87$$\"#6F*$\"3-+++bw(*)*RF87$$\"#7F*$\"3<+ ++in>H_F87$$\"#8F*$\"3W+++pWsPnF-7$$\"#9F*$\"3#*******\\x.l>F87$$\"#:F *$\"3G+++3)H3d#F87$$\"#;F*$\"3()*****>vH\"H9F87$$\"#F*$\"3&******4=Li8\"F87$$\"#?F*$\"3-+++ d&Rw0#F87$$\"#@F*$\"39+++Ozu_YF87$$\"#AF*$\"3E+++NDl&4$F87$$\"#BF*$\"3 2+++HFIS6F87$$\"#CF*$\"3.+++I$[)4UF87$$\"#DF*$\"33+++u,$eQ\"F87$$\"#EF *$\"3C+++whJoFF87$$\"#FF*$\"33+++[;YbNF87$$\"#GF*$\"3t*****pZ2v$RF-7$$ \"#HF*$\"33+++9f+2WF87$$\"#IF*$\"3\")*****zx*H2NF87$$\"#JF*$\"30+++&[1 95)!#<7$$\"#KF*$\"3E+++$pxa/%F87$$\"#LF*$\"3#)*****z(RBBSF87$$\"#MF*$ \"3))*****zVOWP\"F87$$\"#NF*$\"36+++pkU4AF87$$\"#OF*$\"3++++?v`+7F87$$ \"#PF*$\"3#******4wwaM#F87$$\"#QF*$\"3)******p5BTX#F87$$\"#RF*$\"3E+++ $3Fy:%F87$$\"#SF*$\"39++++t\"*fRF-7$$\"#TF*$\"3%*******4bcXAF87$$\"#UF *$\"3/+++Js!Rs\"F87$$\"#VF*$\"3%)*****p2&G%o#F87$$\"#WF*$\"3\\******pg R;!)F-7$$\"#XF*$\"3#******RGum2#F87$$\"#YF*$\"3'******f\"*[q8\"F87$$\" #ZF*$\"33+++>[6YLF87$$\"#[F*$\"3/+++G*QS#>F87$$\"#\\F*$\"3++++[!R[[%F- 7$$\"#]F*$\"3c*****\\KjAM&F87$$\"#^F*$\"3C+++mTXLUF87$$\"#_F*$\"3&**** **H.D++(F-7$$\"#`F*$\"3v*****f+n^+&F87$$\"#aF*$\"3)******>'R;C:F87$$\" #bF*$\"3<+++yF_UHF87$$\"#cF*$\"3'******pf\\u/&F87$$\"#dF*$\"3'*******4 G@f7F87$$\"#eF*$\"3-+++E^aiFF87$$\"#fF*$\"3++++]v\"Qo#F87$$\"#gF*$\"3% *******=^p!*\\*>F87$$\"#nF*$\"3?+++/&HKN%F87$$\"#oF*$\"3 7+++]NvE=F87$$\"#pF*$\"3#******z@`w9#F87$$\"#qF*$\"35+++Env1]F87$$\"#r F*$\"3')*****\\!)=&)o%F87$$\"#sF*$\"3(******f)y(\\C#F87$$\"#tF*$\"3#** *****zlr\"*=F87$$\"#uF*$\"37+++r#zfc#F87$$\"#vF*$\"3'******>[`/j\"F87$ $\"#wF*$\"3#)*****z-7LL%F87$$\"#xF*$\"3K+++S%Hf['F-7$$\"#yF*$\"3++++() >Q:KF87$$\"#zF*$\"37+++7FhnBF87$$\"#!)F*$\"3%)******oSl)e#F87$$\"#\")F *$\"3*******49RVj#F87$$\"##)F*$\"3-+++wZ+2;F87$$\"#$)F*$\"3$******\\6C 7r#F87$$\"#%)F*$\"3&)*****pg.X]#F87$$\"#&)F*$\"3#*******oC07HF87$$\"#' )F*$\"3v*****z)3Zze2$F87$$\"#$*F*$\"3-+++ae^n@F87$ $\"#%*F*$\"34+++&G(*f?#F87$$\"#&*F*$\"3!******z&[SpBF87$$\"#'*F*$\"32+ ++y.U-7F87$$\"#(*F*$\"3!)*****z&3qsOF87$$\"#)*F*$\"3?+++GqI)p$F87$$\"# **F*$\"3(******>hbNh\"F87$$\"$+\"F*$\"3)******f'zD*z#F87$$\"$,\"F*$\"3 q******4Swz%*F-7$$\"$-\"F*$\"3++++R&>F8\"F87$$\"$.\"F*$\"33+++i]I\"F*$\"3!******>ZW'pIF87$$\"$?\"F*$\"35+++gEO*y\"F87$$\"$ @\"F*$\"3%)*****z]s6o#F87$$\"$A\"F*$\"3#)******fTz;VF87$$\"$B\"F*$\"3D +++W1D?GF87$$\"$C\"F*$\"3%******fac$=HF87$$\"$D\"F*$\"3G+++?Jc)z$F87$$ \"$E\"F*$\"3/+++fZ;Y;F87$$\"$F\"F*$\"3A+++(4g$HWF87$$\"$G\"F*$\"3'**** **f\"=!)[5F87$$\"$H\"F*$\"3v*****HE-rT$F87$$\"$I\"F*Fccm7$$\"$J\"F*F^c m7$$\"$K\"F*Fibm7$$\"$L\"F*Fdbm7$$\"$M\"F*F_bm7$$\"$N\"F*Fjam7$$\"$O\" F*Feam7$$\"$P\"F*F`am7$$\"$Q\"F*F[am7$$\"$R\"F*Ff`m7$$\"$S\"F*Fa`m7$$ \"$T\"F*F\\`m7$$\"$U\"F*Fg_m7$$\"$V\"F*Fb_m7$$\"$W\"F*F]_m7$$\"$X\"F*F h^m7$$\"$Y\"F*Fc^m7$$\"$Z\"F*F^^m7$$\"$[\"F*Fi]m7$$\"$\\\"F*Fd]m7$$\"$ ]\"F*F_]m7$$\"$^\"F*Fj\\m7$$\"$_\"F*Fe\\m7$$\"$`\"F*F`\\m7$$\"$a\"F*F[ \\m7$$\"$b\"F*Ff[m7$$\"$c\"F*Fa[m7$$\"$d\"F*F\\[m7$$\"$e\"F*Fgjl7$$\"$ f\"F*Fbjl7$$\"$g\"F*F]jl7$$\"$h\"F*Fhil7$$\"$i\"F*Fcil7$$\"$j\"F*F^il7 $$\"$k\"F*Fihl7$$\"$l\"F*Fdhl7$$\"$m\"F*F_hl7$$\"$n\"F*Fjgl7$$\"$o\"F* Fegl7$$\"$p\"F*F`gl7$$\"$q\"F*F[gl7$$\"$r\"F*Fffl7$$\"$s\"F*Fafl7$$\"$ t\"F*F\\fl7$$\"$u\"F*Fgel7$$\"$v\"F*Fbel7$$\"$w\"F*F]el7$$\"$x\"F*Fhdl 7$$\"$y\"F*Fcdl7$$\"$z\"F*F^dl7$$\"$!=F*Ficl7$$\"$\"=F*Fdcl7$$\"$#=F*F _cl7$$\"$$=F*Fjbl7$$\"$%=F*Febl7$$\"$&=F*F`bl7$$\"$'=F*F[bl7$$\"$(=F*F fal7$$\"$)=F*Faal7$$\"$*=F*F\\al7$$\"$!>F*Fg`l7$$\"$\">F*Fb`l7$$\"$#>F *F]`l7$$\"$$>F*Fh_l7$$\"$%>F*Fc_l7$$\"$&>F*F^_l7$$\"$'>F*Fi^l7$$\"$(>F *Fd^l7$$\"$)>F*F_^l7$$\"$*>F*Fj]l7$$\"$+#F*Fe]l7$$\"$,#F*F`]l7$$\"$-#F *F[]l7$$\"$.#F*Ff\\l7$$\"$/#F*Fa\\l7$$\"$0#F*F\\\\l7$$\"$1#F*Fg[l7$$\" $2#F*Fb[l7$$\"$3#F*F][l7$$\"$4#F*Fhz7$$\"$5#F*Fcz7$$\"$6#F*F^z7$$\"$7# F*Fiy7$$\"$8#F*Fdy7$$\"$9#F*F_y7$$\"$:#F*Fjx7$$\"$;#F*Fex7$$\"$<#F*F`x 7$$\"$=#F*F[x7$$\"$>#F*Ffw7$$\"$?#F*Faw7$$\"$@#F*F\\w7$$\"$A#F*Fgv7$$ \"$B#F*Fbv7$$\"$C#F*F]v7$$\"$D#F*Fhu7$$\"$E#F*Fcu7$$\"$F#F*F]u7$$\"$G# F*Fht7$$\"$H#F*Fct7$$\"$I#F*F^t7$$\"$J#F*Fis7$$\"$K#F*Fds7$$\"$L#F*F_s 7$$\"$M#F*Fjr7$$\"$N#F*Fer7$$\"$O#F*F`r7$$\"$P#F*F[r7$$\"$Q#F*Ffq7$$\" $R#F*Faq7$$\"$S#F*F\\q7$$\"$T#F*Fgp7$$\"$U#F*Fbp7$$\"$V#F*F]p7$$\"$W#F *Fho7$$\"$X#F*Fco7$$\"$Y#F*F^o7$$\"$Z#F*Fin7$$\"$[#F*FZ7$$\"$\\#F*FU7$ $\"$]#F*FP7$$\"$^#F*FK7$$\"$_#F*FF7$$\"$`#F*FA7$$\"$a#F*F<7$$\"$b#F*F6 7$$\"$c#F*F1-%'COLOURG6&%$RGBG$F*F*F[\\o$\"*++++\"!\")-%+AXESLABELSG6$ Q!6\"Fb\\o-%%VIEWG6$%(DEFAULTGFg\\o" 1 2 0 1 10 0 2 6 1 4 2 1.000000 45.000000 45.000000 0 0 "Curve 1" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 29 "There is a strong peak at 30." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }} }}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 9 "Example 2" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 91 "We start by generating so me data by adding noise to what would otherwise be a smooth graph." }} {PARA 0 "" 0 "" {TEXT -1 1 " " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 122 "data:=\n[seq(evalf((BesselJ(1,10*n/256)+0.2*(rand()/10^12-1/2)) ),n=1..256)]:\npts := [seq([i,data[i]],i=1..256)]:\nplot(pts);" }} {PARA 13 "" 1 "" {GLPLOT2D 428 272 272 {PLOTDATA 2 "6%-%'CURVESG6$7\\[ l7$$\"\"\"\"\"!$\"3n*****\\p%H6h!#>7$$\"\"#F*$!3G+++U!Hv*QF-7$$\"\"$F* $\"3.+++(*4W.6!#=7$$\"\"%F*$\"3)******\\%[6Z7F87$$\"\"&F*$\"3.+++)=[L+ \"F87$$\"\"'F*$\"39+++USFn8F87$$\"\"(F*$\"3/+++d#4J,#F87$$\"\")F*$\"3) ******R*o5$Q#F87$$\"\"*F*$\"3%******fH8WI#F87$$\"#5F*$\"3#******Hn*\\A ;F87$$\"#6F*$\"3'*******z:-o=F87$$\"#7F*$\"37+++q$*=D9F87$$\"#8F*$\"31 +++%\\8>!=F87$$\"#9F*$\"35+++hn+&z#F87$$\"#:F*$\"35+++OA!>'=F87$$\"#;F *$\"3))*****\\`+^m$F87$$\"#F*$\"3#)******QJhsGF87$$\"#?F*$\"3y*****Hd-,K%F87$$\"#@F*$ \"3%)******oHD@SF87$$\"#AF*$\"31+++v>)yZ$F87$$\"#BF*$\"3@+++LrrGJF87$$ \"#CF*$\"31+++/FSwMF87$$\"#DF*$\"34+++z5o?QF87$$\"#EF*$\"3y*****zb6&)3 %F87$$\"#FF*$\"3$)*****zKR`F87$$\"#ZF*$\"31+++dWT[jF87 $$\"#[F*$\"3?+++C(Qdw&F87$$\"#\\F*$\"3@+++nnCQ\\F87$$\"#]F*$\"3]*****z LfeR'F87$$\"#^F*$\"3)*******)HY]+&F87$$\"#_F*$\"3k******4_#Qd&F87$$\"# `F*$\"3O+++$\\-td&F87$$\"#aF*$\"3e*****HwG%)f&F87$$\"#bF*$\"3%******>n p&3\\F87$$\"#cF*$\"3]*****\\!yW*\\&F87$$\"#dF*$\"3y*****Rr%piZF87$$\"# eF*$\"3k*****fO)G,jF87$$\"#fF*$\"3?++++bB5aF87$$\"#gF*$\"3C+++bZIxfF87 $$\"#hF*$\"3#)*****4!R4'\\&F87$$\"#iF*$\"3T+++&**QAJ&F87$$\"#jF*$\"3C+ ++\\4hoVF87$$\"#kF*$\"3A+++#fG\\I%F87$$\"#lF*$\"3y*****RvAcR%F87$$\"#m F*$\"3A+++yo,#p&F87$$\"#nF*$\"3t*****z6b;]%F87$$\"#oF*$\"3$)*****Hn23t %F87$$\"#pF*$\"3%******fO!)Q(RF87$$\"#qF*$\"35+++R!fCQ%F87$$\"#rF*$\"3 y******)e`93%F87$$\"#sF*$\"3A+++Tqs*R$F87$$\"#tF*$\"3x*****>tGg^%F87$$ \"#uF*$\"3))*****f#)Hk!HF87$$\"#vF*$\"3v*****4ynTI$F87$$\"#wF*$\"3D+++ *)*=?\"GF87$$\"#xF*$\"3x*****f6lKg#F87$$\"#yF*$\"3D+++5Bi7SF87$$\"#zF* $\"3!******z95nh#F87$$\"#!)F*$\"33+++(>7/:#F87$$\"#\")F*$\"3!******>)z @.IF87$$\"##)F*$\"35+++p[%)zHF87$$\"#$)F*$\"3-+++-lRrIF87$$\"#%)F*$\"3 )******f!z]#F87$$\"#))F*$\"32+++`OTO>F87$$\"#*)F*$\"3S*****z1? xt(F-7$$\"#!*F*$\"3H+++)H%))3aF-7$$\"#\"*F*$\"31+++Vx7()>F87$$\"##*F*$ \"3/+++.Y3'e\"F87$$\"#$*F*$\"3e*****>(e(F-7$$ \"$+\"F*$!3U*****>+#pbnF-7$$\"$,\"F*$!3++++;EzC7F87$$\"$-\"F*$!32+++JW `A8F87$$\"$.\"F*$\"3%)******zRQHW!#?7$$\"$/\"F*$!35+++N'>/X\"F87$$\"$0 \"F*$!31+++y5pr6F87$$\"$1\"F*$!3O++++k-yzF-7$$\"$2\"F*$!3))*****H&yHi; F87$$\"$3\"F*$!3()*****fA!RV:F87$$\"$4\"F*$!3')*****z@*[gCF87$$\"$5\"F *$!3<+++?y+.FF87$$\"$6\"F*$!3%******R9<*e7F87$$\"$7\"F*$!3'******\\'[6 ]6F87$$\"$8\"F*$!3%******p*)RDG#F87$$\"$9\"F*$!3!)******[,qdGF87$$\"$: \"F*$!39+++*Q=Rq#F87$$\"$;\"F*$!3%******H*R(pn\"F87$$\"$<\"F*$!3>+++yb 1UEF87$$\"$=\"F*$!38+++6p\"o5#F87$$\"$>\"F*$!3#)*****HC9jv#F87$$\"$?\" F*$!37+++Xj![x\"F87$$\"$@\"F*$!3.++++\"Q!RPF87$$\"$A\"F*$!3>+++%)**[SL F87$$\"$B\"F*$!3#)*****pQl*))GF87$$\"$C\"F*$!3G+++')[`fGF87$$\"$D\"F*$ !37+++=.q'*HF87$$ \"$L\"F*$!3(******fRmT?$F87$$\"$M\"F*$!3/+++dpWuDF87$$\"$N\"F*$!3++++0 qx.NF87$$\"$O\"F*$!3/+++0`,yFF87$$\"$P\"F*$!31+++k-t)4%F87$$\"$Q\"F*$! 3!)*****R\\\"paPF87$$\"$R\"F*$!3@+++g(3G!HF87$$\"$S\"F*$!3)******pSHsF %F87$$\"$T\"F*$!3'******R#G`BKF87$$\"$U\"F*$!3!******>V?N>$F87$$\"$V\" F*$!34+++*QmTu#F87$$\"$W\"F*$!3E+++(y)zZEF87$$\"$X\"F*$!3-+++s<#eY#F87 $$\"$Y\"F*$!3-+++F&3xC$F87$$\"$Z\"F*$!3-+++Cp.JNF87$$\"$[\"F*$!3#)**** **3C\"QG$F87$$\"$\\\"F*$!3/+++IO7jLF87$$\"$]\"F*$!39+++))3\"yL$F87$$\" $^\"F*$!3#*******y\\#*yAF87$$\"$_\"F*$!3)******HO:o2#F87$$\"$`\"F*$!3/ +++I?tp@F87$$\"$a\"F*$!37+++XqZb?\"F87$$\"$r\"F*$!3%**** ***yoyw9F87$$\"$s\"F*$!3/+++.*HTy\"F-7$$\"$t\"F*$!3)******pse]c(F-7$$ \"$u\"F*$\"3))******H+csRFh[m7$$\"$v\"F*$\"3u******4HvfZFh[m7$$\"$w\"F *$!3++++syP38F87$$\"$x\"F*$!3q*****f;=Cc$F-7$$\"$y\"F*$!3(******4P?5^& F-7$$\"$z\"F*$!3g******\\!=0\"yF-7$$\"$!=F*$!3++++T&R7&\\F-7$$\"$\"=F* $!3'******RiF?X\"F-7$$\"$#=F*$\"3))*****HKa]n&F-7$$\"$$=F*$\"37+++B,v& Q*F-7$$\"$%=F*$\"3!******zK]%f;F-7$$\"$&=F*$\"3(******>>p/7\"F87$$\"$' =F*$\"3K+++]-^-WF-7$$\"$(=F*$!3)*******HdA![\"F-7$$\"$)=F*$\"3C+++6P,F VF-7$$\"$*=F*$\"3f*****zE;!=\"*F-7$$\"$!>F*$\"37+++6]4G?F-7$$\"$\">F*$ \"3'******H#)RoC\"F87$$\"$#>F*$\"3()*****Hm*)zi\"F87$$\"$$>F*$\"3++++C (Qfp*F-7$$\"$%>F*$\"3.+++th*Gs\"F87$$\"$&>F*$\"3!*******[D'px\"F87$$\" $'>F*$\"3#******HF*$\"3(*******e94,6F87$$\"$)>F*$\"3F+ ++-&y&HGF87$$\"$*>F*$\"3')*****fuknO\"F87$$\"$+#F*$\"3********)>-PA#F8 7$$\"$,#F*$\"3))*****fr5ca\"F87$$\"$-#F*$\"3'******f[eBz\"F87$$\"$.#F* $\"38+++z52RAF87$$\"$/#F*$\"3(*******Q!H-t\"F87$$\"$0#F*$\"3/+++a3TU=F 87$$\"$1#F*$\"3?+++,)f()G$F87$$\"$2#F*$\"33+++8!*z!4#F87$$\"$3#F*$\"3% *******[$3&e>F87$$\"$4#F*$\"39+++y^%)eMF87$$\"$5#F*$\"3F+++%pWeq#F87$$ \"$6#F*$\"3\"******42jj!HF87$$\"$7#F*$\"31+++67#*oMF87$$\"$8#F*$\"37++ +N(ou,$F87$$\"$9#F*$\"31+++H1@%o#F87$$\"$:#F*$\"3!******pJ64v#F87$$\"$ ;#F*$\"3*******z%>oT>F87$$\"$<#F*$\"3!******pcU$=EF87$$\"$=#F*$\"3'*** *****=nCv\"F87$$\"$>#F*$\"3<+++\"*Q:QKF87$$\"$?#F*$\"3'******f#QY,AF87 $$\"$@#F*$\"3u******R'*))*p$F87$$\"$A#F*$\"3%******45J#p>F87$$\"$B#F*$ \"3=+++4Z%)zNF87$$\"$C#F*$\"3))*****R^%3jFF87$$\"$D#F*$\"3C+++)oeqn#F8 7$$\"$E#F*$\"39+++H=#eA$F87$$\"$F#F*$\"37+++X#3^b#F87$$\"$G#F*$\"35+++ 1e(*)e#F87$$\"$H#F*$\"3E+++<%o=[$F87$$\"$I#F*$\"39+++>008=F87$$\"$J#F* $\"3++++0f-tFF87$$\"$K#F*$\"3(******zZ:\"3FF87$$\"$L#F*$\"3*)*****pU>R M\"F87$$\"$M#F*$\"3!)*****p=]$eEF87$$\"$N#F*$\"3++++mppvCF87$$\"$O#F*$ \"3(******z/tAA#F87$$\"$P#F*$\"3))*****RU1@*=F87$$\"$Q#F*$\"3-+++lNB4> F87$$\"$R#F*$\"3)*******3*eq=\"F87$$\"$S#F*$\"3*)*****H%o*o$=F87$$\"$T #F*$\"3(******zYo*4CF87$$\"$U#F*$\"34+++O![1L#F87$$\"$V#F*$\"3f+++qkf= qF-7$$\"$W#F*$\"3-+++P!HG&=F87$$\"$X#F*$\"3.+++wC<-5F87$$\"$Y#F*$\"3*) *****H)o7VBF87$$\"$Z#F*$\"3o*****4`&Q*)RF-7$$\"$[#F*$\"32+++\"\\z!G:F8 7$$\"$\\#F*$\"3M+++;IV)['F-7$$\"$]#F*$\"33+++E#*pi>F87$$\"$^#F*$\"3+++ +/n'p2\"F87$$\"$_#F*$!3$******pqa1@\"F-7$$\"$`#F*$\"3X+++?1t0XFh[m7$$ \"$a#F*$\"3F+++Y!>)=LF-7$$\"$b#F*$!3;+++qRF--%'COLOURG6&%$RGBG$FY!\"\"$F*F*F\\\\p-%+AXESLABELSG6$Q!6\"F`\\ p-%%VIEWG6$%(DEFAULTGFe\\p" 1 2 0 1 10 0 2 9 1 4 2 1.000000 45.000000 45.000000 0 0 "Curve 1" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 " " 0 "" {TEXT -1 19 "Now we construct a " }{TEXT 261 18 "convolution ke rnel" }{TEXT -1 29 " suitable for smoothing data." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 118 "kern := [se q(evalf(exp(-200*(n/256)^2)),n=1..256)]:\nkernpts := [seq([i,kern[i]], i=1..256)]:\nplot(kernpts,color=brown);" }}{PARA 13 "" 1 "" {GLPLOT2D 379 284 284 {PLOTDATA 2 "6&-%'CURVESG6#7\\[l7$$\"\"\"\"\"!$\"3')*****4 %*G&p**!#=7$$\"\"#F*$\"3')*****Hsr'y)*F-7$$\"\"$F*$\"3/+++d$z!H(*F-7$$ \"\"%F*$\"3$)******)*zWB&*F-7$$\"\"&F*$\"3=+++L\"QaE*F-7$$\"\"'F*$\"3_ ******4icf*)F-7$$\"\"(F*$\"3_+++KK26')F-7$$\"\")F*$\"3<+++CcxD#)F-7$$ \"\"*F*$\"38++++V!*4yF-7$$\"#5F*$\"3A+++L\"Q*ptF-7$$\"#6F*$\"3s*****4+ QC\"pF-7$$\"#7F*$\"3z*****zC()QW'F-7$$\"#8F*$\"3q*****R'QaqfF-7$$\"#9F *$\"3W+++V)3$)\\&F-7$$\"#:F*$\"33+++tUhK]F-7$$\"#;F*$\"3/+++=OLyXF-7$$ \"#F*$\"3#***** *463JK$F-7$$\"#?F*$\"35+++ilA]HF-7$$\"#@F*$\"34+++0![Kg#F-7$$\"#AF*$\" 3++++F.5$G#F-7$$\"#BF*$\"3))*****>WS,*>F-7$$\"#CF*$\"3()******Qi@C7$$\"#HF*$\"3C+++69F_t7$$\"#PF*$\"3/+++$fLJ`\"F_t7 $$\"#QF*$\"3(******H)*)[>7F_t7$$\"#RF*$\"3]******Qc1T'*!#?7$$\"#SF*$\" 3E+++WunvvFgw7$$\"#TF*$\"3*)*****HeJl\"fFgw7$$\"#UF*$\"3#******HfPEf%F gw7$$\"#VF*$\"3%)******3zGVNFgw7$$\"#WF*$\"31+++HZ1oo:Fgw7$$\"#ZF*$\"3/+++H<2\"=\"Fgw7$$\" #[F*$\"3!)******oIEQ))!#@7$$\"#\\F*$\"3[+++VTltlFez7$$\"#]F*$\"3#***** *****\\&f[Fez7$$\"#^F*$\"37+++._aqNFez7$$\"#_F*$\"36+++Zy[2EFez7$$\"#` F*$\"35+++U@g#*=Fez7$$\"#aF*$\"31+++o^Nl8Fez7$$\"#bF*$\"3;+++jp'**y*!# A7$$\"#cF*$\"3s******>x&p(pFi\\l7$$\"#dF*$\"3B+++d9(>%\\Fi\\l7$$\"#eF* $\"3++++1TBzMFi\\l7$$\"#fF*$\"30+++1o`MCFi\\l7$$\"#gF*$\"3%******>DhJp \"Fi\\l7$$\"#hF*$\"3%******H@(Qq6Fi\\l7$$\"#iF*$\"3W+++)f+5/)!#B7$$\"# jF*$\"3++++%*R&3\\&F]_l7$$\"#kF*$\"3@+++sJlEPF]_l7$$\"#lF*$\"3')*****H 9'*Q^#F]_l7$$\"#mF*$\"37+++*G&[&o\"F]_l7$$\"#nF*$\"3'******H]'=B6F]_l7 $$\"#oF*$\"3++++b8BRu!#C7$$\"#pF*$\"35+++%4ks*[F\\al7$$\"#qF*$\"32+++M QE/KF\\al7$$\"#rF*$\"39+++>?y$3#F\\al7$$\"#sF*$\"3#*******)opoM\"F\\al 7$$\"#tF*$\"3c+++s.j_')!#D7$$\"#uF*$\"3t*****ftV[_&Ffbl7$$\"#vF*$\"3y* ****H\"eB1NFfbl7$$\"#wF*$\"3!******p=D;@#Ffbl7$$\"#xF*$\"3)******4nf)[WFjel7$$\"#& )F*$\"3?+++c6@cEFjel7$$\"#')F*$\"3-+++ICDw:Fjel7$$\"#()F*$\"3Q*****RA, pH*!#G7$$\"#))F*$\"3%)*****H8V+X&F_gl7$$\"#*)F*$\"3!******HS\"\\vJF_gl 7$$\"#!*F*$\"3;+++#\\b*Q=F_gl7$$\"#\"*F*$\"3%******>Sv%e5F_gl7$$\"##*F *$\"39+++[\\Nbg!#H7$$\"#$*F*$\"3<+++RZ3VMFihl7$$\"#%*F*$\"3++++/4$e%>F ihl7$$\"#&*F*$\"35+++Z)yH4\"Fihl7$$\"#'*F*$\"3v*****znO>5'!#I7$$\"#(*F *$\"3!)*****f^!*eQ$F^jl7$$\"#)*F*$\"3-+++=sNn=F^jl7$$\"#**F*$\"30+++7@ gB5F^jl7$$\"$+\"F*$\"37+++2\"*ywb!#J7$$\"$,\"F*$\"3:+++D\"e)>IFc[m7$$ \"$-\"F*$\"3')*****4C<`i\"Fc[m7$$\"$.\"F*$\"3%)*****>/)Q%p)!#K7$$\"$/ \"F*$\"3()*****\\SIEi%Fc\\m7$$\"$0\"F*$\"3()*******)Q!GW#Fc\\m7$$\"$1 \"F*$\"3#******4ZJIG\"Fc\\m7$$\"$2\"F*$\"3G+++[![yp'!#L7$$\"$3\"F*$\"3 9+++@?AvMFh]m7$$\"$4\"F*$\"37+++P&p@z\"Fh]m7$$\"$5\"F*$\"3G+++Gv'f=*!# M7$$\"$6\"F*$\"3%******fO@(zYFh^m7$$\"$7\"F*$\"3)******puT&pBFh^m7$$\" $8\"F*$\"3'*******e*)\\#>\"Fh^m7$$\"$9\"F*$\"3G+++)Hp['f!#N7$$\"$:\"F* $\"3%******fBna'HF]`m7$$\"$;\"F*$\"3/+++)=F`Y\"F]`m7$$\"$<\"F*$\"3#*** ***Hrml>(!#O7$$\"$=\"F*$\"3.+++nn*G^$F]am7$$\"$>\"F*$\"3%******f%RL/F]cm7$$\"$E\"F*$\"3#4++!z+\"**3 *!#R7$$\"$F\"F*$\"3++++&>S**>%F]dm7$$\"$G\"F*$\"35+++[)\\(G>F]dm7$$\"$ H\"F*$\"3b+++-Hb.))!#S7$$\"$I\"F*$\"3%******zvFQ*RF]em7$$\"$J\"F*$\"3* )*****Hc=3!=F]em7$$\"$K\"F*$\"3Y+++'H*[q!)!#T7$$\"$L\"F*$\"37+++zc$[f$ F]fm7$$\"$M\"F*$\"3/+++eJ]\"f\"F]fm7$$\"$N\"F*$\"3Q+++rz,.q!#U7$$\"$O \"F*$\"3'******4'\\viIF]gm7$$\"$P\"F*$\"3++++d'Q8L\"F]gm7$$\"$Q\"F*$\" 3]******Go$>v&!#V7$$\"$R\"F*$\"3/+++rW&*pCF]hm7$$\"$S\"F*$\"3'******>( e+BO\"Fhim7$$\"$Y\"F*$\"3/+++=#>_g&!#Y7$$\"$Z\"F*$\"35+++, $[AH#Fhjm7$$\"$[\"F*$\"36+++!o$3<$*!#Z7$$\"$\\\"F*$\"3w*****fc#)Rw$Fc[ n7$$\"$]\"F*$\"3/+++j![8^\"Fc[n7$$\"$^\"F*$\"3/+++))RdJg!#[7$$\"$_\"F* $\"3%)*****RznCR#Fc\\n7$$\"$`\"F*$\"3^*****\\j_@V*!#\\7$$\"$a\"F*$\"3+ +++s\"Rfp$F^]n7$$\"$b\"F*$\"39+++I=UR9F^]n7$$\"$c\"F*$\"35+++xc'=d&!#] 7$$\"$d\"F*$\"3<+++qBpV@F^^n7$$\"$e\"F*$\"3A+++V;N(>)!#^7$$\"$f\"F*$\" 3/+++#RWb6$Fi^n7$$\"$g\"F*$\"37+++W4\"p<\"Fi^n7$$\"$h\"F*$\"3A+++o:y=W !#_7$$\"$i\"F*$\"39+++sB'*[;Fi_n7$$\"$j\"F*$\"3Y******R1,;h!#`7$$\"$k \"F*$\"3-+++I&GYD#Fd`n7$$\"$l\"F*$\"3s*****z!)p4E)!#a7$$\"$m\"F*$\"3&* ******o`S3IF_an7$$\"$n\"F*$\"33+++.u!*)3\"F_an7$$\"$o\"F*$\"3;+++^?Po,\"F[en7$$\"$z\"F*$\"3$)*****zk+0U$!#g7$$\"$!=F*$ \"3-+++W#GO9\"F[fn7$$\"$\"=F*$\"3x*****fD+/!Q!#h7$$\"$#=F*$\"3)******H LH_D\"Fffn7$$\"$$=F*$\"3x*****>d`17%!#i7$$\"$%=F*$\"30+++*e#\\W8Fagn7$ $\"$&=F*$\"3')*****poN,O%!#j7$$\"$'=F*$\"32+++70P09F\\hn7$$\"$(=F*$\"3 Y+++-WE-X!#k7$$\"$)=F*$\"35+++B\\dL9Fghn7$$\"$*=F*$\"3:+++e')*o`%!#l7$ $\"$!>F*$\"3\"******>\"e2F9Fbin7$$\"$\">F*$\"3#******>YM:Y%!#m7$$\"$#> F*$\"3%******RHVjQ\"F]jn7$$\"$$>F*$\"33+++;Yg\"G%!#n7$$\"$%>F*$\"3!*** ***\\Q\"H98Fhjn7$$\"$&>F*$\"3-+++'QI)4S!#o7$$\"$'>F*$\"3*******4&H$f@ \"Fc[o7$$\"$(>F*$\"3y*****\\mMZm$!#p7$$\"$)>F*$\"3/+++(o.y4\"F^\\o7$$ \"$*>F*$\"3-+++PxboK!#q7$$\"$+#F*$\"3s*****\\aeCn*!#r7$$\"$,#F*$\"3;++ +e\"**[%GF_]o7$$\"$-#F*$\"3r******Hmg;$)!#s7$$\"$.#F*$\"3*)*****z#GV;C Fj]o7$$\"$/#F*$\"3;+++osMyp!#t7$$\"$0#F*$\"3\"******H4%*H+#Fe^o7$$\"$1 #F*$\"3y*****pa3Ur&!#u7$$\"$2#F*$\"3\"******R$*[-i\"F`_o7$$\"$3#F*$\"3 A+++o%=ic%!#v7$$\"$4#F*$\"33+++J0.z7F[`o7$$\"$5#F*$\"3?+++wg&3c$!#w7$$ \"$6#F*$\"3a+++&3(>`)*!#x7$$\"$7#F*$\"3')*****>#\\()4FF\\ao7$$\"$8#F*$ \"3W+++v7[2u!#y7$$\"$9#F*$\"3()*****pVCD,#Fgao7$$\"$:#F*$\"3?+++#==XV& !#z7$$\"$;#F*$\"3'******H')z&e9Fbbo7$$\"$<#F*$\"3%******RT()3*Q!#!)7$$ \"$=#F*$\"32+++H>hJ5F]co7$$\"$>#F*$\"3'******fED&=F!#\")7$$\"$?#F*$\"3 I+++o>K?r!##)7$$\"$@#F*$\"37+++'Q'f`=F^do7$$\"$A#F*$\"3;+++:\"4gz%!#$) 7$$\"$B#F*$\"30+++X>PL7Fido7$$\"$C#F*$\"3I+++br^_J!#%)7$$\"$D#F*$\"3_* ****\\u[)3!)!#&)7$$\"$E#F*$\"30+++)*pBA?Fjeo7$$\"$F#F*$\"3Y+++.U3v]!#' )7$$\"$G#F*$\"3#*******RE\"fE\"Fefo7$$\"$H#F*$\"3\")*****4kP%QJ!#()7$$ \"$I#F*$\"3J*****\\GOMt(!#))7$$\"$J#F*$\"33+++.Q+%*=Ffgo7$$\"$K#F*$\"3 ++++Q!)R5Y!#*)7$$\"$L#F*$\"3(******4gPa6\"Faho7$$\"$M#F*$\"3!******\\R jAo#!#!*7$$\"$N#F*$\"3!******Hf?2T'!#\"*7$$\"$O#F*$\"3)******p`lG_\"Fb io7$$\"$P#F*$\"3++++c9b&f$!##*7$$\"$Q#F*$\"3j*****z7(fP%)!#$*7$$\"$R#F *$\"39+++Fcjo7$$\"$S#F*$\"3w*****H@(=iX!#%*7$$\"$T#F*$\"35+++wH< ^5F^[p7$$\"$U#F*$\"3)******RiosS#!#&*7$$\"$V#F*$\"3!)*****RW)Gza!#'*7$ $\"$W#F*$\"32+++GedR7F_\\p7$$\"$X#F*$\"3;+++d,A(y#!#(*7$$\"$Y#F*$\"3$* ******pd+Hi!#)*7$$\"$Z#F*$\"3-+++#o:OQ\"F`]p7$$\"$[#F*$\"3s*****HK]Y0$ !#**7$$\"$\\#F*$\"3w*****f]3Gq'!$+\"7$$\"$]#F*$\"33+++?^%=Y\"Fa^p7$$\" $^#F*$\"37+++#*H!)oJ!$,\"7$$\"$_#F*$\"3q*****f*G8Fo!$-\"7$$\"$`#F*$\"3 )*******pS%>Y\"Fb_p7$$\"$a#F*$\"3;+++&*)=:6$!$.\"7$$\"$b#F*$\"3))***** p>$3#e'!$/\"7$$\"$c#F*$\"3%******p_'*QQ\"Fc`p-%'COLOURG6&%$RGBG$\")#)e qk!\")$\"))eqk\"F_apF`ap-%+AXESLABELSG6$Q!6\"Feap-%%VIEWG6$%(DEFAULTGF jap" 1 2 0 1 10 0 2 6 1 4 2 1.000000 45.000000 45.000000 0 0 "Curve 1 " }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 178 "Th e convolution is performed by multiplying (pointwise) the Fourier tran sform of the data by the Fourier transform of the kernel, then taking \+ the inverse transform of the result." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 121 "smoothdata := ifft(zip((x ,y)->x*y,fft(data),fft(kern))):\nsmoothpts := [seq([i,smoothdata[i]],i =1..256)]:\nplot(smoothpts);" }}{PARA 13 "" 1 "" {GLPLOT2D 436 275 275 {PLOTDATA 2 "6%-%'CURVESG6$7\\[l7$$\"\"\"\"\"!$\"31+++Zl'=0\"!#=7$ $\"\"#F*$\"3%******RTV#4$*!#>7$$\"\"$F*$\"3k******fx9)3*F37$$\"\"%F*$ \"3w*****f=U#3!*F37$$\"\"&F*$\"3[******oFXB))F37$$\"\"'F*$\"3c*****\\# G54*)F37$$\"\"(F*$\"3j+++o\"\\ZV*F37$$\"\")F*$\"3++++CJ$>-\"F-7$$\"\"* F*$\"3-+++UyK(4\"F-7$$\"#5F*$\"3.+++xO@J6F-7$$\"#6F*$\"3-+++(>K4=\"F-7 $$\"#7F*$\"31+++,M#H?\"F-7$$\"#8F*$\"3/+++F#RzC\"F-7$$\"#9F*$\"39+++/: $QN\"F-7$$\"#:F*$\"3!*******[zf*R\"F-7$$\"#;F*$\"3)******H]]bb\"F-7$$ \"#b6x;F-7$$\"#=F*$\"38+++CuWUF*$\"3++++KXDP =F-7$$\"#?F*$\"32+++?Wby:$zG F-7$$\"#GF*$\"3u*****>S;h+$F-7$$\"#HF*$\"3$)*****Hxl&HJF-7$$\"#IF*$\"3 3+++0*ppF$F-7$$\"#JF*$\"3()******Huq-MF-7$$\"#KF*$\"3t*****Hfj=^$F-7$$ \"#LF*$\"3G+++__tgOF-7$$\"#MF*$\"3!******\\#*\\Tx$F-7$$\"#NF*$\"3D+++T XnPRF-7$$\"#OF*$\"3A+++pvu[SF-7$$\"#PF*$\"3++++'HL.9%F-7$$\"#QF*$\"3!) *****>D3\\F%F-7$$\"#RF*$\"3?+++P*\\1U%F-7$$\"#SF*$\"3w*****4BhEb%F-7$$ \"#TF*$\"34+++w>&fj%F-7$$\"#UF*$\"3/+++&F-7$$\"#[F*$\"3s*****HE\"4\\_ F-7$$\"#\\F*$\"3-+++hf8[_F-7$$\"#]F*$\"3K+++CyqK`F-7$$\"#^F*$\"3,+++Z? AD`F-7$$\"#_F*$\"3!******H[]([`F-7$$\"#`F*$\"3_+++#pS%o`F-7$$\"#aF*$\" 3'******zlaeQ&F-7$$\"#bF*$\"3_*****Hy@rN&F-7$$\"#cF*$\"3g*****H=YGO&F- 7$$\"#dF*$\"3y******QSg?`F-7$$\"#eF*$\"3?+++to'HP&F-7$$\"#fF*$\"3%**** **pB\"Go`F-7$$\"#gF*$\"3U+++YJ!zR&F-7$$\"#hF*$\"3i*****4\"f['R&F-7$$\" #iF*$\"3e*****z:yGQ&F-7$$\"#jF*$\"3s*****f'*R+J&F-7$$\"#kF*$\"3;+++O/d L_F-7$$\"#lF*$\"3o*******ouO;&F-7$$\"#mF*$\"3S+++De&f<&F-7$$\"#nF*$\"3 .+++AM<:^F-7$$\"#oF*$\"3')******p*o.2&F-7$$\"#pF*$\"3w*****f&3H!)\\F-7 $$\"#qF*$\"3x*****zz\"==\\F-7$$\"#rF*$\"3#******p3A+%[F-7$$\"#sF*$\"31 +++eF[AZF-7$$\"#tF*$\"3')*****>Sp#yYF-7$$\"#uF*$\"3#******Rxzt`%F-7$$ \"#vF*$\"3,+++!36eU%F-7$$\"#wF*$\"3w******GxV)G%F-7$$\"#xF*$\"3!)***** foGN9%F-7$$\"#yF*$\"3')*****H;pC4%F-7$$\"#zF*$\"3G+++3b5gRF-7$$\"#!)F* $\"3E+++m_*\\!QF-7$$\"#\")F*$\"3?+++#3)))4PF-7$$\"##)F*$\"3&)******)=# 4?OF-7$$\"#$)F*$\"38+++t>xUNF-7$$\"#%)F*$\"3*******Rp!*pS$F-7$$\"#&)F* $\"3!)******3`;\"G$F-7$$\"#')F*$\"3')*****p\"3ZPJF-7$$\"#()F*$\"3))*** **>KtM0$F-7$$\"#))F*$\"3=+++I31THF-7$$\"#*)F*$\"3')******>0^jFF-7$$\"# !*F*$\"39++++=OzDF-7$$\"#\"*F*$\"35+++DGp$\\#F-7$$\"##*F*$\"33+++'3<4R #F-7$$\"#$*F*$\"3))*****\\I!*yD#F-7$$\"#%*F*$\"3!*******\\[,s?F-7$$\"# &*F*$\"3/+++ycxj=F-7$$\"#'*F*$\"3\"******4Ew/u\"F-7$$\"#(*F*$\"3/+++n`)>F3 7$$\"$2\"F*$\"3)******z'H4VK!#?7$$\"$3\"F*$!3/+++k')oi6F37$$\"$4\"F*$! 3,+++'3K>7$F37$$\"$5\"F*$!3$)*****H%>4H^F37$$\"$6\"F*$!3')*****f1N.8'F 37$$\"$7\"F*$!3W******3z\"F*$!3!** ****pX_]d\"F-7$$\"$?\"F*$!3\"******RS^Ti\"F-7$$\"$@\"F*$!3)******44h!) y\"F-7$$\"$A\"F*$!34+++a.2>>F-7$$\"$B\"F*$!37+++\\6-9?F-7$$\"$C\"F*$!3 /+++vlc*4#F-7$$\"$D\"F*$!3'*******f0KJAF-7$$\"$E\"F*$!33+++iZ.!Q#F-7$$ \"$F\"F*$!3F+++=K+@DF-7$$\"$G\"F*$!3<+++Q#[Bj#F-7$$\"$H\"F*$!3C+++'*=' >p#F-7$$\"$I\"F*$!3F+++hSyLFF-7$$\"$J\"F*$!3:+++*fLK#GF-7$$\"$K\"F*$!3 /+++^UlfGF-7$$\"$L\"F*$!33+++rr9.HF-7$$\"$M\"F*$!3\"******41%*=!HF-7$$ \"$N\"F*$!3;+++wG#Q&HF-7$$\"$O\"F*$!3))*****HbRf&HF-7$$\"$P\"F*$!3@+++ ;&zk.$F-7$$\"$Q\"F*$!3%******>oJ:4$F-7$$\"$R\"F*$!39+++Q9r*3$F-7$$\"$S \"F*$!3E+++=uSqJF-7$$\"$T\"F*$!3)******HTL?=$F-7$$\"$U\"F*$!3?+++J_$*) =$F-7$$\"$V\"F*$!3#******f-Y`;$F-7$$\"$W\"F*$!3E+++3W&Q8$F-7$$\"$X\"F* $!3?+++8_m*3$F-7$$\"$Y\"F*$!3))*****\\gIM4$F-7$$\"$Z\"F*$!3z*****\\%[; 9JF-7$$\"$[\"F*$!3()*******HV)=JF-7$$\"$\\\"F*$!34+++v5,GJF-7$$\"$]\"F *$!3&******fFF_8$F-7$$\"$^\"F*$!3#******>fsh2$F-7$$\"$_\"F*$!3\")***** *f$))[+$F-7$$\"$`\"F*$!3\")*****\\9'HSHF-7$$\"$a\"F*$!3C+++s`?^GF-7$$ \"$b\"F*$!3&)*****4-3P$GF-7$$\"$c\"F*$!31+++NGaRFF-7$$\"$d\"F*$!3!)*** ***oC$)eEF-7$$\"$e\"F*$!3:+++#z(>TEF-7$$\"$f\"F*$!3*)*****pdQ?k#F-7$$ \"$g\"F*$!3y*****RyC-f#F-7$$\"$h\"F*$!3#******p>lna#F-7$$\"$i\"F*$!3)) *****zaV>Z#F-7$$\"$j\"F*$!3)*******)R[yY#F-7$$\"$k\"F*$!3'******zbPIY# F-7$$\"$l\"F*$!3#*******G'>EX#F-7$$\"$m\"F*$!37+++^X&*eBF-7$$\"$n\"F*$ !37+++%>eVA#F-7$$\"$o\"F*$!3%*******)G)\\U@F-7$$\"$p\"F*$!3*)*****47*R >@F-7$$\"$q\"F*$!3'*******))\\-S?F-7$$\"$r\"F*$!3#*******4TX\")>F-7$$ \"$s\"F*$!3)*******>7lX=F-7$$\"$t\"F*$!3/+++=tG]\"o)pC\"F-7$$\"$z \"F*$!3-+++Dq.&=\"F-7$$\"$!=F*$!3/+++Suv56F-7$$\"$\"=F*$!3%******pvx,- \"F-7$$\"$#=F*$!3r*****Hxg!3*)F37$$\"$$=F*$!3g+++kDLVuF37$$\"$%=F*$!3^ +++(*[[ClF37$$\"$&=F*$!3?+++b(=R2&F37$$\"$'=F*$!3*******\\gy^6%F37$$\" $(=F*$!3;+++b&R'*e$F37$$\"$)=F*$!39+++>R(\\w#F37$$\"$*=F*$!3!******p-L Xq\"F37$$\"$!>F*$!3%******pM=)\\6F37$$\"$\">F*$!3q*****\\PmVN%!#A7$$\" $#>F*$\"3*******R6pgJ\"F37$$\"$$>F*$\"39+++QzF*$\"3r***** >^[HT$F37$$\"$&>F*$\"3()*****>e))Gj%F37$$\"$'>F*$\"35+++#fb_w&F37$$\"$ (>F*$\"3Y*****fL.+V'F37$$\"$)>F*$\"3W*****>`()z5)F37$$\"$*>F*$\"3M**** **fqd.))F37$$\"$+#F*$\"3Q+++&Qfr'**F37$$\"$,#F*$\"3)******\\'))*R1\"F- 7$$\"$-#F*$\"32+++f))>S6F-7$$\"$.#F*$\"3&******p!4\"zB\"F-7$$\"$/#F*$ \"33+++0#fvH\"F-7$$\"$0#F*$\"3/+++dT@e8F-7$$\"$1#F*$\"31+++w0D.:F-7$$ \"$2#F*$\"3))*****4@rtc\"F-7$$\"$3#F*$\"3(******>lOuh\"F-7$$\"$4#F*$\" 33+++3#3bv\"F-7$$\"$5#F*$\"3))*****>ce1%=F-7$$\"$6#F*$\"3&******R'H_K> F-7$$\"$7#F*$\"3++++=Fl`?F-7$$\"$8#F*$\"3%******f\"egS@F-7$$\"$9#F*$\" 3)******R_&)3?#F-7$$\"$:#F*$\"31+++SyofAF-7$$\"$;#F*$\"3!******R&fjiAF -7$$\"$<#F*$\"3*******p#\\,.BF-7$$\"$=#F*$\"3)******pJ&)[G#F-7$$\"$>#F *$\"3))*****\\DzbN#F-7$$\"$?#F*$\"3-+++p_sdBF-7$$\"$@#F*$\"35+++)oc*\\ CF-7$$\"$A#F*$\"3\"******4D'oICF-7$$\"$B#F*$\"3=+++#H#**3DF-7$$\"$C#F* $\"3))******=ZDLDF-7$$\"$D#F*$\"3%******f1,%\\DF-7$$\"$E#F*$\"3++++dgE (f#F-7$$\"$F#F*$\"3!******4$y!3g#F-7$$\"$G#F*$\"3G+++Y4N/EF-7$$\"$H#F* $\"3!)*****pZ&ohEF-7$$\"$I#F*$\"3$)*****>xVHh#F-7$$\"$J#F*$\"3\"****** *>))yAEF-7$$\"$K#F*$\"3(******RvVti#F-7$$\"$L#F*$\"3#)*****>=Rea#F-7$$ \"$M#F*$\"39+++B]6YDF-7$$\"$N#F*$\"33+++N#*yMDF-7$$\"$O#F*$\"3#******f ^#o2DF-7$$\"$P#F*$\"3%******49F.Y#F-7$$\"$Q#F*$\"3)******R,)y9CF-7$$\" $R#F*$\"31+++e$>`K#F-7$$\"$S#F*$\"3)******4M3\"yAF-7$$\"$T#F*$\"3!**** ***oy^oAF-7$$\"$U#F*$\"3')*****>*zzbAF-7$$\"$V#F*$\"3.+++lwTV@F-7$$\"$ W#F*$\"3%******\\=sa5#F-7$$\"$X#F*$\"38+++6*=r,#F-7$$\"$Y#F*$\"3++++xP X:?F-7$$\"$Z#F*$\"35+++#eY`*=F-7$$\"$[#F*$\"3/+++]I=\\=F-7$$\"$\\#F*$ \"35+++**)[;v\"F-7$$\"$]#F*$\"32+++)z#*)Ra\"F-7$$\"$`#F*$\"3&******\\kyAU\"F-7$$\" $a#F*$\"3()*****4Xf_K\"F-7$$\"$b#F*$\"3$******p_h6@\"F-7$$\"$c#F*$\"3% ******pQmd6\"F--%'COLOURG6&%$RGBG$FY!\"\"$F*F*F\\\\p-%+AXESLABELSG6$Q! 6\"F`\\p-%%VIEWG6$%(DEFAULTGFe\\p" 1 2 0 1 10 0 2 9 1 4 2 1.000000 45.000000 44.000000 0 0 "Curve 1" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{MARK "4 0 \+ 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }