matematik | kth - sf1538projektisimuleringsteknik · 2015-11-18 · periodiskafunktioner...

28
Fouriertransformation och spektralmetoder Michael Hanke Skolan för teknikvetenskap SF1538 Projekt i simuleringsteknik 1 (28)

Upload: others

Post on 01-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Fouriertransformation och spektralmetoder

Michael Hanke

Skolan för teknikvetenskap

SF1538 Projekt i simuleringsteknik

1 (28)

Page 2: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Introduktion

Varför Fouriertransformation?• Många processer är periodiska.• Den snabba Fouriertransformationen är ett kraftfullt vertyg för attundersöka sådana processer, både teoretiskt och numeriskt

I detta kapitel gör vi tre saker:• Vi undersöker hur man kan approximera periodiska funktioner medhjälp av sinus-/kosinusfunktioner och komplexaexponentialfunktioner.

• Vi introducerar en effektiv algoritm för att göra det numeriskt (FFT).• Vi använder Fouriertransformationens egenskaper för att konstrueraen ny numerisk metod för att lösa partiella differentialekvationer.

2 (28)

Page 3: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Periodiska funktioner

• Vi undersöker periodiska funktioner f definerad på R med perioden2π, dvs f (x + 2π) = f (x) för alla x ∈ R. Därför räcker det med attanta att funktionen är definerat på intervallet [−π, π].

• Funktionen kallas för jämn om f (x) = f (−x) för alla x ∈ R.• Funktionen kallas för udd om f (x) = −f (−x) för alla x ∈ R.

3 (28)

Page 4: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Fourier sinusserie

• Prototyp av udda 2π-periodiska funktioner: sin(nx).• Fourier sinusserie

S(x) =∞∑

n=1

bn sin(nx)

Q: Vilka funktioner f : [−π, π]→ R kan representeras bragenom en sinusserie?

A: Väldigt många (udda) funktioner om man mäter felet iminsta kvadratmening (minsta kvadratanpassning),

‖SN − f ‖2 =12π

∫ π

−π(SN(x)− f (x))2dx .

Här betecknar SN de första N termer i S .

4 (28)

Page 5: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Hur beräknar man koefficienterna?• MVi har att: ∫ π

−πsin(nx) sin(kx)dx =

{0, om n 6= k,π, om n = k.

• Antag att (f ojämn)

f (x) =∞∑

n=1

bn sin(nx).

• Multiplicera ekvationen med sin(kx) och integrera:∫ π

−πf (x) sin(kx)dx =

∞∑n=1

bn

∫ π

−πsin(nx) sin(kx)dx = bkπ.

• Därmed får vibn =

∫ π

−πf (x) sin(nx)dx .

5 (28)

Page 6: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Exempel: Rektangulär våg

Bild fattas!!!!

SW (x) =

−1, om x ∈ (−π, 0),

1, om x ∈ (0, π),

0 om x = −π, 0, π.

Fourier sinusserie:

SW (x) =4π

[sin x1

+sin 3x3

+sin 5x5

+sin 7x7

+ · · ·]

6 (28)

Page 7: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Exempel (cont)

−3 −2 −1 0 1 2 3

−2

−1.5

−1

−0.5

0

0.5

1

1.5

2

7 (28)

Page 8: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Gibbs fenomen

−3 −2 −1 0 1 2 3

−2

−1.5

−1

−0.5

0

0.5

1

1.5

2

2.2 2.4 2.6 2.8 3 3.2 3.40

0.2

0.4

0.6

0.8

1

SW

N=9

N=15

N=21

Gibbs fenomen: Partialsummor håller konstant avstånd näradiskontinuiteter!(men konvergerar i minsta kvadratmening)

8 (28)

Page 9: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Fourier kosinusserie• För jämna funktioner är det lämpligt att använda cosinusfunktionercos(nx).

• Fourier cosinusserie:

C (x) = a0 +∞∑

n=1

an cos(nx).

• Vi har

∫ π

−πcos(nx) cos(kx)dx =

0, om n 6= k,2π, om n = k = 0,π, om n = k > 0.

• På samma sätt som ovan får vi (f jämn)

an =

{12π

∫ π−π f (x)dx , om k = 0,

∫ π−π f (x) cos(nx)dx , om k > 0.

9 (28)

Page 10: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Exempel: RampFunktionen fås genom att integrera SW :

RR(x) = |x |.

−3 −2 −1 0 1 2 3

−0.5

0

0.5

1

1.5

2

2.5

3

3.5

4

Fourier kosinusserie:

RR(x) =π

2− π

4

[cos x12 +

cos 3x32 +

cos 5x52 +

cos 7x72 + · · ·

]Obs: Koefficienterna fås genom integration av de för SW .

10 (28)

Page 11: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Fourierserie: Allmäna periodiska funktioner

Låt f : [−π, π]→ R vara en periodisk funktion. Sedan gäller:• f = fjämn + fojämn

• fjämn = 1/2(f (x) + f (−x))

• fojämn = 1/2(f (x)− f (−x))

Därför kan vi skriva f som en summa av sinus- och kosinusserier:

f (x) = fjämn + fojämn

= a0 +∞∑

n=1

an cos(nx) +∞∑

n=1

bn sin(nx).

11 (28)

Page 12: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Fourierserie: Den komplexa versionen

• Moivres teorem: e iα = cosα + i sinα.• Låt ck = (ak − ibk)/2, c−k = (ak + ibk)/2 = ck .

cke ikx + c−ke−ikx = ck(cos kx + i sin kx) + c−k(cos kx − i sin kx)

= (ck + c−k) cos kx + i(ck − c−k) sin kx= ak cos kx + bk sin kx .

• Därmed får vi

f (x) =∞∑

n=−∞cne inx .

• Från och med nu använder vi alltid den komplexa versionen!• Obs: Även om f är en reell funktion så är koefficienterna cnvanligtvis komplexa.

12 (28)

Page 13: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Fourierserie (cont)

• Vanligt beteckning:fn ≡ cn.

• Det är enkelt att verifiera: n = 0,±1,±2, . . .

fn =12π

∫ π

−πf (x)e−inxdx

13 (28)

Page 14: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Intressanta egenskaper• Parsevals identitet∫ π

−π|f (x)|2dx = ‖f ‖22 = 2π

∞∑n=−∞

|fn|2

Därför gäller

f ∈ L2(−π, π)⇔∞∑

n=−∞|fn|2 <∞.

• Derivator:

f (p)(x) =∞∑

n=−∞(in)p fne inx .

• Låt Hpper vara mängden av all 2π periodiska funktioner som är p

gånger (generaliserad) deriverbara. Då gäller

f ∈ Hpper ⇔

∞∑n=−∞

k2p|fn|2 <∞.

Koefficienterna avtar snabbare ju oftare f är deriverbar!14 (28)

Page 15: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

IntervalltransformationerQ: Antag att vi använder “basintervallet” (0, 2π) istället för

(−π, π). Vad händer med koefficienterna?A: Ingenting eftersom alla inblandade funktioner har samma

period 2π.Q: Antag att funktionen f har perioden T istället för 2π. Hur

kommer vi fram till en lämplig Fourierserie?A: Härledningen görs i två steg:

• Perioden T måste vara en “multiple” av perioden avde komplexa exponentialfunktionerna. Låt ω = 2π/T .Sedan görs ansatsen

f (x) =∞∑

n=−∞fne inωx

• Genom ansatsen ovan fås

fn =1T

∫ T

0f (x)e−inωxdx =

1T

∫ T/2

−T/2f (x)e−inωxdx .

15 (28)

Page 16: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Diskret Fouriertransformation (DFT)• Standardversionen av DFT bygger på intervallet (0, 2π).• Låt (0, 2π) vara indelat i N ekvidistanta delinterval,

h =2πN, xj = jh.

• Integralen approximeras genom trapetsregeln. Medf (0) = f (2π) = f (xN) fås

12π

∫ 2π

0f (x)e−inxdx ≈ h

N−1∑j=0

fje−inxj =1N

N−1∑j=0

fj(e−ih)jkn

=1N

N−1∑j=0

fj w jn

=: fn

Här: fj = f (xj) och w = e ih.• Sats: (invers DFT)

fj =N−1∑n=0

fnwnj

16 (28)

Page 17: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Matlabs DFT

• Matlab har två funktioner för DFT och den inversa DFT: fft ochifft.

• Båda använder en annan normering: Faktorn 1/N finns inbyggd iifft, medan den fattas i fft.

• Ibland delas faktorn så att båda transformationer ser mer“symmetriska” ut: Istället för 1/N används faktorn 1/

√N i DFT och

dess invers.

17 (28)

Page 18: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Snabb Fouriertransformation (FFT)

• Antalet räkneoperationer för DFT: N2 komplexa multiplikationer ochadditioner (vi antar att de f -oberoende koefficienterna w jk redan harberäknats i förväg.) Väldigt dyrt!

• Om N är en potens av 2 så kan man härleda en(divide-and-conquer) algoritm som bara har komplexitetenO(N logN): Cooley och Tukeys FFT

• Exempel: N = 212

• naiv algoritm: 224 ≈ 1.7 · 107 operationer• FFT: 6× 1012 ≈ 2.4 · 104 operationer (nästan 1000 gånger snabbare)

18 (28)

Page 19: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Förskjuten FFT

• Att använda intervallet (0, 2π) leder till standardalgoritmen.• Vad händer om man använder intervallet (−π, π) istället?• Lite algebra leder till (N jämn!)

fn =1N

N/2−1∑l=−N/2

fle−ihnl

fl =

N/2−1∑n=−N/2

fne ihnl

• De diskreta koefficienterna kommer att ha olika ordningar (men äridentiska!):

DFT (f0, f1, . . . , fN−1)

förskjuten DFT (fN/2, fN/2+1, . . . , fN−1, f0, . . . , fN/2−1)

• Det är just vad matlabs fftshift åstadkommer!

19 (28)

Page 20: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Spektralinterpolation• DFT och dess invers kan redan beräknas om bara de diskreta värden fj är

kända.• Exponentialuttryck kan däremot enkelt fortsättas på hela intervallet

(0, 2π) resp (−π, π):e ihnl = e inxl

• För givna fj kan vi beräkna deras DFT fl och sedan definera

ΠN f (x) :=N−1∑n=0

fne inx

• Enligt Sats är Πf en interpolation till funktionen f !Interpolationsfunktionen kallas för trigonometriskt polynom.

• På samma sätt kan vi använda den “symmetriska” versionen:

Πc,N f (x) :=

N/2−1∑n=−N/2

fne inx

• Obs: ΠN f 6= Πc,N f !!• Mellan interpolationsnoderna xl har Πc,N vanligtvis bättre noggrannhet än

ΠN .20 (28)

Page 21: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Spektralinterpolation (cont)

• Vi såg tidigare att koefficienterna i Fourierserien avtar väldigt snabbtom funktionen f är många gånger deriverbar.

• Det antyder att Fourierserien konvergerar ju snabbare ju oftarefunktionen är deriverbar.

• Man kan visa: Om funktionen f tillhör C∞[−π, π], så är

‖f − Πc,N‖2 ≤ C1e−C2N

• Konvergensen är snabbare än vilken polynom som helst. Det kallasför exponentiell konvergens.

21 (28)

Page 22: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Spektralinterpolation (cont)

Q: Kan en funktion entydigt återfås genom att användadiskreta värden?

A: Nej! Frågan går ut på att kunna konstruera en entydiginterpolation.Däremot går det bra om vi använder a-priori information(t ex funktionen är ett polynom av ett visst grad).

Q: Vilken klass kan vi använder om vi bara tittar påperiodiska funktioner och trigonometriska polynom?

A: Tag den enkla periodiska funktionen f (t) = ae i(ωx+φ). Vibehöver (minst) två värden i intervallet [0, ω/(2π)) för attkunna identifiera de två parametrarna entydigt.

22 (28)

Page 23: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Nyquist sampling theorem

• Låt T (= h) vara steglängden för “sampling” av signalen.• Definition: Nyquist sampling rate: T = π/ω.

Sats:Låt sampling rate T vara given. Frekvenserna som är högre än Nyquistfrequensen ωN = π/T kan inte bestämmas. En signal med högre frekvensän ωN mappas till en signal med lägre frekvens. Denna effekt kallas föraliasing.

23 (28)

Page 24: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Spektralmetoder: Derivering

Ide: Om vi har en funktion given vid diskreta noder så kan vi fåen approximation till derivatan genom att interpolerafunktionen med en deriverbar funktion p(x) och sedansätter u′(xj) ≈ p′(xj).

Exempel

• Stegvis linjär interpolation. u′(xj) ≈ uj+1−ujh

• Stegvis kvadratiskt interpolation: u′(xj) ≈ uj+1−uj−12h

24 (28)

Page 25: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Derivering (cont)

Använd spektralinterpolation,

p(x) = Πc,Nu =

N/2−1∑n=−N/2

une inx

Derivatan:

p′(x) =

N/2−1∑n=−N/2

unine inx

Approximation:

p′(xj) =

N/2−1∑n=−N/2

unine injh

25 (28)

Page 26: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Derivering: Algoritm

1 Låt vektorn u vara given.2 Beräkna FFT u av u.3 Använd fftshift för att förskjuta intervallet till (−π, π).4 Beräkna vektorn (. . . , inun, . . .).5 Använd fftshift en gång till.6 Till sist, beräkna p′ genom ifft.

Obs: Man kan omordna algoritmen lite så att det bara behövs enfftshift (jf anteckningarna).

26 (28)

Page 27: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Spektralmetoder för PDE

• Genom att använda deriveringsalgoritmen är det enkelt attkonstruera en linjemetod för PDE.

• Metoden konvergerar väldigt snabbt om lösningen är glatt ochperiodiskt.

• Komplexiteten med FFT är O(N logN) jämfört med komplexitetenO(N) för polynomiala derivator.

27 (28)

Page 28: Matematik | KTH - SF1538Projektisimuleringsteknik · 2015-11-18 · Periodiskafunktioner Viundersökerperiodiskafunktionerf defineradpåR medperioden 2ˇ,dvsf(x + 2ˇ) = f(x) förallax

Sammanfattning

• Approximation av periodiska funktioner med hjälp av “enkla”periodiska funktioner.

• Analys av periodiska fenomen med hjälp av DFT ochtrigonometriska polynom.

• Spektralmetoder för partiella differentialekvationer.

28 (28)