Laboration 3 - KTHfabo02/tilnum/labb3.pdf · 2005-04-15 · som ˜ar viktigt att notera ˜ar att...

16
Laboration 3 Till¨ ampade Numeriska Metoder Symmetriska egenv¨ arden och FFT Farid Bonawiede [email protected] Michael Litton [email protected] Grupp 17 15 april 2005 Inneh˚ all 1 Lanczos metod f¨ or symmetriska egenv¨ arden 2 1.1 Diagonalmatriser .................................... 2 1.2 Symmetriska slumpmatriser .............................. 4 1.2.1 Normalf¨ ordelade slumpmatriser ........................ 4 1.2.2 Rektangelf¨ ordelade slumpmatriser ...................... 7 1.3 Slutsats ......................................... 9 2 Snabb Fouriertransform - FFT 10 2.1 En naiv implementation ................................ 10 2.2 En h¨ arledning av periodicitetsegenskaper ...................... 12 2.3 Unders¨ okning av komplexitetsegenskaper ....................... 12 2.4 En rekursiv implementation .............................. 13 2.5 En j¨ amf¨ orelse av ber¨ akningseffektivitet ........................ 15 2.6 Ytterligare funderingar ................................. 16 1

Transcript of Laboration 3 - KTHfabo02/tilnum/labb3.pdf · 2005-04-15 · som ˜ar viktigt att notera ˜ar att...

Laboration 3

Tillampade Numeriska Metoder

Symmetriska egenvarden och FFT

Farid Bonawiede [email protected] Litton [email protected]

Grupp 17

15 april 2005

Innehall

1 Lanczos metod for symmetriska egenvarden 21.1 Diagonalmatriser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Symmetriska slumpmatriser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.2.1 Normalfordelade slumpmatriser . . . . . . . . . . . . . . . . . . . . . . . . 41.2.2 Rektangelfordelade slumpmatriser . . . . . . . . . . . . . . . . . . . . . . 7

1.3 Slutsats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2 Snabb Fouriertransform - FFT 102.1 En naiv implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2 En harledning av periodicitetsegenskaper . . . . . . . . . . . . . . . . . . . . . . 122.3 Undersokning av komplexitetsegenskaper . . . . . . . . . . . . . . . . . . . . . . . 122.4 En rekursiv implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.5 En jamforelse av berakningseffektivitet . . . . . . . . . . . . . . . . . . . . . . . . 152.6 Ytterligare funderingar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1

1 Lanczos metod for symmetriska egenvarden

Denna del av laborationen gick ut pa att vi skulle hitta egenvarderna till symmetriska matriser.Vi anvande oss av Lanczos algoritm som ar en iterativ metod for att transformera en matris Atill en tridiagonalmatris T . Saledes soker man efter en ortogonalmatris Q sadan att QT AQ = T .Egenvardena till T blir da en approximation av egenvardena till A och brukar kallas Ritzvarden(Sats 7.1 i Demmels bok berattigar oss till just detta). Paige avhandling 1972 forklarar attda ortogonalitet tappas i basmatrisen Q kommer ett Ritzvarde konvergera mot ett egenvardetill A. Detta innebar att vi var tvunga att rakna ut ortogonaliteten i varje steg i algoritmen,genom ‖QT

k qk+1‖2. Pa grund av att vi raknar med flyttalsaritmetik kommer ortogonalitetentappas tidigare an i exakt aritmetrik. Detta kan motverkas genom att omortogonalisera dennya basvektorn i varje steg. Tyvarr ar detta ratt dyrt berakningsmassigt och darmed inte alltidvart besvaret. Vi kommer emellertid inte ga in pa det utan har istallet valt att implementeraalgoritmen utan omortogonalisering.

Vi ar aven intresserade av residualen for berakningarna: ‖A(Qkvi)− (Qkvi)θi‖2 = βk|vi(k)|.Med andra ord om vi ar egenvektor till A, kommer den storsta skillnaden mellan vart ritzvardeθi och λi vara βk|vi(k)|. Dar βk = ‖zk‖ (zk ar den nya framraknade basvektorn innan dennormerats). Ty detta galler i det fallet da vi anvander oss av Lanczos algoritm for att beraknaQk.

Da vi i algoritmen skulle rakna fram den tridiagonala matrisen T anvande vi oss forst avberakningen T = QT AQ. Som alltid nar vi gor numeriska berakningar uppkommer ofta problemmed maskinnoggrannheten. Detta intraffade aven har och var T -matris blev inte helt tridiago-nal utan det uppkom ett flertal andra nollskilda element. Istallet andrade vi varat satt att tafram matrisen. Vi vet namligen att super- och subdiagonalen bestar av βi ifran 1 till k-1. Ochhuvuddiagonalen av projektionen av den nya basvektorn qk pa qk−1.

Tk =

α1 β1

β1 α2. . .

. . . . . . βk−1

βk−1 αk

Till att borja med undersokte vi detta samband for diagonal matriser. Det ar sjalvklart for enmanniska att diagonalen representerar matrisens egenvarden, darfor tankte vi lata var algoritmberakna dessa. Vi kommer sedan att slumpa fram lite olika fordelade symmetriska matriser foratt undersoka hur det hela forhaller sig.

1.1 Diagonalmatriser

Vi borjade med att tillampa algoritmen pa en diagonalmatris med vardena 1, 2 . . . 30 i diagonalen.I detta fall ska egenvektorerna vara det samma som basvektorerna. Vi undersoker darfor dettaoch noterar att ‖V − Qk‖ ≈ 3.6 · 108, vilket far anses som en rimlig skillnad. Figur 1 visar degenererade Ritzvardena.

Som man ser i figuren hittar man alltsa inte alla egenvarden innan man har natt sista steget.Darfor betraktar man en plot av ortogonaliteten for att se om detta kan ha nagot med sakenoch gora. Se vanstra plotten i figur 2. Precis som vantat ser vi hur vi tappar ortogonalitetenhelt vid k = 30 och saledes har alla egenvarden konvergerat. For att fa en uppfattning om

2

0 5 10 15 20 25 300

5

10

15

20

25

30

Lanczos steg

Ege

nvär

dena

n steg av Lanczos applicerat på A

Figur 1: Plot av Ritzvardena

hur bra approximationen av egenvardena ar, vid inte fullt sa manga k, foljer har en plot overresidualuppskattning (hogra plotten i figur 2). Med andra ord, om vi inte kraver mer an enviss noggrannhet, finns det ingen anledning att fortsatta iterera. Som man ser i figuren garresidualuppskattningen emot maskinepsilon ε da k = 30 vilket innebar att vi har natt bastatankbara egenvarde som kan beraknas med hjalp av en dator.

5 10 15 20 25 30

10−14

10−12

10−10

10−8

10−6

10−4

10−2

100

Plot av ortogonaliteten för den nya basen

Lanczos steg0 5 10 15 20 25 30

10−16

10−14

10−12

10−10

10−8

10−6

10−4

10−2

100

102

Residualuppskattningen av Ritz−värdena

β ik

Lanczos steg − k

Figur 2: Semilogy plottar over ortogonaliteten samt residualuppskattningen

Vad vi hittills har sett ar alltsa att algoritmen verkar stamma overens med vad Paiges slut-satser. Nu later vi istallet A ha diagonalen 1, 2 . . . 100. Plotten for ritzvardena foljer alltsa i figur3.

Det denna bild kan saga oss ar endast att den huvudsakligen verkar ha konvergerat ratt.For att fa battre forstaelse av hur bra de har konvergerat mot de korrekta egenvardena tar vioch jamfor plotten av ortogonaliteten (vanstra plotten i figur 4) med plotten av residualskat-tningen (hogra plotten i figur 4). Har ser vi nagot som skiljer sig fran tidigare undersokning.Ortogonaliteten tappas redan vid k = 80 samtidigt som residualskattningen ar dar ar nere pa

3

0 10 20 30 40 50 60 70 80 90 1000

10

20

30

40

50

60

70

80

90

100

Lanczos steg

Ege

nvär

dena

n steg av Lanczos applicerat på A

Figur 3: Plot av Ritzvardena

maskinepsilon for att sedan stiga en aning. Genom att studera ritzvardena noggrannare inses attvi borjar fa dubletter av de hogre egenvardena vilket forklarar den okande residualskattningen.Hur dessa dubletter uppkommer diskuteras senare.

10 20 30 40 50 60 70 80 90 100

10−14

10−12

10−10

10−8

10−6

10−4

10−2

100

Plot av ortogonaliteten för den nya basen

Lanczos steg0 10 20 30 40 50 60 70 80 90 100

10−16

10−14

10−12

10−10

10−8

10−6

10−4

10−2

100

102

Residualuppskattningen av Ritz−värdena

β ik

Lanczos steg − k

Figur 4: Semilogy plottar over ortogonaliteten samt residualuppskattningen

1.2 Symmetriska slumpmatriser

1.2.1 Normalfordelade slumpmatriser

I denna del av laborationen anvande vi oss av normalfordelade slumpmatriser som genereradesmed hjalp av A = randn(n) och A = A + A. Saledes fick vi en matris som ar symmetrisk meddimensionen n× n. Vi anvande aven har de tva storlekarna n = 30 och n = 100. Vi borjar medfallet n = 30. Aterigen inleder vi med att betrakta Ritzvardesplotten, se figur 5.

I plotten av egenvardena kan man ser att det verkar existera en viss konvergens redan innan

4

0 5 10 15 20 25 300

10

20

30

40

50

60

70

80

90

100

Lanczos steg

Ege

nvär

dena

n steg av Lanczos applicerat på A

Figur 5: Plot av Ritzvardena

det sista steget. Vi tittar darfor narmare pa ortogonaliteten samt residualskattningen for attavgora hur bra skattning ritzvardena ar till matrisen A:s egenvarden, se figur 6.

5 10 15 20 25 3010

−16

10−14

10−12

10−10

10−8

10−6

10−4

10−2

100

Plot av ortogonaliteten för den nya basen

Lanczos steg0 5 10 15 20 25 30

10−2

10−1

100

101

102

Residualuppskattningen av Ritz−värdena

β ik

Lanczos steg − k

Figur 6: Semilogy plottar over ortogonaliteten samt residualuppskattningen

Ur ortogonalitetsplotten ser vi att man tappar ortogonaliteten vid k = 26. Om man daremotundersoker residualuppskattningen ser vi att efter k = 15 fas vi ingen namvard forbattring avresidualen. Vart att observera ar att dessa plottar ar genererade med en normalfordelad x-vektoroch kan da och da leda till valdigt annorlunda matriser. Vi lagger darfor in tva andra grafer (figur7) av residualuppskattningen for att illustrera olika mojligheter. Aven dessa tva har n = 30. Detsom ar viktigt att notera ar att ar att aven har ser man att efter k ≈ 15− 16 sker ingen kraftfullforbattring vilket innebar att vi anser att detta val av k ar godkant.

Nu anvander vi istallet den storre matrisen med n = 100 och later algoritmen iterera 100steg. De framraknade Ritzvardena presenteras i vanstra plotten i figur 8. Beteendet kanns igenoch kan jamforas med bild 7.2 i Demmels bok.

For att forsta beteendet tar vi aven har en titt pa ortogonaliteten och residualskattningen, se

5

0 5 10 15 20 25 3010

−2

10−1

100

101

102

Residualuppskattningen av Ritz−värdena

β ik

Lanczos steg − k0 5 10 15 20 25 30

10−2

10−1

100

101

102

Residualuppskattningen av Ritz−värdena

β ik

Lanczos steg − k

Figur 7: Semilogy plottar over residualuppskattningen for ytterligare tva matriser

0 10 20 30 40 50 60 70 80 90 1000

50

100

150

200

250

300

350

400

Lanczos steg

Ege

nvär

dena

n steg av Lanczos applicerat på A

0 10 20 30 40 50 60 70 80 90 10010

−18

10−16

10−14

10−12

10−10

10−8

10−6

10−4

10−2

100

Plot av minsta singulärvärdet till basmatrisen Qk

Lanczos steg

Figur 8: Plot av Ritzvardena samt en semilogy plot over minsta singularvardet till basmatrisen

figur 9.Liksom tidigare ser vi att det efter halften av iterationerna inte erhalls mycket battre nog-

grannhet. Vi ser aven att det ar vid ungefar samma iteration som vi tappar ortogonaliteten.Vart att observera ar att ortogonaliteten aven har borjar oscillera for att sedan konvergera emotett. Vi anar att denna oscillation kan vara anledningen till att vi aterigen erhaller degenererandeegenvarden. Det ar emellertid svart att avgora och vi kommer att ta upp detta lite senare foren annan typ av matriser. Genom att berakna det minsta singularvardet hos basmatrisen Q kanman forsoka hitta ytterligare samband (hogra plotten i figur 8). Detta eftersom vi vet att detborde lamna ett nar ortogonalitet borjar tappas. Precis som vantat sa sker detta. Beteendet kanjamforas med exemplet i Demmels bok (se Fig 7.6 i Demmel).

6

10 20 30 40 50 60 70 80 90 100

10−14

10−12

10−10

10−8

10−6

10−4

10−2

100

Plot av ortogonaliteten för den nya basen

Lanczos steg0 10 20 30 40 50 60 70 80 90 100

10−2

10−1

100

101

102

103

Residualuppskattningen av Ritz−värdena

β ik

Lanczos steg − k

Figur 9: Semilogy plottar over ortogonaliteten samt residualuppskattningen

1.2.2 Rektangelfordelade slumpmatriser

Nu tankte vi avsluta vara tester av algoritmen med rektangelfordelade slumpmatriser genom attanvanda matlabfunktionen rand. Da fas en matris med ett ordentligt dominerande egenvardeλ1. Detta egenvarde brukar kallas for Perronroten. Aven har later vi n = 30 och som tidigareborjar vi med att presentera en plot over de beraknade Ritzvardena (se vanstra plotten i figur10). I plotten syns bland annat storleksskillnaden och man kan ana vissa egenvardesdubblettervid k = 11, 19, 26.

0 5 10 15 20 25 300

50

100

150

200

250

Lanczos steg

Ege

nvär

dena

n steg av Lanczos applicerat på A

0 5 10 15 20 25 3010

−18

10−16

10−14

10−12

10−10

10−8

10−6

10−4

10−2

100

Plot av minsta singulärvärdet till basmatrisen Qk

Lanczos steg

Figur 10: Plot av Ritzvardena och en semilogy plot over minsta singularvardet till basmatrisen

Nu ar vi intresserade av att forklara dessa dubletter med hjalp av ortogonaliteten eller resid-ualskattningen. Vi tar darfor och ritar ut dessa i figur 11.

Ortogonaliteten forloras forsta gangen vid n = 10 vilket innebar att Perronroten har konverg-erat for detta n. Sedan verkar det som om att det dyker upp tva stycken kopior av Perronrotenvid n = 18, 25. Den sista toppen i ortogonalitetsplotten befinner sig vid n = 29 och nar inte rik-

7

5 10 15 20 25 3010

−16

10−14

10−12

10−10

10−8

10−6

10−4

10−2

100

Plot av ortogonaliteten för den nya basen

Lanczos steg0 5 10 15 20 25 30

10−3

10−2

10−1

100

101

102

Residualuppskattningen av Ritz−värdena

β ik

Lanczos steg − k

Figur 11: Semilogy plottar over ortogonaliteten samt residualuppskattningen

tigt ett, men genom att studera de numeriska vardena ser vi att det ar i den 14:e decimalen somskillnaden dyker upp. Detta innebar att vi far anse situationen som konvergent. Denna typ avortogonalitetsoscillation och dubblering av ritzvarden sag vi tidigare for de normalfordelade ma-triserna. Emellertid var det inte lika utmarkande dar. Nu nar vi kan anvanda oss av Perronrotenblir det lattare att folja forloppet. Da kan man kontrollera att forsta forlusten av ortogonalitethanger ihop med hur minsta singularvardet i basmatrisen gar borjar vika av fran ett. Se hograplotten i figur 10.

Avslutningsvis undersoker vi en rektangelfordelad slumpmatris med n = 100. Aven har harvi en Perronrot och forvantar oss darfor en snabb forlust av ortogonalitet samt degenerationav ritzvarden som har konvergerat till Perronroten. Ur singularvardesplotten i figur 12 inses attortogonaliteten tappas for forsta gangen vid k = 8, vilket bekraftas av ortogonalitetsplotten i figur13. Antalet toppar, i figuren, svarar mot antalet Ritzvarden som har kovergerat mot Perronroten.Vi far det till att vid 15 tillfallen tappas ortogonalitet, och genom att studera ritzvardena insesatt det finns 15 stycken kopior av Perronroten, detta bekraftar hypotesen.

0 10 20 30 40 50 60 70 80 90 1000

500

1000

1500

2000

2500

3000

Lanczos steg

Ege

nvär

dena

n steg av Lanczos applicerat på A

0 10 20 30 40 50 60 70 80 90 10010

−18

10−16

10−14

10−12

10−10

10−8

10−6

10−4

10−2

100

Plot av minsta singulärvärdet till basmatrisen Qk

Lanczos steg

Figur 12: Plot av Ritzvardena samt en semilogy plot over det minsta singularvardet i basmatrisen

8

10 20 30 40 50 60 70 80 90 100

10−14

10−12

10−10

10−8

10−6

10−4

10−2

100

Plot av ortogonaliteten för den nya basen

Lanczos steg0 10 20 30 40 50 60 70 80 90 100

10−3

10−2

10−1

100

101

102

103

Residualuppskattningen av Ritz−värdena

β ik

Lanczos steg − k

Figur 13: Semilogy plottar over ortogonaliteten samt residualuppskattningen

1.3 Slutsats

Vi har i denna del visat hur Paiges avhandling om hur ortogonaliteten tappas da ett ritzvardekonvergerat emot ett egenvarde till ursprungliga matrisen verkar stamma. Det visade sig att daegenvardena lag tatt konvergerade fler ritzvarden mot sina respektive korrekta egenvarden. Omegenvardena var av spridd storleksordning fick vi istallet degeneration av ritzvarden som da kon-vergerat emot samma egenvarde. Detta visade sig valdigt tydligt da vi hade en rektangelfordeladslumpmatris. Google anvander sig av ett liknande satt da de vill ranka internetsidor. Da ar ma-trisen A uppbyggd av ettor och nollor. En etta betyder att nod i lankar till nod j. Da kommer Aatt ha ett dominerande egenvarde som ar perronroten och dess egenvektor ar positiv. Da kan manalltsa se egenvektorn som stationara lagets slumpvandring. Denna mtris tappar ortogonalitet iett tidigt skede.

Da vi anvande oss av Lanczosalgoritmen har vi utnyttjat det billiga sattet att rakna framresidualuppskattningen och slipper pa sa satt gora nagra matrismultiplikationer. Detta far ansessom vettigt da det stundtals ror sig om relativt stora korningar.

9

2 Snabb Fouriertransform - FFT

Utvecklingsavdelningen pa Mathworks vet uppenbarligen precis var dom haller pa med, och domar riktigt bra pa det ocksa, men det ar inte det intressanta. Det intressanta ar hur mycket battreen algoritm kan goras genom nagra fa skarpsinniga observationer.

Uttrycket nedan beskriver den Diskreta FourierTransformen och kallas sa da det harleds urden kontinuerliga motsvarigheten.

Fn ≡N−1∑

k=0

fke−2πink/N

DFT, forkortat, har manga trevliga egenskaper. Exempelvis kan namnas att transformenavslojar dold periodicitet i matdata och ger ett matt pa, i datamangder, periodiska komponentersrelativa styrka.

2.1 En naiv implementation

I den har delen av laborationen skulle vi forst implementera den naiva diskreta fouriertransfor-men, given enligt nedan.

f = Fnf , dar Fn ar fouriermatrisen

Detta gjordes pa tva satt, forst genom att generera F med hjalp av dubbla for-sligor och sedangenom att anvanda oss av matlabs inbyggda matrisaritmetik. Det sistnamnda implementeradessom foljer.

function result = dft(f)n = length(f);result = ((exp(-2*pi*i/n)*ones(n)).^((0:1:n-1)’*(0:1:n-1)))*f;

Darefter jamfordes de tva for att avgora vilken som var lampligast att anvanda. Se figur 14.

0 50 100 150 200 250 300 350 400 450 5000

1

2

3

4

5

6

7

Fouriermatrisens sida

Tid

en (

sek)

DFT en rad kodDFT for slingor

Figur 14: Algoritmjamforelse tva naiva implementationer emellan

10

Som forvantat, i samklang med forelasare i numerisk analys negativa installning till for-slingor,ar det lampligare att anvanda matrisaritmetiken. Emellertid bor det noteras att det spelar ingenroll for matriser med mindre an 19 600 element, dvs. 140 × 140.

Sedan undersokte vi ett par olika slumpvektorer vars langd var nagon liten multipel av tusen.Detta innebar att var funktion genererade 1000 × 1000 matriser och multiplicerade dessa denslumpade kolonnvektorn. Vi har valt ut nagra fa av dessa berakningar for att illustrera denanmarkningsvarda skillnaden mellan dft() och fft(). Dessa berakningar presenteras i tabell 1samt i figur 15.

Tabell 1: Tidsatgang vid korning pa polaris.nada.kth.se

n Naiv implementation (sek) MATLABs FFT (sek)1000 7.31000 0.000102000 33.28999 0.000203000 80.67999 0.001404000 151.05000 (ca. 2:30 min) 0.001705000 245.09000 0.001906000 363.97000 0.002607000 508.23000 (ca. 8:30 min) 0.00310

1000 2000 3000 4000 5000 6000 700010

−4

10−3

10−2

10−1

100

101

102

103

Tidsjämförelse emellan matlabs rutin och vår naiva

Stoleken på matrisen − n

Tid

såtg

ånge

n i s

ekun

der

− s

Vår naivaMatlabs

Figur 15: Jamforelse emellan var naiva och Matlabs rutin

Sag nu att man har 7000 olika matvarden fran nagot hemligt experiment man har utfortpa sina kurskamrater och man i denna datamangd vill forsoka hitta nagot monster. Genom attanvanda sig av matlabs inbyggda funktion ar berakningen gjord pa mindre an ett ogonblickistallet for att kasta bort hela kafferasten. Tyvarr kunde vi inte gora nagra ytterligare un-dersokningar, for annu storre n, da var naiva implementation glufsade i sig nastan allt minnesom fanns tillgangligt pa testmaskinen.

11

2.2 En harledning av periodicitetsegenskaper

Tanken bakom FFT, den snabba fouriertransformen, ar att forsoka hitta periodicitet i fourier-matrisen och pa sa satt minska antalet nodvandiga berakningar. Den bakomliggande iden ar attman hela tiden gora likformiga forskjutningar for att pa sa satt hitta den efterfragade period-iciteten. Detta gors genom att man forst noterar att matrismultiplikation inte ar nagonting annatan additioner och multiplikationer och sedan gor en uppdelning utifran detta enligt

Fnf = A · f0 + B · f1 + C · f2 + . . .

Valjer man nu en listig uppdelning av f, var n:te term, racker det med att man bara sparar en avovanstaende matriser. Detta har att gora med vandermondestrukturen hos fouriermatrisen somtillater introduktionen av en upplyftningsoperator Λ. Denna lyfter exponenten hos frekvenserna,ωn, ett steg uppat. Har man gjort denna observation faller det sig naturligt att en uppdelningav tre stycken termer ges av

Fnf = Af0 + ΛAf1 + Λ2Af2

dar ingaende matriser definieras analogt med laborationsanvisningarna. Detta ar ju uppenbarli-gen trevligt eftersom man bara behover anvanda en n× n/m matris, dar m ar valet av termup-pdelning. Tanker man sig nu att man fixerar A-matrisen och undersoker vad som hander omman tar exakt ett n/m steg at hoger finner man att

ω(n/m+j)mkn = e−2πi(n/m+j)mk/n = e−2πike−2πimjk/n = ωjk

n/m

I fallet m = 3 undersoker man ovanstaende for j = 0 och 2n/m och dessa tre resultat tillsam-mans medfor da att man kan skriva A som tre pa varandra staende Fn/3 matriser. Analogt kanman fundera pa vad som hander om man tar lika langa steg utmed en linje frekvensexponenteruppstallda enligt 1, ωn, ω2

n, . . . , ωn−1n , alltsa diagonalen i Λ.

ωn/m+kn = e−2πi(n/m+k)/n = e−2πi/mωk

n = z1ωkn

Undersoker man ocksa detta for 2n/3 trillar det ut ytterligare en komplex konstant z2 = z1 =−1/2 + i

√3/2. Saledes kan man nu skriva transformen som

Fnf =

Fn/3

Fn/3

Fn/3

f0 +

Dn/3 0 00 z1Dn/3 00 0 z1Dn/3

Fn/3

Fn/3

Fn/3

f1+

+

D2n/3 0 00 z2

1D2n/3 0

0 0 z21D

2n/3

Fn/3

Fn/3

Fn/3

f2

Ovanstaende kan nu anvandas for att skriva om algoritmen som darefter far vasentligt hogreprestationsgrad.

2.3 Undersokning av komplexitetsegenskaper

I laborationsanvisningarna anges en rekursionsformel for berakningskostnaden enligt

bn = bn/2 +32n

12

da man delar upp berakningen i tva stycken termer. Det bor anses att Fnf = Af0 + Bf1 bordekunna skrivas bn = 2bn/2 + n dar termen n kommer fran addition av tva stycken n× 1 vektorer.Det viktiga ar nu att beroendet fortfarande ar linjart da man delar upp B enligt B = ΛA. Antarman att algoritmen kan konstrueras sa att nollelement ignoreras och man samtidigt inte bryrsig om strukturen hos diagonalen leder detta till att det maste goras n stycken multiplikationer.Emellertid delas diagonalen upp i tva stycken talfoljder som enbart skiljer pa ett tecken. Kan mannu anse att ett teckenbyte pa halften av elementen inte kraver nagon relevant berakningskraftracker det med n/2 multiplikationer och man kommer da fram till den angivna rekursionsformlen.

Generaliserar man ett steg, till tre termer, borde motsvarande transformationskostnad kunnaskrivas

bn = 3bn/3 + 2n + f(n)

dar 2n kommer ur en summering av tre n×1-vektorer och f(n) uppkommer da man introducerartidigare namnda Λ. Det som forefaller lite lurigt ar om rotationer i C ska raknas som en ickeforsumbar operation. Om man valjer att gora detta blir kostnaden for introduktionen 2n: noperationer fran varje diagonalmatrismultiplikation med antagandet enligt forra stycket. A andrasidan, om man kan anse att skalningen kraver forsumbar berakningskraft, erhaller man istallet2n/3 operationer av samma anledning som vid tvatermsuppdelningen. Beroendet ar fortfarandelinjart och konstanten framfor n ar inte sa viktig men det ska fortfarande noteras att om manar oforsiktig kommer berakningarna ta langre tid an vad de skulle behova gora. Exempelvis kandet namnas att beroendet blir kvadratiskt om man utfor multiplikation med nollorna i Λ. Dettainnebar att vi antingen kan anvanda bn = 3bn/3 + 4n eller bn = 3bn/3 + 8

3n. Oavsett vilkenav dessa man valjer kan ett komplexitetsuttryck hittas med hjalp av huvudsatsen (the mastertheorem).

Huvudsatsen Antag att T (n) ges av rekursionen T (n) = aT (n/b) + F (n) och T (1) = d dagaller foljande

1. Om F (n) vaxer langsammare an nlogba galler att T (n) ∈ O(nlogba

)

2. Om F (n) ∈ O(nlogba

)galler att T (n) ∈ O(

nlogba log n)

3. Om F (n) vaxer snabbare an nlogba galler att T (n) ∈ O(F (n))

Da satsen uppenbarligen galler for den formulerade rekursionen inses att (2) ar tillampbarvilket i sin tur innebar nedanstaende.

bn ∈ O(n log n)

Ytterligare, precis som i laborationsanvisningarna kan man skriva

bn =83n log3 n

2.4 En rekursiv implementation

Nu nar vi har gatt igenom varfor det ar fordelaktigt att skriva om fouriertransformen pa det harsattet ar det dags att implementera den och testa den praktiskt. Vi illustrerar tanken bakom varrekursiva implementation med tre stycken figurer.

13

� � � � � � � � � �

� � � � �

� � �

� � � � � � � � � � � � � � � � � � � �

� � � � �

� � �� � �

Figur 16: Forst skickas kolonnvektorn f, som man vill transformera, som argument till funktionen.I den forsta noden delas vektorn upp i tre nya vektorer f0, f1 och f2 som innehaller var tredjeelement i f.

� � � � � � � � � � � � � � �

� � � � �

� � �

� � � � � � � � � � � � � � �

� � � � �

� � �

� � � � � � � � � � � � � � �

� � � � �

� � �

Figur 17: Vektorerna delas upp till det endast kvarstar tre stycken element i varje. Dessa multi-pliceras med fouriermatrisen F3 och genererar totalt m stycken nya vektorer om n = 3m.

� � � � � � � � � � � � � � �

� � � � �

� � � � � � � � � � � � � � �

� � � � �

� � � � � � � � � � � � � � �

� � � � �

Figur 18: De nya vektorerna kombineras nu, enligt den harledda formeln, hela vagen upp tilltoppen av rekursionstradet. Alltsa 3 × 1 → 9 × 1 → · · · → n × 1 som ar den transformeradevektorn f = Fnf . Pa grund av den valda strukturen kan varje ny vektorkonstruktion goras ilinjar tid vilket medfor att algoritmen blir effektiv.

14

De beskrivande figurerna realiseras i den matlabkod som foljer.

function result = fft_r(f)n = length(f);omega = exp(-2*pi*i/n);if n == 3

% Figur 17result = [1,1,1;1,omega,omega^2;1,omega^2,omega^4]*f;

else% Figur 16 och 17box1 = fft_r(f(1:3:n-2));box2 = fft_r(f(2:3:n-1));box3 = fft_r(f(3:3:n));% Figur 18result = [box1;box1;box1] +

[omega.^(0:-1:1-n)]’.*[box2;box2;box2] ++ [omega.^(0:-2:2-2*n)]’.*[box3;box3;box3];end

2.5 En jamforelse av berakningseffektivitet

Forst tittade vi pa n = 38 vilket ar ganska nara det varde som avslutade jamforelserna avden naiva implementationen. Okandes sedan exponenten med ett fram till och med 14. Dessaberakningar presenteras i tabell 2 samt i figur 19.

Tabell 2: Tidsatgang vid korning pa polaris.nada.kth.se

n Var rekursiva fft (sek) MATLABs FFT (sek)6561 (38) 0.959999 0.00270019683 (39) 3.040000 0.00880059049 (310) 9.860000 0.026600177147 (311) 32.180000 0.098200531441 (312) 105.280000 0.3358001594323 (313) 344.339999 0.9559994782969 (314) - 4.696000

De slutsatser som kan dras ar att det uppenbarligen finns mer algoritmoptimering att gora.Troligen ar det sa att man kan konstruera metoder for att kanna av vilken variant av fourierup-pdelning som lampar sig bast vi olika langd och utseende pa indata. Ytterligare kan man ocksatanka sig att viss optimering kan goras nere pa processor niva vilket vi inte kan komma at daman arbetar flera lager upp hierarkin.

15

103

104

105

106

107

10−3

10−2

10−1

100

101

102

103

Tidsjämförelse emellan matlabs fft och vår fft (med bas 3)

Stoleken på matrisen − n

Tid

såtg

ånge

n i s

ekun

der

− s

Vår fftMatlabs

Figur 19: Jamforelse emellan var fft och Matlabs

2.6 Ytterligare funderingar

FFT, nar den implementeras korrekt, ar uppenbarligen en fruktansvart snabb algoritm for hanter-ing av stora matriser med ratt utseende. Fran borjan anvandes den som bekant for att analysernasignaler eftersom dessa analyseras antingen som en funktion av tid f(t) eller som en funktion avfrekvens f(ω), transformen fungerar som en brygga mellan dessa tva. Detta kom att revolutioneratelekommunikationsindustrin under forra arhundradet, det ar inte svart att forsta varfor.

Avslutningsvis kan namnas att den rekursiva implementationen ar uppenbarligen vasentligtlangsammare an den implementation som matlab har inbyggd. Det far oss att stalla fragan omdenna verkligen ar rekursiv, det borde finns mojlighet att skriva en snabb iterativ algoritm.Dessutom upplever vi att det finns mojlighet att valja matrisuppdelningen listigt med avseendepa vektorn man ska transformera. Vi har emellertid inte forsokt att gora nagonting sadant dauppgiften var att undersoka slumpvektorer av olika langder.

16