den hurtige fourier- transformationkeld/teaching/algoritmedesign_f08/slides/pdf/07_… · 1 den...

18
1 Den hurtige Fourier- transformation Jean Baptiste Joseph Fourier (1768-1830)

Upload: others

Post on 10-Jun-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

1

Den hurtige Fourier-transformation

Jean Baptiste Joseph Fourier (1768-1830)

Page 2: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

2

Polynomier

p(x) = aixi

i= 0

n!1

"

p(x) = a0

+ a1x + a

2x2

+!+ an!1xn!1

eller

Generelt:

432 43825)( xxxxxp ++++=

Polynomium:

Page 3: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

3

Evaluering

Horner’s regel:Givet koefficienter (a0, a1, a2, …, an-1), der definerer polynomiet

For givet x kan vi evaluere p(x) i O(n) tid ved hjælp af ligningen

!"

=

=

1

0

)(n

i

i

ixaxp

)))((()( 12210 !!!!

+++++=nn

xaaxaxaxaxp

Evaluate(A, x): [hvor A=(a0, a1, a2,…, an-1)]if n=1 then return a0else

A’ ← (a1, a2, …, an-1) [antag, at dette kan gøres i O(1) tid]return a0 + x * Evaluate(A’, x)

Page 4: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

4

Multiplikation af polynomier

Givet koefficienter (a0, a1, a2, …, an-1) og (b0, b1, b2, …, bn-1), som definerer topolynomier, p(x) og q (x). Bestem polynomiet p(x)q(x), defineret ved

En lige ud ad landevejen evaluering tager O(n2) tidDen “magiske” FFT kan gøre det i O(n log n) tid

p(x)q(x) = cixi

i= 0

2n!2

"

!=

"=

i

j

jiji bac0

hvor

Page 5: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

5

Interpolation

Lad der være givet n punkter i planet med forskellige x-koordinater. Da findes der præcis ét (n-1)’te-grad polynomium, der går igennemalle disse punkter

x

y = p(x)

xj

yj

Page 6: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

6

Alternativ metode til beregning af p(x)q(x):Beregn p(x) for 2n værdier, x0, x1, …, x2n-1 Beregn q(x) for de samme 2n værdierFind det (2n-1)’te-grad polynomium, r(x), der går igennem punkterne

{(x0, p(x0)q(x0)), (x1, p(x1)q(x1)), …, (x2n-1, p(x2n-1)q(x2n-1))}Beregn værdien af r(x)

En lige ud af landevejen evaluering tager uheldigvis stadig O(n2) tid, da vi forhvert af de 2n punkter skal anvende Horner’s regel (som tager O(n) tid)Den “magiske” FFT kan gøre det i O(n log n) tid ved at vælge 2n punkter, der erlette at evaluere…

Interpolation og multiplikation

Page 7: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

7

Primitive enhedsrødder

Et tal ω er en primitiv n’te enhedsrod, n > 1, hvis• ω n = 1• Tallene 1, ω, ω 2, …, ω n-1 er indbyrdes forskellige

Page 8: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

8

2, 6, 7, 8 er 10’nde enhedsrødder i Z*11

22=4, 62=3, 72=5, 82=9 er 5’te enhedsrødder i Z*11

2-1=6, 3-1=4, 4-1=3, 5-1=9, 6-1=2, 7-1=8, 8-1=7, 9-1=5

x x^2 x^3 x^4 x^5 x^6 x^7 x^8 x^9 x^10

1 1 1 1 1 1 1 1 1 1

2 4 8 5 10 9 7 3 6 1

3 9 5 4 1 3 9 5 4 1

4 5 9 3 1 4 5 9 3 1

5 3 4 9 1 5 3 4 9 1

6 3 7 9 10 5 8 4 2 1

7 5 2 3 10 4 6 9 8 1

8 9 6 4 10 3 2 5 7 1

9 4 3 5 1 9 4 3 5 1

10 1 10 1 10 1 10 1 10 1

Eksempel 1 (Z*11)

Page 9: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

9

Eksempel 2

Det komplekse tal e2πi/n er en primitiv n’te enhedsrod, hvori = !1

e2πi/n = cos(2π/n) + i sin(2π/n)

ω0 = 1

ω1

ω2 = iω3

ω4 = -1

ω5

ω6 = -i

ω7

n = 8

Page 10: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

10

Egenskaber

Inversegenskaben: Hvis ω er en primitiv n’te enhedsrod, så er ω -1 = ω n-1

Bevis: ωωn-1 = ωn = 1

0

1

0

=!"

=

n

j

kj#Annuleringsegenskaben: For -n<k<n og k ≠0 er

01

11

1

1)1(

1

1)(

1

1)(1

0

=!

!=

!

!=

!

!=

!

!="

!

=

kk

k

k

kn

k

nkn

j

kj

###

#

#

##

Bevis:

Page 11: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

11

Flere egenskaber

Reduktionsegenskaben: Hvis ω er en primitiv 2n’te enhedsrod, så er ω 2 en primitiv n’te enhedsrod

Bevis: Hvis 1,ω,ω2,…,ω2n-1 er indbyrdes forskellige, så er 1, ω2, (ω2)2, …, (ω2)n-1 også indbyrdes forskellige

Reflektionsegenskaben: Hvis n er lige, er ω n/2 = -1

Bevis: Ved brug af annuleringsegenskaben for k = n/2 fås

)1)(2/(0 2/2/02/02/01

0

)2/( nnnnn

j

jnn !!!!!!!! +=++++++=="

#

=

!

ω k+n/2= -ω kFølgesætning: For n lige gælder

Page 12: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

12

Den diskrete Fourier-transformation

Givet koefficienterne (a0, a1, a2, …, an-1) for et (n-1)’te grad polynomium p(x)Den diskrete Fourier-transformation (DFT) evaluerer p for værdierne 1, ω, ω 2, …, ω n-1

Vi beregner (y0, y1, y2, …, yn-1), hvor yj = p(ω j), d.v.s.

!"

=

=

1

0

n

i

ij

ijay #

Den inverse diskrete Fourier-transformation bestemmer koefficienterne for et(n-1)’te grad polynomium givet dets værdier for 1, ω, ω2, …, ω n-1

På matrix-form: y = Fa, hvor F[i,j] = ω ij

På matrix form: a = F -1y, hvor F -1[i,j] = ω -ij/n

Page 13: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

13

Korrekthed af den inverse DFT

A[i, j] =1

n!( j" i)k

k= 0

n"1

# = 0 (ved brug af annuleringsegenskaben)

Hvis i og j er forskellige, har vi

!"

=

"=

1

0

1],[

n

k

kjki

njiA ##

Bevis: Lad A=F -1F. Vi ønsker at vise, at A = I, hvor

1111

],[1

0

01

0

==== !!"

=

"

=

"nnnn

iiA

n

k

n

k

kiki###

Hvis i = j, har vi

DFT og den inverse DFT er faktisk inverse operationer

Page 14: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

14

Foldning

DFT og den inverse DFT kanbruges til at multiplicere topolynomier

Derfor kan vi bestemmekoefficienterne for produkt-polynomiet hurtigt, hvis vikan bestemme DFT og densinverse hurtigt

Pad with n 0's Pad with n 0's

[a0,a

1,a

2,...,a

n-1] [b

0,b

1,b

2,...,b

n-1]

DFT DFT

[a0,a

1,a

2,...,a

n-1,0,0,...,0] [b

0,b

1,b

2,...,b

n-1,0,0,...,0]

[y0,y

1,y

2,...,y

2n-1] [z

0,z

1,z

2,...,z

2n-1]

Component

Multiply

inverse DFT

[y0z

0,y

1z

1,...,y

2n-1z

2n-1]

[c0,c

1,c

2,...,c

2n-1]

(Convolution)

Page 15: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

15

Den hurtige Fourier-transformation

Den hurtige Fourier-transformation (FFT) er en effektiv algoritme tilberegning af DFT

FFT er baseret på paradigmet del-og hersk:Hvis n er lige, opdeles polynomiet

i polynomierne

Vi har da, at

Page 16: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

16

FFT-algoritmen

Køretiden er O(n log n)

Page 17: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

17

Givet to N-bit heltal I og J. Beregn IJ

Antag, at vi kan multiplicere ord af længde O(log N) bit i konstant tidFind et primtal p = cn + 1, der kan repræsenteres i et ordSæt m = ⎣(log p) /2⎦, således at I og J kan betragtes som vektorer af længde n bestående af m-bit ordBestem en primitiv enhedsrod:

Find en generator x i Z*p .

Så er ω = xc en primitiv n’te enhedsrod i Z*p

Foretag FFT og invers FFT for at beregne foldningen C af I med J

Multiplikation af store heltal

Beregn

K er værdien af IJBeregningerne tager O(n log n) tid, eller O(N), hvis n vælges, så n er O(N / log N)

!"

=

=

1

0

2

n

i

mi

icK

Page 18: Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den hurtige Fourier-transformation Jean Baptiste Joseph Fourier (1768-1830)

18

Eksperimentelle resultater

Log-log skala viser at sædvanlig multiplikation kører i kvadratisk tid,mens FFT-versioner kører i næsten lineær tid.