Cooley-Tukey-algoritm

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 10 februari 2022; verifiering kräver 1 redigering .

Cooley-Tukey-algoritmen är den vanligaste algoritmen för att beräkna Fast Fourier-transformen . Algoritmen gör det möjligt att uttrycka en diskret Fouriertransform med längd lika med ett godtyckligt sammansatt tal , genom ett visst antal transformationer av mindre längd med hjälp av rekursion , vilket reducerar komplexiteten i beräkningarna till jämna . Uppkallad efter J. Cooley och J. Tukey .

Grundläggande algoritm

För ett godtyckligt naturligt tal, den diskreta Fouriertransformen av en komplex vektor , där , är en komplex vektor , där , vars komponenter ges av formeln

var .

För att konstruera algoritmen antas det att för vissa naturliga tal och och följande substitution av index görs [1] :

vilket resulterar i

Därefter omvandlas vektorerna för in- och utdata till tvådimensionella arrayer och , givet av likheterna

Det är värt att notera att komponenterna är beställda annorlunda än .

Nästa, låt och . Det är uppenbart att . Sedan, när det gäller tvådimensionella variabler, transformeras formeln till formen [2]

Att beräkna längdtransformationen kommer alltså ner på att göra följande:

  1. Beräkning av längdtransformationer .
  2. Multiplikation med komplexa "roterande" faktorer.
  3. Beräkning av längdtransformationer .

Dessutom, istället för komplexa additioner och komplexa multiplikationer av den ursprungliga formeln, innehåller det slutliga schemat inte mer än komplexa additioner och komplexa multiplikationer [2] .

Var och en av längdtransformationerna eller kan beräknas med hjälp av olika snabba algoritmer, i synnerhet igen enligt ovanstående schema. I detta fall kan längdtransformationen representeras i en form som kräver komplexa multiplikationer [3] .

Algoritm för att basera två

I många applikationer är längden på transformationen en potens av två: . Sedan, i ovanstående schema, alternativ eller är möjliga . I det här fallet talar man om Cooley-Tukey-algoritmen i bas två [3] ( radix-2 ) . 

Om , då talar man om Cooley-Tukey-algoritmen med tidsförtunning [3] . I detta fall omvandlas ekvationerna till formen

Om vi ​​introducerar notationen och , då kan ekvationerna skrivas om som

En sådan operation brukar kallas en "fjäril" .

Denna procedur kan tillämpas rekursivt på ingångsvektorn . Vid varje steg delas -punktstransformationen upp i tvåpunktstransformationer, som i sin tur delas upp på samma sätt tills transformationens längd blir lika med en. Sedan finns det ett omvänt drag, vid varje steg fördubblas längden på resultaten av transformationerna med hjälp av "fjärilar". Med denna implementering utförs komplexa multiplikationer och komplexa additioner.

Denna process är ett exempel på tillämpningen av dela och erövra tekniken . I många implementeringar undviks dock direkt rekursion och istället korsas beräkningsträdet i bredd-först sökordning .

Om , då talar man om Cooley-Tukey-algoritmen med frekvensdecimering [4] . I detta fall omvandlas ekvationerna till formen

Raider-Brenner algoritm

Låta

släpp det

Med hjälp av formlerna för frekvensdecimeringsalgoritmen är det lätt att verifiera att följande relation gäller:

Denna bas-två-modifiering av algoritmen kallas Rader-Brenner-algoritmen . Det gör det möjligt att minska beräkningskomplexiteten på grund av enklare multiplikationer med rent imaginära konstanter [5] . Liknande formler kan erhållas med hjälp av reella konstanter [6] .

Historik

Algoritmen och dess rekursiva implementering uppfanns omkring 1805 av K. Gauss när han interpolerade banorna för asteroiderna Pallas och Juno [7] . Då blev upptäckten inte utbredd och publicerades först efter vetenskapsmannens död på nytt latin . Gauss-resultatet återupptäcktes flera gånger i olika former under de kommande 150 åren och blev populärt efter publiceringen 1965 av en artikel av J. Cooleyfrån IBM och J. Tukey från Princeton , där algoritmen återigen upptäcktes, och en bekväm implementering för en dator beskrevs också [8] .

Det faktum att Gauss var upptäckaren av algoritmen upptäcktes bara några år efter publiceringen av Cooley och Tukey. I sin artikel hänvisade de bara till I.J. Goods arbete, där Goode-Thomas-algoritmen beskrevs .

Att uttrycka Fouriertransformen av en längd i termer av två längdtransformer kallas ibland Danielsons lemmaLanczos , eftersom den erhölls av dessa två författare 1942 [9] .

Anteckningar

  1. Blahut, 1989 , sid. 129.
  2. 1 2 Blahut, 1989 , sid. 130.
  3. 1 2 3 Blahut, 1989 , sid. 133.
  4. Blahut, 1989 , sid. 134.
  5. Blahut, 1989 , sid. 138.
  6. Nussbaumer, 1985 , sid. 92.
  7. Heideman, MT , Johnson, DH , Burrus, CS Gauss och historien om den snabba Fourier-transformen  //  IEEE ASSP Magazine. - IEEE , 1984. - Vol. 1 , iss. 4 . - S. 14-21 . - doi : 10.1109/MASSP.1984.1162257 .
  8. Cooley, JW , Tukey, JW En algoritm för maskinberäkning av komplexa Fourierserier  //  Mathematics of Computation. - 1965. - Vol. 19 . - S. 297-301 . - doi : 10.1090/S0025-5718-1965-0178586-1 .
  9. Danielson, GC , Lanczos, C. Några förbättringar av praktisk Fourier-analys och deras tillämpning på röntgenspridning från vätskor  //  Journal of the Franklin Institute. - 1942. - Vol. 233 , utg. 4 . — S. 365–380 . - doi : 10.1016/S0016-0032(42)90767-1 .

Litteratur

Se även