7. előadás Gyors szorzás, gyors Fourier-transzformáció

Hasonló dokumentumok
7. előadás Gyors szorzás, gyors Fourier-transzformáció

FFT. Második nekifutás. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék október 2.

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Polinomok, Lagrange interpoláció

Diszkrét matematika 2.

Nagy Gábor compalg.inf.elte.hu/ nagy

Diszkrét matematika I., 12. előadás Dr. Takách Géza NyME FMK Informatikai Intézet takach november 30.

Diszkrét matematika 2.C szakirány

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Kongruenciák. Waldhauser Tamás

KOVÁCS BÉLA, MATEMATIKA I.

Klasszikus algebra előadás. Waldhauser Tamás március 24.

1. Polinomfüggvények. Állítás Ha f, g C[x] és b C, akkor ( f + g) (b) = f (b) + g (b) és ( f g) (b) = f (b)g (b).

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Fourier transzformáció

12. előadás. Egyenletrendszerek, mátrixok. Dr. Szörényi Miklós, Dr. Kallós Gábor

Komplex számok. Wettl Ferenc előadása alapján Wettl Ferenc előadása alapján Komplex számok / 18

2012. október 2 és 4. Dr. Vincze Szilvia

Diszkrét matematika I.

1. Interpoláció. Egyértelműség Ha f és g ilyen polinomok, akkor n helyen megegyeznek, így a polinomok azonossági tétele miatt egyenlők.

Fehérzajhoz a konstans érték kell - megoldás a digitális szűrő Összegezési súlyok sin x/x szerint (ez akár analóg is lehet!!!)

Irodalom. (a) A T, B T, (b) A + B, C + D, D C, (c) 3A, (d) AD, DA, B T A, 1 2 B = 1 C = A = 1 0 D = (a) 1 1 3, B T = = ( ) ; A T = 1 0

6. előadás Faktorizációs technikák közepes méretű osztókra

6. előadás Faktorizációs technikák közepes méretű osztókra

Shift regiszter + XOR kapu: 2 n állapot

Nagy Gábor compalg.inf.elte.hu/ nagy

Klasszikus algebra előadás. Waldhauser Tamás április 28.

illetve, mivel előjelét a elnyeli, a szinuszból pedig kiemelhető: = " 3. = + " 2 = " 2 % &' + +

Diszkrét matematika 1.

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Diszkrét matematika 2.C szakirány

1. A polinom fogalma. Számolás formális kifejezésekkel. Feladat Oldjuk meg az x2 + x + 1 x + 1. = x egyenletet.

Alapvető polinomalgoritmusok

1. feladatsor: Vektorterek, lineáris kombináció, mátrixok, determináns (megoldás)

3. előadás Prímtulajdonság, lnko, Euklideszi algoritmus, lánctörtek

1. A maradékos osztás

Hatványozás. A hatványozás azonosságai

Vektorterek. Wettl Ferenc február 17. Wettl Ferenc Vektorterek február / 27

1.1. Definíció. Azt mondjuk, hogy a oszója b-nek, vagy más szóval, b osztható a-val, ha létezik olyan x Z, hogy b = ax. Ennek jelölése a b.

1. Egész együtthatós polinomok

4. Fuzzy relációk. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI

Ortogonalizáció. Wettl Ferenc Wettl Ferenc Ortogonalizáció / 41

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

Fourier térbeli analízis, inverz probléma. Orvosi képdiagnosztika 5-7. ea ősz

Nagy Gábor compalg.inf.elte.hu/ nagy

Algebrai alapismeretek az Algebrai síkgörbék c. tárgyhoz. 1. Integritástartományok, oszthatóság

1.9. B - SPLINEOK B - SPLINEOK EGZISZTENCIÁJA. numerikus analízis ii. 34. [ a, b] - n legfeljebb n darab gyöke lehet. = r (m 1) n = r m + n 1

1. feladatsor Komplex számok

1. Polinomok számelmélete

Negatív alapú számrendszerek

Algoritmuselmélet gyakorlat (MMN111G)

Nagy Gábor compalg.inf.elte.hu/ nagy

1. Generátorrendszer. Házi feladat (fizikából tudjuk) Ha v és w nem párhuzamos síkvektorok, akkor generátorrendszert alkotnak a sík vektorainak

Számítógépes gyakorlat MATLAB, Control System Toolbox

1 Lebegőpontos számábrázolás

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz

Vektorok, mátrixok, lineáris egyenletrendszerek

1. Interpoláció. Egyértelműség (K2.4.10) Ha f és g ilyen polinomok, akkor n helyen megegyeznek, így a polinomok azonossági tétele miatt egyenlők.

Klasszikus algebra előadás. Waldhauser Tamás április 14.

Mátrixok 2017 Mátrixok

alakú számot normalizált lebegőpontos számnak nevezik, ha ,, és. ( : mantissza, : mantissza hossza, : karakterisztika) Jelölés: Gépi számhalmaz:

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Numerikus integrálás

Hadamard-mátrixok Előadó: Hajnal Péter február 23.

Diszkrét matematika II., 8. előadás. Vektorterek

2) Írja fel az alábbi lineáris függvény grafikonjának egyenletét! (3pont)

Kalkulus I. gyakorlat Fizika BSc I/1.

Polinomok (előadásvázlat, október 21.) Maróti Miklós

1. Komplex szám rendje

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Algebra

First Prev Next Last Go Back Full Screen Close Quit. Matematika I

VEKTORTEREK I. VEKTORTÉR, ALTÉR, GENERÁTORRENDSZER október 15. Irodalom. További ajánlott feladatok

6. Előadás. Megyesi László: Lineáris algebra, oldal. 6. előadás Bázis, dimenzió

Intergrált Intenzív Matematika Érettségi

Hatványsorok, Fourier sorok

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Függvények növekedési korlátainak jellemzése

3. el adás: Determinánsok

1. A Horner-elrendezés

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

Numerikus módszerek 1.

Bevezetés az algebrába az egész számok

Határozatlan integrál (2) First Prev Next Last Go Back Full Screen Close Quit

Lineáris leképezések (előadásvázlat, szeptember 28.) Maróti Miklós, Kátai-Urbán Kamilla

10. Feladat. Döntse el, hogy igaz vagy hamis. Név:...

GPK M1 (BME) Interpoláció / 16

3. előadás Prímtulajdonság, lnko, Euklideszi algoritmus, lánctörtek

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

Másodfokú egyenletek, egyenlőtlenségek

1. témakör. A hírközlés célja, általános modellje A jelek osztályozása Periodikus jelek leírása időtartományban

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Ipari matematika 2. gyakorlófeladatok

1. fogalom. Add meg az összeadásban szereplő számok elnevezéseit! Milyen tulajdonságai vannak az összeadásnak? Hogyan ellenőrizzük az összeadást?

1. Mátrixösszeadás és skalárral szorzás

17. előadás: Vektorok a térben

Wavelet transzformáció

y = y 0 exp (ax) Y (x) = exp (Ax)Y 0 A n x n 1 (n 1)! = A I + d exp (Ax) = A exp (Ax) exp (Ax)

6. gyakorlat. Gelle Kitti. Csendes Tibor Somogyi Viktor. London András. jegyzetei alapján

Egy általános iskolai feladat egyetemi megvilágításban

Átírás:

7. előadás Gyors szorzás, gyors Fourier-transzformáció Dr. Kallós Gábor 206 207

Tartalom Műveletek nagypontosságú egészekkel Hagyományos szorzó algoritmus Változat: polinomok szorzása Hagyományos rekurzív szorzó algoritmus A mester-tétel Karacuba módszere Strassen mátrixszorzó eljárása Szorzás moduláris reprezentációban Hatékony odakonverzió Horner-elrendezés Diszkrét Fourier-transzformáció Gyors Fourier-transzformáció Inverz Fourier-transzformáció Gyors polinomszorzás FFT-vel FFT alkalmazások Irodalom 2

Műveletek nagypontosságú egészekkel Eml.: nagypontosságú egész reprezentációja a = a 0 + a B + a 2 B 2 + + a n B n + a n B n, ahol minden a i < B. Itt B a nagypontosságú számrendszer alapja, úgy, hogy biztosan tárolható legyen hagyományos egészként Legyen a és b két nagypontosságú egész, n és m jeggyel: a = a 0 + a B + a 2 B 2 + + a n B n b = b 0 + b B + b 2 B 2 + + b m B m Egyszerű műveletek (+ és ) megvalósítása: elemenként, balról kezdve (mint a 0-es számrendszerben) Csak az átvitelek (0 vagy -es jegy) kezelése jelent gondot Műveletigény: O(max(m, n)) Szorzás művelet: az eredmény egy legf. m + n jegyű nagypontosságú egész Hagyományos ( iskolás ) szorzó eljárás: Mint a 0-es szr-beli egészeknél, minden i-re a-t megszorozzuk b i -vel, kezeljük az átvitelt (ha kell), és összeadjuk a részösszegeket Komoly hátrány (ha a számok nagyok): a számítás végéig tárolni kell az összes részösszeget Javítsunk ezen! 3

Hagyományos szorzó algoritmus Módosítás: helyben végrehajtott számítások (minden részszorzás után egy összeadás) Legyen b (0) = 0, b () = b 0, b (2) = b 0 + b B, azaz minden k m-re legyen b (k) = b 0 + b B + + b k B k (azaz b-t folyamatosan dolgozzuk fel), a b (k) = c 0 (k) + c (k) B + + c n+k (k) B n+k. (Itt n és k jegyű egészekkel végzünk műveletet.) Ekkor c = a b (m) (amikor már a teljes b-t feldolgoztuk). Minden k-ra teljesül, hogy a b (k+) = a (b (k) + b k+ B k+ ) = a b (k) + a b k+ B k+, és így a c 0 (k), c (k),, c k (k) jegyek változatlanok maradnak (!) Műveletigény: O(m n) Feladat: Nézzük meg az algoritmus működését az a = 234 567 és b = 2 345 678 számokkal, B = 000 választásával! 4

Polinomok szorzása Az R[x] polinomgyűrűben (ahol R gyűrű és x ismeretlen) a klasszikus aritmetikai műveletek az ismert módon hajtódnak végre Legyen a(x) és b(x) két polinom, n és m fokkal: a(x) = a 0 + a x + a 2 x 2 + + a n x n b(x) = b 0 + b x + b 2 x 2 + + b m x m Lényegében minden ugyanúgy, mint a nagypontosságú egészeknél Az összeg elemenként számolandó: a(x) + b(x) = a 0 + b 0 + (a + b )x + (a 2 + b 2 )x 2 + + (a k + b k )x k, ahol k = max(m, n) Műveletigény: O(max(m, n)) A szorzásra: a(x) b(x) = h 0 + h x + h 2 x 2 + + h m+n x m+n, ahol h i = a i b 0 + + a 0 b i Műveletigény: O(m n) Próbáljuk ki ezt két max. negyedfokú polinomra! Ha az osztás is elvégezhető, akkor q és r meghatározása a = b q + r, (0 r < b, ill. 0 deg(r) < deg(b)) esetén: Az osztó algoritmus m n + lépést tesz, mindegyik lépés O(m n) művelet Műveletigény végül: O((m n) n) 5

Hagyományos rekurzív szorzó algoritmus Gyors rekurzív szorzó eljárás polinomokra (Karacuba) Ez volt az első ismert O(n 2 )-nél gyorsabb eljárás (962) Mi nagypontosságú egészekre mutatjuk be (lényegében uaz) A hagyományos rekurzív szorzó eljárás Legyen x és y n jegyű nagypontosságú egész (B alappal), és vágjuk szét őket két n/2 hosszú (felső és alsó) részre azaz x = a b, y = c d, x = a B n/2 + b, y = c B n/2 + d. A szorzat klasszikus alakja: x y = a c B n + (a d + b c) B n/2 + b d Rekurzívan számoljuk ki a költséget: Legyen T(n) a két n hosszú egész összeszorzásának költsége, ez kiváltható négy db n/2 hosszú egészekkel végrehajtható szorzással és egy db ilyen összeadással T() =, T(n) = 4 T(n/2) + c n, valamilyen c konstansra Ebből n = 2 m -re: T(n) = T(2 m ) = 4 T(2 m ) + c 2 m = 4 (4 T(2 m 2 ) + c 2 m ) + c 2 m = = 4 2 T(2 m 2 ) + c 2 m ( + 2) = = 4 m T() + c 2 m ( + 2 + + 2 m ) = = C (2 m ) 2 = C n 2 A költség kiszámításához használhatjuk a mester-tételt 6

Hagyományos rekurzív szorzó algoritmus A mester-tétel Rekurzív algoritmusok átlagos idejű lépésszámának meghatározására szolgál, T(n) kiszámítása a cél Az algoritmus futásidő összefüggése megadható a következő rekurzív képlettel: T(n) = a T(n/b) + f(n), ahol f(n): a rekurzív eljárás minden hívásakor végrehajtott műveletek száma (n függvényében) a: részfeladatok száma, b: a részfeladatok mérete hányadrésze az egésznek (a, b > ) T(n/b): egy részfeladat költsége Ekkor Az alkalmazáshoz a konkrét feladat leírása alapján meg kell határoznunk az a, b és f(n) értékét (log b a-t), majd el kell döntenünk, hogy melyik esetbe tartozik a feladatunk Nálunk most: T(n) = 4 T(n/2) + c n, azaz a = 4, b = 2, log 2 4 = 2, c n-re igaz, hogy O(n 2 ε )-os, így az. eset áll fent Tehát T(n) = c n 2 7

Karacuba módszere Karacuba észrevette, hogy az x y szorzat a hagyományos képlet helyett számolható x y = a c B n + (a c + b d + (a b)(d c)) B n/2 + b d módon is. Noha ez bonyolultabbnak tűnik, mint a klasszikus képlet, mégis ez csak 3 szorzást és 4 összeadást igényel! Így a költség: T(n) = 3 T(n/2) + c n, azaz a = 3, b = 2, log 2 3 =,59, c n-re igaz, hogy O(n,59 ε )-os, így az. eset áll fent Tehát T(n) = c n log 2 3 c n,59 Megj.: c nagyobb, mint az előbb (a több + miatt) a módszert csak nagyobb számokra érdemes alkalmazni 8

Strassen mátrixszorzó eljárása Legyen c c2 a a2 = b b c2 c22 a2 a22 b2 b A hagyományos rekurzív szorzó eljárás Az n n-es mátrixokra mind a hagyományos sima (már tudjuk), mind a hagyományos rekurzív szorzó eljárás költsége c n 3 Itt ugyanis összesen 8 db feleakkora méretű szorzást végzünk el (+ 4 db összeadást): c = a b + a 2 b 2 ; c 2 = a b 2 + a 2 b 22 ; c 2 = a 2 b + a 22 b 2 ; c 22 = a 2 b + a 22 b 2 Ennek költsége pedig (mester-tétel): T(n) = 8 T(n/2) + c n 2, és log 2 8 = 3, c n 2 -re igaz, hogy O(n 3 ε )-os, így T(n) = c n 3 Karacuba módszerének hatására Strassen észrevette, hogy a c ij részmátrixok kiszámíthatók 8 helyett 7 db (!) kisebb méretű szorzással is: Legyen ugyanis u 0 = (a + a 22 ) (b + b 22 ), u = (a 2 + a 22 ) b, u 2 = a (b 2 b 22 ), u 3 = a 22 ( b + b 2 ), u 4 = (a + a 2 ) b 22, u 5 = ( a + a 2 ) (b + b 2 ), u 6 = (a 2 a 22 ) (b 2 + b 22 ) Ekkor c = u 0 + u 3 u 4 + u 6, c 2 = u 2 + u 4, c 2 = u + u 3, c 22 = u 0 + u 3 u 4 + u 6 Ez ellenőrizhető akár Maple-ben vagy Matlabban is Az összeadások száma ugyan 4-ről 8-ra nő, de nagyobb mátrixokra még így is jól járunk Ennek költsége: T(n) = 7 T(n/2) + c n 2, és log 2 7 = 2,8, c n 2 -re igaz, hogy O(n 2,8 ε )-os, így log 7 2,8 T(n) = c n 2 c n 2 22 9

Moduláris szorzás Cél: szeretnénk a nagypontosságú egészek (polinomok) szorzásának költségét még jobban megjavítani Létezik olyan környezet, ahol a szorzás költsége is csak annyi, mint az összeadásé és a kivonásé! A nagypontosságú egészet úgy tekintjük, mint modulárisan reprezentált számok egy vektorát Legyenek m 0, m,, m n páronként relatív prím egészek, és legyen m = m 0 m m n. A kínai maradéktétel szerint minden x < m nagypontosságú egész egyértelműen reprezentálható egy x = (x 0, x,, x n ) listával, ahol x i = x mod m i. Legyen most y egy másik nagypontosságú egész, amelyre y = (y 0, y,, y n ) Ha x + y < m, akkor az összeg egyértelműen reprezentálható x + y = (t 0, t,, t n ) alakban, ahol t i = x i + y i mod m i. Hasonlóan, ha x y < m, akkor a szorzat egyértelműen reprezentálható x y = (t 0, t,, t n ) alakban, ahol t i = x i y i mod m i. Példa Legyen m = 3 5, x = 2, y = 4. A reprezentációk: x = (2, 2), y = (, 4), x y = (2, 3). Így x y a normál reprezentációban: A szorzat 2 (mod 3), azaz lehet 2, 5, 8,, 4 A szorzat 3 (mod 5), azaz lehet 3, 8, 3; tehát 8 az eredmény. Gond: a moduláris reprezentációba történő oda- és visszakonverzió költsége általános esetben nagy (akár c n 2 -nél is nagyobb), így a módszert nem éri meg használni 0

Hatékony odakonverzió Célkitűzés: Adott egy x = (x 0, x,, x n- ) alappont-lista és a = (a 0, a,, a n- ) nagypontosságú egész (vagy polinom, együtthatókkal). Szeretnénk előállítani hatékonyan a T a = â transzformációs szorzatot, ahol Azaz Vagy T ˆ ˆ ˆ x,,, 0,,, 0,, 0 x K x a a K a = n a a Ka n n A T transzformációs mátrix az ún. Vandermonde-mátrix Végül az â vektor már moduláris reprezentációban van, és így egy másik bekódolt vektorral gyorsan összeszorozható ( )( ) ( )

Hatékony odakonverzió A fentiekből adódik, hogy minden i-re n aˆ i = a0 + axi + L + an xi n Az a( x) = a0 + ax + L + a n x helyettesítéssel látjuk, hogy a probléma lényegében egy max. (n )-edfokú polinom kiértékelése az (x 0, x,, x n- ) helyeken Hogyan tudunk hatékonyan polinomot kiértékelni? A hagyományos direkt módszer kevésbé hatékony ( pazarló ) Ígéretes ötlet: Horner-elrendezés (egymásba ágyazós kiértékelés) a(x) = a 0 + x (a + x (a 2 + x (a 3 + ))) = (( (a n- x + a n-2 )x + + a 2 )x + a )x + a 0 Az f(x) függvényérték kiszámításakor az összeadásokon kívül csak az x tényezővel való szorzás lép fel (Az eljárás a deriváltfv. értékének kiszámítására is használható, lásd Excel példa) A Horner-séma műveletigénye egy pontra O(n), azaz végeredményben összesen O(n 2 ) De: nekünk még ennél is jobb (kevesebb költségű) eljárás kellene Illusztráció: Horner-kiértékelés Excellel A Solver segítségével zérushelyek megkeresésére használjuk a Horner-sémát (f(x)-re és f'(x)-re is) 2

Horner-kiértékelés 3

Hatékony odakonverzió A Horner-sémánál kisebb költségű eljárás ötlete az, hogy speciális alappontokat választunk, és ezekre a pontokra ügyes, rekurzív kiértékelést alkalmazunk n Észrevétel: ha a( x) = a -ben n páros, akkor a(x) átírható a(x) = b(x 2 ) + x c(x 2 0 + ax + L + a n x ) alakba (i), ahol n / 2 n / 2 b( y) = a és 0 + a2 y + L+ a n 2 y c( y) = a + a3 y + L+ a n y Itt b(y) és c(y) foka legfeljebb fele a(x) fokának Segédállítás (lemma).: Legyenek {x 0, x,, x n } olyan alappontok, amelyek kielégítik a szimmetria feltételt, azaz amelyekre x (n/2)+i = x i, i {0,,, n/2 }-re. (ii) Legyen T(n) az eredeti max. (n )-edfokú polinom kiértékelésének költsége az alappontokon. Ekkor T() = 0 és T(n) = 2 T(n/2) + c (n/2). Biz.: (ii)-ből adódik, hogy (x 0 ) 2 = (x (n/2) ) 2, (x ) 2 = (x (n/2) + ) 2,, (x (n/2) ) 2 = (x (n ) ) 2, azaz csak n/2 négyzetre emelést kell elvégezni. Az eredeti a(x) polinom az {x 0, x,, x n } alappontok felett kiértékelhető úgy, hogy b(y)-t és c(y)-t értékeljük ki az {(x 0 ) 2, (x ) 2,, (x (n/2) ) 2 } alappontok felett (n/2 db), és végül felhasználjuk (i)-t. Ez eddig 2 T(n/2), ezen felül további költség az n/2 db szorzás a négyzetre emeléseknél, plusz még n/2 db szorzás (+összeadás, kivonás) a kisebb egyenlőségek összeépítésénél. 4

Diszkrét Fourier-transzformáció A gyors Fourier-transzformáció (FFT) az előző lemmát rekurzív módon használja fel Ehhez szükségünk van arra, hogy a szimmetria tulajdonság az {(x 0 ) 2, (x ) 2,, (x (n/2) ) 2 } alappontok felett (n/2 db) is érvényes maradjon, sőt, a továbbiakban is (n/4 db stb.) Hogyan lehet ilyen (nagyon speciális) alappontokat találni? Megoldás: olyan testek felett dolgozunk, ahol vannak primitív n. egységgyökök Definíciók: Az F test egy ω elemét primitív n. egységgyöknek nevezzük, ha ω n =, de ω k, minden k < n-re. Ha ω primitív n. egységgyök, akkor az {, ω, ω 2,, ω n } pontokat (n db) Fourier-pontoknak nevezzük. A Fourier-pontok felett végrehajtott T transzformációt (eml.: T a = â; tdk. a polinom kiértékelése) diszkrét Fourier-transzformációnak (DFT) nevezzük. A. oldal alapján írjuk fel a DFT trafó mátrixát! (ω felhasználásával) A primitív egységgyökök létezéséről Állítás: Ha p prím(hatvány), akkor a Z p véges test pontosan akkor tartalmaz primitív n. egységgyököt, ha n (p ) (Megj.: F q is értelmezhető, ha q prímhatvány, és ott is hasonló eredmény érvényes) 5

Diszkrét Fourier-transzformáció Példa. A komplex számok teste felett az n. egységgyököket az alapvektor 2π/n-es szögű forgatásaival kapjuk meg (e 2π i = alapján a 2π/n-es forgatáshoz e 2π i/n tartozik) Rajzoljuk le ezt! Így pl. az e π i/4 = ( + i)/ 2 primitív 8. egységgyök, ugyanakkor e π i/2 = i-re szintén teljesül, hogy ω 8 =, de itt ω 4 = is igaz, ezért i nem primitív 8. egységgyök Példa 2. A Z 7 véges testben a 4 negyedik egységgyök, mert 4 4 = 256 = (mod 7). Egyúttal primitív is, mert 4 2 = 6 és 4 3 = 3 (mod 7). A Fourier-pontok megfelelő halmaza: {, 4, 4 2, 4 3 } = {, 4, 6, 3} Az ehhez tartozó T (, 4, 6, 3) transzformáció (DFT) a (Z 7 ) 4 vektorteret önmagára képezi le, mátrixa pedig 4 6 3 3 6 4 Ellenőrizzük, hogy ezekre a pontokra teljesül a szimmetria tulajdonság! 6 6 6

Diszkrét Fourier-transzformáció Segédállítás 2.: Ha ω primitív n. egységgyök, akkor az n db Fourier-pont kielégíti a (ii) szimmetria feltételt (azaz: x (n/2)+i = x i ) Bizonyítás: Mivel ω primitív n. egységgyök, ezért (ω n/2+i ) 2 = ω n (ω i ) 2 = (ω i ) 2. Ebből (ω n/2+i ω i ) (ω n/2+i + ω i ) = ((ω n/2+i ) 2 (ω i ) 2 ) = 0. Ha ω n/2+i ω i = 0 lenne, akkor kiemelés után ω n/2 = adódna, ami ellentmond az alapfeltételnek (prim. egységgy.). Ezért ω n/2+i + ω i = 0, és ez a Fourier-pontokra megfelel (ii)-nek. Segédállítás 3.: Legyen ω primitív n. egységgyök, és n legyen páros. Ekkor a) ω 2 primitív n/2. egységgyök; b) az {, ω 2, ω 4,, ω n } n/2 db négyzetszám kielégíti a szimmetria feltételt. Bizonyítás: Mivel (ω 2 ) n/2 = ω n =, ezért ω 2 egy n/2. egységgyök. Tegyük fel, hogy nem primitív. Ekkor található k < n/2 úgy, hogy (ω 2 ) k =. Így viszont ω 2k =, úgy, hogy 2k < n, azaz ekkor ω nem lenne primitív n. egységgyök. A b) állítás az előző lemmából adódik (n helyére írjunk n/2-őt). A lemmából következik, hogy ha ω primitív n. egységgyök, akkor az ω által előállított Fourier-pontok halmazán az a(x) = b(x 2 ) + x c(x 2 ) egyenlőség rekurzívan kiértékelhető 7

Diszkrét Fourier-transzformáció Példa A Z 4 véges testben a 4 primitív 8. egységgyök A megfelelő Fourier-pontok: {, 4, 9, 3,, 4, 9, 3} (Pl. 4 2 = 32 és 4 3 = 38 (mod 4)) A szimmetria feltétel teljesül A 4 2 = 9 egy primitív 4. egységgyök, az {, 9,, 9} Fourier-pontokkal A szimmetria feltétel itt is teljesül Végül, 9 2 = egy primitív 2. egységgyök, az {, } Fourier-pontokkal A szimmetria feltétel itt is teljesül Tétel: Legyen ω primitív n. egységgyök. Ekkor az n db Fourier-pont által meghatározott diszkrét Fourier-transzformáció (DFT; eml.: T a = â) összesen O(n log n) idő alatt végrehajtható. Bizonyítás: Az igazolást az n = 2 m esetre végezzük el. A 3. segédállításból következik, hogy a T(n) költségfüggvényre T() = 0, T(2 k ) = 2 T(2 k ) + c 2 k, k -re. Ekkor T(n) = T(2 m ) = 2 T(2 m ) + c 2 m = 2 2 T(2 m 2 ) + c 2 m 2 = = 2 3 T(2 m 3 ) + c 2 m 3 = = 2 m T() + c 2 m m = c 2 m m = c n/2 log n. Azt a módszert, amelyet a DFT rekurzív alkalmazásával kapunk az a(x) Fouriertranszformáltjának meghatározására, gyors Fourier-transzformációnak (FFT) nevezzük 8

Diszkrét Fourier-transzformáció Példa Legyen a(x) = 5x 6 + x 5 + 3x 3 + x 2 4x +, Z 4 [x]-beli polinom. Az a(x) polinomot ki akarjuk értékelni az {, 4, 9, 3,, 4, 9, 3} Fourier-pontok felett. Eml.: a Z 4 véges testben a 4 primitív 8. egységgyök Ez a feladat lényegében ugyanaz, mint a(x) = b(y) + x c(y); y = x 2 felhasználásával b(y) = 5y 3 + y + és c(y) = y 2 + 3y 4 kiértékelése az {, 9,, 9} Fourier-pontok felett A b(y) = d(z) + y e(z); z = y 2 átírással d(z) =, e(z) = 5z +, és így b(y) kiértékelése a fenti 4 pont felett ugyanaz, mint d(z) és e(z) kiértékelése az {, } Fourier-pontok felett. Hasonló érvelés alkalmazható c(y) kiértékelésére is. Az eredmény felépítése: d() =, e() = 6, ebből b() = d() + e() = 7, b( ) = d() + ( ) e() = 5 d( ) =, e( ) = 4, ebből b( 9) = d( ) + ( 9) e( ) = + 36 = 37 = 4 (mod 4), b(9) = d( ) + 9 e( ) = 36 = 35 = 6 (mod 4) Hasonló módon (részletezés nélkül) c() = 0, c( ) = 2, c( 9) = 9, c(9) = 9 Feljebb lépve, a(x) Fourier-transzformáltjának elemei is számolhatók, pl. a(3) = b(9) + 3 c(9) = 0, a( 3) = b(9) 3 c(9) = 9 Végül A := FFT(8, 4, a(x)) = (7,, 8, 9, 7, 7, 8, 0) 9

Gyors Fourier-transzformáció Algoritmus a gyors Fourier-transzformáció végrehajtására Feltétel: léteznek n-edik egységgyökök, azaz az alaptartomány támogatja a műveletsort N / 2 i= 0 N / 2 i= 0 Az eredmény felépítése: A 0 := B 0 + C 0 ; A N/2+0 := B 0 C 0 ; A := B + ω C ; A N/2+ := B ω C ; A 2 := B 2 + ω 2 C 2 ; A N/2+2 := B 2 ω 2 C 2 ; A 3 := B 3 + ω 3 C 3 ; Pl. (előző slide): a(3) = b(9) + 3 c(9), ami tdk. A 8 = B 4 ω 4 C 4, ahol n = 8 20

Inverz Fourier-transzformáció Miután elvégeztük a vektorok szorzását a moduláris reprezentációban, szeretnénk visszakonvertálni az eredményt az eredeti tartományba. Ehhez a T transzformáció inverzét kell felhasználnunk, azaz T -et. ( x0, x, K, x n ) Probléma: Egy mátrix inverzének meghatározása általános esetben (pl. Gausseliminációval) O(n 3 ) időigényű/bonyolultságú feladat Szerencsére a Vandermonde-mátrix erősen speciális mátrix, így most léteznek ennél hatékonyabb módszerek is (Pl. Newton-, ill. Lagrange interpolációval O(n 2 )-re vihetjük le a költséget, igaz, még ez sem elég ) Kulcsészrevétel (részletes igazolás nélkül): a megfelelő Fourier-pontok felett képzett V mátrix inverze (az inverz diszkrét Fourier-transzformációhoz) előáll úgy, hogy V-ben minden ω i helyére ω i -t írunk, és minden koordinátát osztunk n-nel, azaz n V(, ω, ω, K, ω ) = n M L 2 ( n ) 2 n ) ω ω ( n ) ω ω 2( n ) Így V inverze rendkívül gyorsan felírható M M L M L ω ω M ( n )( n ) = n 2 ( V(, ω, ω, K, ω ) 2

Inverz Fourier-transzformáció Példa 2. (folyt.) Eml.: a Z 7 véges testben a 4 primitív negyedik egységgyök Ekkor az inverz transzformáció egy lineáris trafó a (Z 7 ) 4 vektortérből önmagába, amelynek mátrixa 4 4 6 3 3 3 = 3 6 3 4 3 3 4 6 Definíció: Az inverz diszkrét Fourier-transzformáció (IDFT) az {, ω, ω 2,, ω n } Fourier-pontok felett q0, q,,,, K, qn n ω K ω j k ahol = q j = n q k ( ω ) k 0 Eml.: az ismert T n a, a, K, a aˆ, aˆ, K, aˆ Tétel: a DFT és az IDFT transzformációk egymás inverzei 6 6 trafóra A bizonyítást nem közöljük, csak szemléltetés: a bekonverzióra a visszakonverzióra pedig n T ( n ) ( ) q = p, ω, K, ω 3 6 4 3 4 3 ( ) ( ) ( ),,, 0 = K ω n 0 n 4 S n K ( ) ( ) ( ) = q0, q,, qn ω i a j j= 0 aˆ = n i ( ω ) T n ( ) p = q, ω, K, ω j 22

Gyors polinomszorzás FFT-vel Ha az n-edfokú a(x) és az m-edfokú b(x) polinomokat össze akarjuk szorozni, és az F együtthatótestünk tartalmaz N-edik primitív egységgyököt (ahol N > n + m, és N 2 hatvány), akkor a gyors szorzó eljárás használható N i= 0 Az eljárás végrehajtásának műveletigénye a klasszikus O(m n) helyett a fentiek szerint O((m + n) log (m + n)), bár az ordóban levő konstans nagyobb A módszert akkor éri meg használni, ha m + n 600 (Geddes) 23

Gyors polinomszorzás FFT-vel Példa Szorozzuk össze az a(x) = 3x 3 + x 2 4x + és a b(x) = x 3 + 2x 2 + 5x 3 polinomot a Z 4 véges testben! Felhasználjuk a 4-et, amely itt primitív 8. egységgyök Erre teljesül a fokkorlát Külön részletezés nélkül a fentihez hasonló módon kapjuk, hogy A := FFT(8, 4, a(x)) = (, 9, 9, 8, 3, 6, 9, 3) B := FFT(8, 4, b(x)) = (5, 5, 0, 4, 7, 6, 0, 6) Összeszorzással (moduláris repr.) C := (5, 4, 0, 6, 20, 4, 5, 7), amely a c(x) = a(x) b(x) transzformáltja (FFT-vel) C-ből c(x) előállításához használjuk az inverz transzformációt c := 8 FFT(8, 3, 7x 7 + 5x 6 4x 5 + 20x 4 6x 3 + 4x + 5) Ennek eredménye c := ( 3, 7, 20,, 3, 7, 3, 0) Így végül c(x) = 3x 6 + 7x 5 + 3x 4 x 3 + 20x 2 + 7x 3 24

FFT alkalmazás Fourier-analízis Alkalmazása: tipikusan periodikus jelekből vett minta (idősor) elemzésére Lépések Példa Adatok transzformációja FFT módszerrel a komplex frekvenciatartományba Nem kívánt frekvenciájú komponensek kizárása, pl. sávszűréssel Inverz transzformációval a transzformált és szűrt adatokból visszakapjuk az eredeti jel megszűrt összetevőjét Az időfüggvényből 2 hatvány (pl. n = 52) elemszámú mintát veszünk egyenlő lépésközzel, τ időközönként (ez /τ mintavételi frekvenciát jelent) A frekvenciaspektrum F = /τ frekvenciánként ismétlődik n elemű minta esetén ez f = F/n frekvencia-felbontású spektrumot jelent (egy periódusra) Az időablak T = nτ (tfh. a jel eszerint periodikus), és most F = 24000 Ekkor f = 24000/52 = 46,874 és τ = /24000 = 0,000042 és T = 0,02333 Mintánkban egy 200 Hz-es szinuszos időfüggvényre két magasabb frekvenciájú zavart ültetünk Egy 0, amplitúdójú 200 Hz-es szinuszos jelet, és Egy 0,2 amplitúdójú 3000 Hz-es koszinuszos jelet adunk hozzá 25

FFT alkalmazás Fourier-analízis (folyt.) Szemléltetés Excelben Alapadatok táblázata és grafikonok F konstans külön felvéve 26

FFT alkalmazás Fourier-analízis (folyt.) Előállítjuk a zajos jel Fourier transzformáltját Ehhez az Adatelemzés menü Fourieranalízis menüpontját választjuk, a forrástartomány a (feliratos) zajos jel Elkészítjük a frekvenciatartományban a jel spektrumát Ehhez kiszámítjuk a transzformált értékek abszolút értékét és ábrázoljuk 27

FFT alkalmazás Fourier-analízis (folyt.) Az (f0 =) 000 Hz feletti részt levágjuk a frekvenciatartományban (A szimmetria miatt f0 és F f0 közötti részt kell 0-vá tenni; az N darab spektrumvonalból csak N/2 független!) Visszatranszformálunk az időtartományba Itt is a Fourier-analízis elemző eszközt használjuk, csak be kell jelölni az inverz-transzformáció jelölőnégyzetét A szűrt jelet és összehasonlítjuk az alapjellel (grafikon) Külön köszönet: dr. Szörényi Miklós kollégámnak 28

Ajánlott irodalom Cormen, Leiserson, Rivest: Algoritmusok, Műszaki Kiadó, Budapest, 998 (több kiadás) Geddes, Czapor, Labahn: Algorithms for Computer Algebra (6th pr./ed.), Kluwer Acad. Press, Boston, 999 Gács Péter, Lovász László: Algoritmusok, Tankönyvkiadó, Budapest, 978 (több kiadás) Joachim Gathen, Jürgen Gerhard: Modern Computer Algebra (3rd ed.), Cambridge Univ. Press, 203 Donald E. Knuth: A számítógép-programozás művészete 2. (2. kiadás), Műszaki Könyvkiadó, Budapest, 994 29