Fast Fourier Transformation
>reset; xi=exp(I*2*Pi/8); z=xi^(0:7); ...
plot2d(re(z),im(z),points=1):


>p=random(1,8)+1i*random(1,8);
>longestformat; evalpoly(z,p)
Column 1:
3.61513775646999+4.027250420449434i
Column 2:
-0.06067706070439005+0.8797662696327804i
Column 3:
0.1325483481709888-0.1451728061492038i
Column 4:
-0.0005680160112071508-0.9346386176109833i
Column 5:
1.422171838062166-1.867849911920374i
Column 6:
0.3965191106395581+0.1482400937388588i
Column 7:
-0.4481910174229353-0.0126947295288784i
Column 8:
0.1863898275842544+0.1666181435935085i
>fft(p)
Column 1:
3.61513775646999+4.027250420449434i
Column 2:
-0.06067706070438983+0.8797662696327807i
Column 3:
0.1325483481709888-0.1451728061492037i
Column 4:
-0.0005680160112072064-0.9346386176109834i
Column 5:
1.422171838062166-1.867849911920373i
Column 6:
0.3965191106395586+0.1482400937388583i
Column 7:
-0.4481910174229351-0.01269472952887946i
Column 8:
0.1863898275842536+0.1666181435935069i
>fft(ifft(fft(p)))
Column 1:
3.61513775646999+4.027250420449434i
Column 2:
-0.06067706070438991+0.8797662696327807i
Column 3:
0.1325483481709884-0.1451728061492038i
Column 4:
-0.0005680160112070398-0.9346386176109837i
Column 5:
1.422171838062166-1.867849911920373i
Column 6:
0.3965191106395585+0.1482400937388582i
Column 7:
-0.4481910174229351-0.01269472952887912i
Column 8:
0.1863898275842537+0.1666181435935071i
>8*conj(ifft(conj(p)))
Column 1:
3.61513775646999+4.027250420449434i
Column 2:
-0.06067706070438983+0.8797662696327807i
Column 3:
0.1325483481709888-0.1451728061492037i
Column 4:
-0.0005680160112072064-0.9346386176109834i
Column 5:
1.422171838062166-1.867849911920373i
Column 6:
0.3965191106395586+0.1482400937388583i
Column 7:
-0.4481910174229351-0.01269472952887946i
Column 8:
0.1863898275842536+0.1666181435935069i
>t=0:Pi/128:2*Pi-Pi/128; s=1+2*cos(t)+cos(2*t); plot2d(t,s):

>a=[1,2,1]|zeros(1,253); totalmax(abs(re(fft(a))-s))
4.973799150320701e-014
>t=0:Pi/128:2*Pi-Pi/128; s=2*cos(20*t)+cos(55*t);
>f=abs(ifft(s)); plot2d(0:127,f[1:128]):

>s=s+normal(size(s)); f=abs(ifft(s)); plot2d(0:127,f[1:128]):

>t=soundsec(2);
>s=sin(440*t)+sin(220*t)/2+sin(880*t)/2;
>analyzesound(s):

>playwave(s);
>sa=s+normal(size(s)); playwave(sa);
>mapsound(sa):

>t=linspace(0,pi,500)';
>s=sum(sin(t*(1:100))/(1:100))*2;
>plot2d(t',s'); plot2d("pi-x",color=3,add=1):

>t=linspace(0,pi,5000)'; max(sum(sin(t*(1:1000))/(1:1000))'*2-(pi-t'))
0.5622809267763276
>integrate("sinc(x)",0,pi)*2-pi
0.5622814503751399
>n=1:2:61;
>t=linspace(0,pi,500)';
>S=cumsum(sin(t*n)/n);
>plot3d(n/10,t,S,hue=1,zoom=6):

Euler Home