Kiire Fourier' teisendus

N valimi diskreetne Fourier' teisendus koosneb N summast, millest igaühes on N liiget. Kui jagada see summa väiksemateks summadeks, saab sama vastuse kätte palju väiksema vaevaga. Vaata, kuidas see jaotumine liblikdiagrammil toimub, või uuri Gaussi viisi kaheteistkümne asteroid Pallasest rääkiva arvuga.

Interaktiivse simulatsiooni laadimine...

Õppetund

Teooria — Kiire Fourier' teisendus

Kiire Fourier' teisendus (FFT) on mistahes algoritm, mis arvutab diskreetse Fourier' teisenduse X[k] = Σ x[n] Wkn, W = e−2πi/N (kuni ümardamiseni täpselt), kasutades N² asemel ligikaudu N log N tehet. Cooley ja Tukey kuju jaotab N = N1N2. See on N2 põimitud teisendust pikkusega N1, kus teisenduse n2 iga väljund k1 korrutatakse tema oma pöördeteguriga Wn2k1. Seejärel tehakse nende peal N1 teisendust pikkusega N2. Kui seda rakendada korduvalt N = 2m puhul, on tulemuseks alusega 2 FFT: m etappi, millest igaühes on N/2 liblikat.

Mida iga sümbol tähendab

N
valimite ja arvutatud sageduste arv
W
ühejuur e−2πi/N; selle astmed on pöördetegurid
m
log2N, alusega 2 FFT etappide arv

Gauss pani FFT jaotuse kirja umbes 160 aastat enne Cooley't ja Tukey't 🖖

Vajuta nuppu Gauss, 3 perioodi 4 kaupa. Need kaksteist arvu pärinevad Gaussi käsikirjast: asteroid Pallase taevavööndi põhjapiiri kääne iga 30° otsetõusu järel, esitatuna kaareminutites ja kopeerituna von Zachi ajakirjast. Ta tahtis leida neid punkte läbivat trigonomeetrilist rida. Ühe kaheteistkümneliikmelise summa asemel võttis ta iga kolmanda väärtuse (0°, 90°, 180°, 270°; seejärel 30°, 120°, …; siis 60°, …), sobitas iga neljase rühma eraldi ja ühendas need kolm lühikest sobitust. Kriipsjoontega kõverad ongi needsamad sobitused, kuid need ei kattu. Neli punkti ei suuda tuvastada kiiremaid võnkumisi. Seega saab iga rühm erineva vastuse, mis viiski ta õige ühendamise otsingutele. Tulemuste all olev tabel näitab tema arvutust uuesti läbi tehtuna. Esimene periood annab väärtusteks 779,5; −415,0; −726,0 ja 43,5 – samad arvud, mis on tema käsikirjas –, ja ühendatud rida ongi otsene kaheteistkümneliikmeline rida. Ta tegi seda ka teistmoodi, nelja kolmest koosneva perioodina, ja sai tulemuseks sama rea. Indeksite matemaatika on sama, mille Cooley ja Tukey avaldasid aastal 1965, nagu näitasid Heideman, Johnson ja Burrus 1984. aastal. Sama oluline on ka see, mida käsikiri ei ütle. See ei loenda kordagi kokkuhoitud tööd. Kuigi Gauss ütleb, et jaotus on kiirem, jätab ta tõestuse praktika hooleks: praxis tentantem docebit ehk „kes proovib, see näeb”. Selle läbilahendatud näidetes on kaks tegurit (12 = 3 × 4 ja 36 = 6 × 6) ning 27. artikkel märgib vaid, et jaotus laieneb ka teistele juhtudele. Tema eluajal seda ei avaldatud. See ilmus ladina keeles tema kogutud teostes aastal 1866 ja on dateerimata. Väljaande „Werke” toimetaja nimetab seda arvatavasti 1805. aasta oktoobris alustatud mustandi ümbertöötluseks. Heideman, Johnson ja Burrus paigutavad selle mitmesuguste vihjete põhjal 1805. aasta oktoobrisse või novembrisse. Üks neist vihjetest on Juno ekstsentrilisus 0,254236, mida käsikiri kasutab ja mis trükiti ära 1805. aasta mais.

Kokkuhoid ei ole püsiv suurus, vaid kasvab koos N-iga 🖖

Vajuta nuppu 1024 punkti. Otsene summa korrutab iga valimi iga pöördeteguriga: tehes nii N² = 1 048 576 korrutamist. FFT läbib log₂N = 10 etappi, kus igas on N/2 = 512 liblikat ja üks korrutamine iga liblika kohta: seega 5120 korrutamist. See on 204,8 korda vähem. Nende suhe on 2N/log₂N, mis tähendab, et see muudkui kasvab. Vajuta nuppu Miljon punkti: 1 099 511 627 776 korrutamist otsese summa 10 485 760 korrutamise vastu, mille suhe on 104 857,6. Kahekordista N ja otsese summa töömaht suureneb neli korda. Tuhande punkti juures suureneb FFT töömaht vaid 2,2 korda, ja mida edasi, seda lähemale liigub see kahekordistumisele. 8 punkti juures on kokkuhoid vaid 5,3 korda. Seetõttu näeb diagramm välja nagu suur hulk juhtmeid minimaalse kasu nimel. Mõlemad loendid sisaldavad korrutamisi W⁰ = 1-ga, täpselt nagu ka Cooley ja Tukey enda N². Nemad lugesid korrutamis- ja liitmispaare ning said tulemuseks vähem kui 2N log₂N. Igal juhul kasvab suhe nagu N/log N. Ükski arvuti ei muuda kumbagi loendit ega ka nende suhet. Kiirem arvuti muudab vaid kestust, ja sedagi mitte ilmtingimata sama teguri võrra. Tabelite all asuv nupp mõõdab mõlema meetodi aega sinu brauseris. Mõõdetud suhe kasvab samuti koos N-iga, ehkki see ei jõua näidatud arvudeni, sest andmevahetus mäluga ja liitmised võtavad samuti aega, kuid neisse loenditesse pole neid kaasatud.

Suurte N-ide puhul on kiirem meetod ühtlasi täpsem 🖖

Täpsuse tabel käivitab mõlemad meetodid nii, et iga tehe on ümardatud ühekordse täpsuseni (umbes seitse tüvenumbrit), ja võrdleb neid topelttäpsusega arvutatud vastusega. 1024 punkti juures eksib otsene summa 5,75×10⁻⁷ võrra vastuse suurusest, FFT aga 1,23×10⁻⁷ võrra, mis on umbes 4,7 korda vähem. Liikudes 16 punkti juurest 1024 juurde – kogus suurenes 64 korda – kasvas otsese summa viga 7,3 korda ja FFT viga 1,4 korda. Iga otsese summa väljund on N ümardatud korrutise jooksev kogusumma, nii et selle ümardamisvead kuhjuvad 1024 liitmisega. See-eest iga FFT väljund läbib ainult log₂N = 10 liblikat. 16 punkti juures pole aga mingit vahet ja selle sisendi puhul on FFT isegi pisut halvem: 8,74×10⁻⁸ vs. 7,91×10⁻⁸. Mõlemad meetodid leiavad iga pöördeteguri samamoodi: arvutades topelttäpsusega ja ümardades üks kord. Seega võrdleb tabel kaht algoritmi, mitte kaht siinuse leidmise viisi.

Ülesanne täielikult lahendatud

  1. Gaussi teine näide: Juno, 36 väärtust 4 sammu

    Gaussi käsikirja 41. artikkel interpoleerib Juno keskpunkti võrrandi 36 väärtusest, üks iga 10° järel, mis on jaotatud 6 × 6. Kui suur on otsese summa töömaht Cooley ja Tukey loendi järgi, kui palju säästab Gaussi jaotus ning kas peenem jaotus annaks parema tulemuse? Vajuta esmalt nuppu Gauss, 3 perioodi 4 kaupa: leht arvutab kaheteistkümne väärtuse puhul samamoodi.

    Ava see ülesanne tööriistas

    1. Otsene summa teeb ühe tehte iga valimi ja sageduse kohta:

    2. Gaussi jaotus ehk kuus kuuest koosnevat perioodi: Cooley ja Tukey kaheastmelise loendi puhul on töömaht N korda tegurite summa.

    3. Täielikult osadeks jagatuna on 36 = 2 × 2 × 3 × 3:

    4. Cooley ja Tukey reegel: teguri r = st puhul (kus s, t > 1) kehtib alati s + t < r, välja arvatud siis, kui s = t = 2:

    Vastus

    1296 tehet otseselt, 432 Gaussi 6 × 6 jaotusega ning 360 lõpuni jaotatult. Gaussi jaotus teeb juba kolm korda vähem tööd, peeneim jaotus aga säästab allesjäänust veel kuuendiku. Lehel olevate kaheteistkümne väärtuse puhul on olukord sarnane: 144 otseselt ja 84 jaotusega ehk lõpuni jaotatult 12 × (2 + 2 + 3) = 84. Põhjus peitub selles, et teguri 4 jaotamine 2 × 2 kujul on sama kulukas.

Õpitee

Fourier' teisendus praktikas

Allikad (3)