194 Numerik I 5 Interpolation und numerische Approximation 5.1 Polynominterpolation 5.2 Spline-Interpolation 5.3 Diskrete Fourier-Transformation 5.4 Schnelle Fourier-Transformation (FFT) 5.5 Eine Anwendung 5 Interpolation und numerische Approximation TU Bergakademie Freiberg, WS 2011/12 195 Numerik I Das (allgemeine) Interpolationsproblem. Zu gegebener Funktion f : [a, b] → R und gegebenen Stützstellen (Knoten) a ≤ x0 < x1 < x2 < · · · < xn ≤ b soll eine einfache“ Funktion p : [a, b] → R konstruiert werden, die die Inter” polationsbedingungen p(xi ) = f (xi ) (i = 0, 1, . . . , n) erfüllt. Wozu? • f ist nur an diskreten Punkten bekannt (Messwerte), aber eine geschlossene Formel für f ist auf ganz [a, b] erwünscht (z.B. um f an Zwischenstellen x ∈ [a, b] \ {x0 , x1 , . . . , xn } auszuwerten), • f ist kompliziert“ und soll durch eine einfache“ Funktion angenähert ” ” 0 werden (z.B. um die Ableitung f (x), x ∈ [a, b], oder das Integral Rb f (x)dx näherungsweise zu bestimmen). a 5 Interpolation und numerische Approximation TU Bergakademie Freiberg, WS 2011/12 196 Numerik I 5.1 Polynominterpolation Polynomiale Interpolationsaufgabe. Zu gegebenen (paarweise verschiedenen) Knoten a ≤ x0 < x1 < x2 < · · · < xn ≤ b und gegebenen Funktionswerten f0 , f1 , . . . , fn ∈ R soll ein Interpolationspolynom p(x) = πn xn + πn−1 xn−1 + · · · + π1 x + π0 ∈ Pn (mit reellen Koeffizienten π0 , π1 , . . . , πn = n + 1 Freiheitsgrade) vom Grad n konstruiert werden, das die n + 1 Interpolationsbedingungen p(xi ) = fi (i = 0, 1, . . . , n) erfüllt. 5.1 Polynominterpolation TU Bergakademie Freiberg, WS 2011/12 197 Numerik I Satz 5.1 Die polynomiale Interpolationsaufgabe ist eindeutig lösbar. Mit den Lagrange-Grundpolynomen n Y x − xj `i (x) := ∈ Pn x − x i j j=0 j6=i (beachte `i (xi ) = 1 und `i (xj ) = 0 für j 6= i) lässt sich das Interpolationspolynom in der Lagrange-Form p(x) = n X fi `i (x) i=0 darstellen. 5.1 Polynominterpolation TU Bergakademie Freiberg, WS 2011/12 198 Numerik I Beispiel 1. Daten: (x0 , f0 ) = (−1, −1), (x1 , f1 ) = (0, −1), (x2 , f2 ) = (2, 2). 3.5 3 P 2.5 2 Lagrange-Grundpolynome: 1.5 L0 L1 L2 1 `0 (x) = x(x − 2)/3, 0.5 `1 (x) = (x + 1)(x − 2)/(−2), 0 `2 (x) = (x + 1)x/6. −0.5 −1 −1.5 Interpolationspolynom: −2 −1 0 1 2 3 p(x) = −`0 (x) − `1 (x) + 2`2 (x) = x2 /2 + x/2 − 1. 5.1 Polynominterpolation TU Bergakademie Freiberg, WS 2011/12 199 Numerik I Die Auswertung der Lagrange-Formel ist aufwändig, wenn ein neuer Knoten hinzukommt. Eine rekursive Berechnung ist ökonomischer: Lemma 5.2 Für eine beliebige Indexmenge 0 ≤ i0 < i1 < · · · < ik ≤ n bezeichne pi0 ,i1 ,...,ik das (nach Satz5.1 eindeutig bestimmte) Polynom vom Grad k, das die Bedingungen pi0 ,i1 ,...,ik (xij ) = fij (j = 0, 1, . . . , k) erfüllt. Dann gilt die Rekursionsformel pi (x) = pi0 ,i1 ,...,ik (x) = 5.1 Polynominterpolation fi , (x − xi0 )pi1 ,i2 ,...,ik (x) − (x − xik )pi0 ,i1 ,...,ik−1 (x) . x ik − x i0 TU Bergakademie Freiberg, WS 2011/12 200 Numerik I Rechenschema (Algorithmus von Neville-Aitken): xi k=0 x0 p0 (x) = f0 k=1 k=2 k=3 k=4 p0,1 (x) x1 p1 (x) = f1 p0,1,2 (x) p1,2 (x) x2 p2 (x) = f2 p0,1,2,3 (x) p1,2,3 (x) p2,3 (x) x3 p3 (x) = f3 p0,1,2,3,4 (x) p1,2,3,4 (x) p2,3,4 (x) p3,4 (x) x4 p4 (x) = f4 (Berechnungsreihenfolge : p0 → p1 → p0,1 → p2 → p1,2 → p0,1,2 → · · · ) 5.1 Polynominterpolation TU Bergakademie Freiberg, WS 2011/12 201 Numerik I Beispiel 2 (vgl. Beispiel 1). xi k=0 −1 −1 k=1 k=2 (x−(−1))(−1)−(x−0)(−1) 0−(−1) 0 = −1 −1 (x−0)2−(x−2)(−1) 2−0 2 = 23 x − 1 (x−(−1))(3x/2−1)−(x−2)(−1) 2−(−1) = 12 x2 + 12 x − 1 2 Aufwand des Neville-Aitken Schemas (für Auswertung des Interpolationspolynoms vom Grad n an einer Stelle x): 5 2 7 2 n + 2 n + 1 Gleitpunktoperationen (falls die Differenzen x − xi (0 ≤ i ≤ n) vorab bestimmt werden). 5.1 Polynominterpolation TU Bergakademie Freiberg, WS 2011/12 202 Numerik I Tableau der dividierten Differenzen von {(xi , fi )}: xi k=0 x0 f0 k=1 k=2 k=3 k=4 f0,1 x1 f1 f0,1,2 f1,2 x2 f2 f0,1,2,3 f1,2,3 f2,3 x3 f3 f0,1,2,3,4 f1,2,3,4 f2,3,4 f3,4 x4 f4 mit xi , fi gegeben und fi0 ,i1 ,...,ik 5.1 Polynominterpolation fi1 ,i2 ,...,ik − fi0 ,i1 ,...,ik−1 := x ik − x i0 (k ≥ 1). TU Bergakademie Freiberg, WS 2011/12 203 Numerik I Satz 5.3 Mit Hilfe der dividierten Differenzen läßt sich das (nach Satz 5.1 eindeutig bestimmte) Interpolationspolynom p in Newton-Form p(x) = f0 + f0,1 (x − x0 ) + f0,1,2 (x − x0 )(x − x1 ) + · · · · · · + f0,1,...,n (x − x0 )(x − x1 ) · · · (x − xn−1 ) darstellen. Rechenaufwand: • Zur Bestimmung der Differenzentafel: 32 (n2 + n) Gleitpunktoperationen. • Zur Auswertung des Newtonschen Interpolationspolynoms mit dem Horner-Schema: 3n Gleitpunktoperationen (pro Auswertungspunkt). 5.1 Polynominterpolation TU Bergakademie Freiberg, WS 2011/12 204 Numerik I Beispiel 3 (vgl. Beispiele 1 und 2). Dividierte Differenzen: xi k=0 −1 −1 k=1 f0,1 = 0 (−1)−(−1) 0−(−1) = 0 −1 f0,1,2 = f1,2 = 2 k=2 2−(−1) 2−0 = 3/2−0 2−(−1) = 1 2 3 2 2 Das bedeutet: p(x) = (−1) + 0 (x − (−1)) + 5.1 Polynominterpolation 1 1 1 (x − (−1))(x − 0) = x2 + x − 1. 2 2 2 TU Bergakademie Freiberg, WS 2011/12 205 Numerik I Satz 5.4 (Fehler der Polynominterpolation) Für f ∈ C n+1 [a, b] sei p das Polynom vom Grad n, welches f an den Knoten a ≤ x0 < x1 < · · · < xn ≤ b interpoliert. Außerdem bezeichne wn+1 (x) = n Y (x − xi ) ∈ Pn+1 i=0 das zugehörige Knotenpolynom. Dann gibt es zu jedem x ∈ [a, b] ein ξ = ξ(x) ∈ (a, b) mit wn+1 (x) (n+1) f (x) − p(x) = f (ξ). (n + 1)! Mit Mn+1 := maxa≤t≤b |f (n+1) (t)| gilt für alle x ∈ [a, b] die Fehlerabschätzung Mn+1 |f (x) − p(x)| ≤ max |wn+1 (t)|. (n + 1)! a≤t≤b 5.1 Polynominterpolation TU Bergakademie Freiberg, WS 2011/12 206 Numerik I Optimale“ Knoten. Idee (motiviert durch Fehlerabschätzung): ” Wähle Knoten a ≤ x0 < x1 < · · · < xn ≤ b so, dass max |wn+1 (t)| = max a≤t≤b a≤t≤b n Y |t − xi | i=0 so klein wie möglich wird. Lösung: Tschebyscheff-Knoten 2(n − i) + 1 a+b b−a (T) xi = cos π + 2 2n + 2 2 mit max a≤t≤b n Y i=0 |t − x(T) i | =2 b−a 4 (i = 0, 1, . . . , n) n < max a≤t≤b n Y |t − xi | i=0 für jede andere Wahl x0 , . . . , xn der Knoten. 5.1 Polynominterpolation TU Bergakademie Freiberg, WS 2011/12 207 Numerik I Knotenpolynome mit äquidistanten und Tschebyscheff-Knoten: 0.8 aequidistante Knoten Tschebyscheff−Knoten 0.6 0.4 0.2 0 −0.2 −0.4 −0.6 −0.8 −1 5.1 Polynominterpolation 0 1 2 TU Bergakademie Freiberg, WS 2011/12 208 Numerik I Beispiel 4. Interpoliere 1 f (x) = 1 + x2 (−5 ≤ x ≤ 5) (Runge-Funktion) an n + 1 äquidistanten Stützstellen: n=10 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 −1 −5 5.1 Polynominterpolation n=14 8 0 5 −1 −5 0 5 TU Bergakademie Freiberg, WS 2011/12 209 Numerik I Beispiel 5. Interpoliere 1 f (x) = 1 + x2 (−5 ≤ x ≤ 5) (Runge-Funktion) an n + 1 Tschebyscheff-Knoten: n=10 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 −1 −5 5.1 Polynominterpolation n=14 8 0 5 −1 −5 0 5 TU Bergakademie Freiberg, WS 2011/12 210 Numerik I Fazit. Durch eine geeignete Knotenwahl (Tschebyscheff-Knoten) lässt sich auch die Runge-Funktion durch Interpolationspolynome beliebig genau annähern. Prinzipiell ist eine Approximation durch Interpolationspolynome aber nur dann ratsam, wenn man mit wenigen Knoten (d.h. mit Polynomen niedrigen Grades) ausreichend gute Ergebnisse erzielen kann. Das ist i.a. nur bei extrem glatten Funktionen (wie etwa bei der Exponentialfunktion) gewährleistet. (Die Runge-Funktion ist zwar in ganz R beliebig oft diffe√ renzierbar, besitzt aber Pole in ± −1. Wie gut eine Funktion durch reelle Interpolationspolynome genähert werden kann, hängt auch von der Lage ihrer komplexen Singularitäten ab!) Polynome hohen Grades neigen zu Oszillationen und sind daher zur Approximation oft unbrauchbar. 5.1 Polynominterpolation TU Bergakademie Freiberg, WS 2011/12 211 Numerik I 5.2 Spline-Interpolation Splines sind stückweise Polynome“.a ” Idee: Um die Güte der Approximation zu verbesseren, wird hier nicht der Polynomgrad erhöht, sondern die Unterteilung des Intervalls verfeinert. Seien n + 1 Knoten in [a, b] gegeben: a = x0 < x1 < · · · < xn−1 < xn = b. Mit T := [x0 , x1 ] ∪ [x1 , x2 ] ∪ · · · ∪ [xn−1 , xn ] bezeichnen wir die zugehörige Zerlegung des Intervalls [a, b]. Ein Spline vom Grad k bez. T ist eine Funktion s ∈ C k−1 [a, b], die auf jedem Teilintervall von T mit einem Polynom vom Grad k übereinstimmt: s [xi−1, xi ] ∈ Pk für i = 1, 2, . . . , n. a Eigentlich: Spezielle biegsame Kurvenlineale, die durch Halterungen gezwungen werden, auf dem Zeichenpapier gegebene Punkte zu verbinden. Werden im Schiffsbau verwendet. 5.2 Spline-Interpolation TU Bergakademie Freiberg, WS 2011/12 212 Numerik I Satz 5.5 STk , die Menge aller Splines vom Grad k bez. T , ist ein (n + k)dimensionaler Raum. Runge−Funktion Knoten linearer Spline kubischer Spline 1 0.8 0.6 0.4 0.2 0 −5 5.2 Spline-Interpolation −4 −3 −2 −1 0 1 2 3 4 5 TU Bergakademie Freiberg, WS 2011/12 213 Numerik I Einfachster Fall: k = 1. Splines vom Grad 1 oder lineare Splines. Die zwei charakteristischen Eigenschaften eines linearen Splines s: 1. Auf jedem Teilintervall [xi−1 , xi ] von T ist s linear: s(x) = αi + βi x für alle x ∈ [xi−1 , xi ] und i = 1, 2, . . . , n. 2. Auf ganz [a, b] ist s stetig, d.h. für i = 1, 2, . . . , n − 1 lim s(x) = αi + βi xi = αi+1 + βi+1 xi = lim s(x). x→xi − x→xi + Interpolationsaufgabe: Zu vorgebener Zerlegung T = [x0 , x1 ] ∪ [x1 , x2 ] ∪ · · · ∪ [xn−1 , xn ] von [a, b] und zu vorgegebenen Werten f0 , f1 , . . . , fn bestimme einen linearen Spline s ∈ ST1 mit s(xi ) = fi für alle i = 0, 1, . . . , n. 5.2 Spline-Interpolation TU Bergakademie Freiberg, WS 2011/12 214 Numerik I Offensichtlich: Diese Aufgabe ist eindeutig lösbar: fi − fi−1 s(x) = fi−1 + (x − xi−1 ) xi − xi−1 für x ∈ [xi−1 , xi ]. 1.2 linearer Interpolationsspline 1 0.8 0.6 0.4 0.2 0 x0 x1 x2 0.5 0.6 x3 x4 −0.2 −0.4 −0.6 −0.8 5.2 Spline-Interpolation 0 0.1 0.2 0.3 0.4 0.7 0.8 0.9 1 TU Bergakademie Freiberg, WS 2011/12 215 Numerik I Fehler des linearen Interpolationssplines: (f ∈ C 2 [a, b]) Lokal, d.h. für x ∈ [xi−1 , xi ]: |f (x) − s(x)| = 1 00 1 |f (ζ)||(x − xi−1 )(x − xi )| ≤ M2,i h2i 2 8 mit M2,i = maxxi−1 ≤ζ≤xi |f 00 (ζ)| und hi = xi − xi−1 . Global, d.h. für x ∈ [x0 , xn ]: 1 |f (x) − s(x)| ≤ M2 h2max 8 mit M2 = max1≤i≤n M2,i = maxx0 ≤ζ≤xn |f 00 (ζ)| und hmax = max1≤i≤n hi . Adaptive Knotenwahl. Stategie: Fehler etwa gleich auf jedem Teilintervall. p D.h.: Wähle hi invers proportional zu M2,i (viele Knoten dort, wo die Krümmung von f groß ist). 5.2 Spline-Interpolation TU Bergakademie Freiberg, WS 2011/12 216 Numerik I Zur Implementierung. Gegeben: x0 , x1 , . . . , xn und f0 , f1 , . . . , fn . Gesucht: Wert s(x) des linearen Interpolationssplines an der Stelle x. Bestimme gi−1 = (fi − fi−1 )/(xi − xi−1 ) für i = 1, 2, . . . , n. Falls x ∈ [xi−1 , xi ], dann s(x) = fi−1 + gi−1 (x − xi−1 ). Problem: Gegeben x, in welchem Teilintervall [xi−1 , xi ] liegt x? Einfach, falls hi = h (äquidistante Knoten): x − x0 x − x0 i= := min k ∈ N : k ≥ . h h Schwieriger bei beliebigen Knoten: Binäres Suchen ergibt Komplexität von ≈ log2 n. 5.2 Spline-Interpolation TU Bergakademie Freiberg, WS 2011/12 217 Numerik I Nächster Fall: k = 3: Gesucht ist ein interpolierender kubischer Spline s ∈ ST3 . Charakteristische Eigenschaften des kubischen Splines: 1. Auf jedem Teilintervall [xi−1 , xi ] von T ist s kubisch: s(x) = pi (x) = αi + βi (x − xi−1 ) + γi (x − xi−1 )2 + δi (x − xi−1 )3 . 2. Auf ganz [a, b] ist s zweimal stetig differenzierbar, d.h.: pi (xi ) = pi+1 (xi ), p0i (xi ) = p0i+1 (xi ), p00i (xi ) = p00i+1 (xi ) für i = 1, 2, . . . , n − 1. 3. Interpolationsbedingungen: s(xi ) = fi (i = 0, 1, . . . , n) (Also 3(n − 1) + (n + 1) = 4n − 2 Bedingungen, aber 4n Freiheitsgrade). 5.2 Spline-Interpolation TU Bergakademie Freiberg, WS 2011/12 218 Numerik I Drei Möglichkeiten für die erforderlichen zwei Zusatzbedingungen. Natürlicher Spline: s00 (x0 ) = s00 (xn ) = 0 (N) Hermitescher oder vollständiger Spline: s0 (x0 ) = f00 und s0 (xn ) = fn0 mit f00 , fn0 ∈ R. (H) Periodischer Spline: Falls s(x0 ) = s(xn ), s0 (x0 ) = s0 (xn ) und s00 (x0 ) = s00 (xn ). 5.2 Spline-Interpolation (P) TU Bergakademie Freiberg, WS 2011/12 219 Numerik I Berechnung des kubischen Interpolationssplines. Auf jedem Teilintervall [xi−1 , xi ] hat der kubische Spline die Form s(x) = pi (x) = αi + βi (x − xi−1 ) + γi (x − xi−1 )2 + δi (x − xi−1 )3 . Die Koeffizienten lassen sich durch die Momente µi := s00 (xi ) und die Funktionswerte fi (i = 0, 1, . . . , n) darstellen: (hierbei sei hi := xi − xi−1 ) αi = fi−1 , 1 γi = µi−1 , 2 fi − fi−1 hi βi = − (µi + 2µi−1 ), hi 6 µi − µi−1 δi = . 6hi M. a. W.: Ein kubischer Spline ist durch die Funktionswerte fi und die Momente µi (i = 0, 1, . . . , n) eindeutig bestimmt. 5.2 Spline-Interpolation TU Bergakademie Freiberg, WS 2011/12 220 Numerik I Die (n + 1) Momente µi erfüllen die (n − 1) linearen Gleichungen hi hi + hi+1 hi+1 fi+1 − fi fi − fi−1 µi−1 + µi + µi+1 = − 6 3 6 hi+1 hi (i = 1, 2, . . . , n − 1) und zwei Zusatzgleichungen: (N) µ0 = 0, µn = 0, (H) (P) h1 f1 − f0 h1 µ0 + µ1 = − f00 , 3 6 h1 hn fn − fn−1 hn 0 µn−1 + µn = fn − , 6 3 hn µ0 − µn = 0, h1 h1 + hn f1 − fn fn − fn−1 h1 µ1 + µn−1 + µn = − . 6 6 3 h1 hn 5.2 Spline-Interpolation TU Bergakademie Freiberg, WS 2011/12 221 Numerik I Sei HTk := f ∈ C kf 00 k2 := "Z a b k−1 k [a, b] : f [xi−1 ,xi ] ∈ C [xi−1 , xi ] und #1/2 |f 00 (x)|2 dx = " n Z X i=1 #1/2 xi |f 00 (x)|2 dx xi−1 (f ∈ HTk , k ≥ 2). Lemma 5.6 Für f ∈ HT2 und s ∈ ST3 gilt kf 00 − s00 k22 = kf 00 k22 − ks00 k22 " b − 2 (f 0 (x) − s0 (x))s00 (x)|a − n X # x + (f (x) − s(x))s000 (x)|xii−1 − . i=1 5.2 Spline-Interpolation TU Bergakademie Freiberg, WS 2011/12 222 Numerik I Satz 5.7 [Minimierungseigenschaft kubischer Splines]. Ist f ∈ HT2 und s ∈ ST3 ein zugehöriger kubische Interpolationsspline, der eine der drei Zusatzbedingungungen (N), (H) oder (P) erfüllt, dann folgt ! Z b ks00 k22 ≤ kf 00 k22 f 00 (x)2 dx . =: a 5.2 Spline-Interpolation TU Bergakademie Freiberg, WS 2011/12 223 Numerik I Interpretation von Satz 5.7. Die Biegeenergie Z b Z b 00 2 f (x) 00 2 EB (f ) = dx ≈ f (x) dx 0 2 3/2 a (1 + f (x) ) a wird näherungsweise durch den kubischen Interpolationsspline s minimiert. Im folgenden werden nur vollständige kubische Splines (Bedingung (H)) betrachtet, analoge Aussagen gelten unter den Voraussetzungen (N) und (P). 5.2 Spline-Interpolation TU Bergakademie Freiberg, WS 2011/12 224 Numerik I Die Momente erfüllen das LGS (s.o.) h h 1 3 h1 6 mit d0 = fn0 − f1 −f0 h1 1 6 h1 +h2 3 h2 6 .. .. . . hn−1 6 − f00 , dj = .. . hn−1 +hn 3 hn 6 fj+1 −fj hj+1 − µ0 d0 µ1 d1 .. .. . = . hn µ d n−1 6 n−1 hn 3 fj −fj−1 hj µn dn (1 ≤ j ≤ n) und dn = fn −fn−1 . hn Lemma 5.8 Für jede Wahl der Knoten a = x0 < x1 < · · · < xn = b ist dieses Gleichungssystem eindeutig lösbar. D.h.: Zu jeder Knotenwahl gibt es genau einen vollständigen kubischen Interpolationsspline für f . 5.2 Spline-Interpolation TU Bergakademie Freiberg, WS 2011/12 225 Numerik I Satz 5.9 [Fehler bei kubischer Spline-Interpolation]. Ist f ∈ C 4 [a, b] und s ∈ ST3 der vollständige kubische Interpolationsspline für f , dann gelten 5 M4 h4max , 384 x∈[a,b] 1 0 0 max |f (x) − s (x)| ≤ M4 h3max , 24 x∈[a,b] 3 00 00 max |f (x) − s (x)| ≤ M4 h2max 8 x∈[a,b] max |f (x) − s(x)| ≤ mit M4 := max |f (4) (x)| a≤x≤b und hmax = max hi = max (xi − xi−1 ). 1≤i≤n 5.2 Spline-Interpolation 1≤i≤n TU Bergakademie Freiberg, WS 2011/12 226 Numerik I 5.3 Diskrete Fourier-Transformation Für n ≥ 0 und reellen Koeffizienten α0 , α1 , . . . , αn sowie β1 , β2 , . . . , βn bezeichnen wir als trigonometrisches Polynom einen Ausdruck der Form n i α0 Xh + αk cos(kx) + βk sin(kx) , tn (x) = 2 k=1 wobei βn = 0 für n gerade. Die trigonometrische Interpolationsaufgabe besteht darin, zu den m äquidistanten Knoten xj = 2πj/m, (j = 0, 1, . . . , m − 1) im Intervall [0, 2π) und m gegebenen reellen Zahlen f0 , f1 , . . . , fm−1 ein trigonometrisches Polynom tn zu bestimmen, welches die m Interpolationsbedingungen tn (xj ) = fj erfüllt. Hierbei sei n = 5.3 Diskrete Fourier-Transformation (j = 0, 1, . . . , m − 1) ( (m − 1)/2 m ungerade m/2 m gerade. TU Bergakademie Freiberg, WS 2011/12 227 Numerik I Transformation auf den (komplexen) Einheitskreis: φ : [0, 2π) −→ T := {z ∈ C : |z| = 1}, x 7→ z = exp(ix) = cos x + i sin x. Die Knoten xj gehen in die m-ten Einheitswurzeln über: j φ(xj ) = exp(2πij/m) = [exp(2πi/m)]j = ωm (j = 0, 1, . . . , m − 1) mit ωm := exp(2πi/m) = cos(2π/m) + i sin(2π/m). Setzt man β0 = 0 und für k = 0, 1, . . . , n " " # " # 1 ak 1 1 2 2 (αk − iβk ) C 3 := 1 = 2 1 a−k 2 (αk + iβk ) 5.3 Diskrete Fourier-Transformation #" # −i αk i βk , d.h. TU Bergakademie Freiberg, WS 2011/12 228 Numerik I " R2 3 αk # " = βk #" 1 1 i −i ak # " = a−k ak + a−k # i(ak − a−k ) " = 2 Real (ak ) # −2 Imag(ak ) , so folgt tn (x) = n X ak exp(ikx) = k=−n mit p2n (z) = n X ak z k = z −n k=−n Pn k+n = k=−n ak z n X ak z k+n = z −n p2n (z) k=−n P2n j=0 aj−n z j ∈ P2n . Wegen j jn jn p2n (ωm ) = ωm tn (xj ) = ωm fj ist die trigonometrische Interpolationsaufgabe zurückgeführt auf ein (gewöhnliches, wenn auch komplexes) Interpolationsproblem für algebraische Polynome. 5.3 Diskrete Fourier-Transformation TU Bergakademie Freiberg, WS 2011/12 229 Numerik I Satz 5.10 Zu beliebig vorgegebenen Funktionswerten f0 , f1 , . . . , f2n ∈ R gibt es genau ein reelles trigonometrisches Polynom tn ∈ Tn mit tn (xj ) = fj (j = 0, 1, . . . , 2n). k Lemma 5.11 Für die m-ten Einheitswurzeln ωm (k ∈ Z, m ∈ N) gelten: a) k kj j [ωm ] = ωm = [ωm ] j k b) k` k ωm` = ωm (` ∈ Z, ` 6= 0), c) k = ω −k , ωm m ( m−1 X m, falls k = 0 (mod m), kj ωm = 0, falls k 6= 0 (mod m). j=0 d) 5.3 Diskrete Fourier-Transformation (j ∈ Z), TU Bergakademie Freiberg, WS 2011/12 230 Numerik I Satz 5.12 Das komplexe (algebraische) Interpolationspolynom pm−1 (z) = Pm−1 k j c z ∈ P mit p (ω k m−1 m−1 m ) = fj ∈ C k=0 (j = 0, 1, . . . , m − 1) besitzt die Koeffizienten m−1 1 X −kj fj ωm ck = m j=0 (k = 0, 1, . . . , m − 1). In Matrix-Vektor-Schreibweise c0 c1 1 . = Fm .. m cm−1 f0 f1 . .. fm−1 mit der Fourier-Matrix 5.3 Diskrete Fourier-Transformation TU Bergakademie Freiberg, WS 2011/12 231 Numerik I Fm −kj := ωm 0≤k,j≤m−1 1 1 = . .. 1 1 −1 ωm ··· 1 ··· −m+1 ωm .. . .. . −m+1 ωm −(m−1)2 ωm ··· . Bemerkung. Seien m ∈ N, d ∈ N0 , d ≤ m − 1, f0 , f1 , . . . , fm−1 ∈ C j und zj = ωm (j = 0, 1, . . . , m − 1). Unter allen Polynomen q ∈ Pd vom Grad d minimiert pm,d (z) = c0 + c1 z + · · · + cd z d , also das “abgeschnittene” Pm−1 Interpolationspolynom, die Fehlerquadratsumme j=0 |fj − q(zj )|2 : m−1 X |fj − pm,d (zj )|2 < j=0 5.3 Diskrete Fourier-Transformation m−1 X |fj − q(zj )|2 für alle q ∈ Pd , q 6= pm,d . j=0 TU Bergakademie Freiberg, WS 2011/12 232 Numerik I Satz 5.13 Für m = 2n oder m = 2n+1 gibt es zu beliebigen f0 , f1 , . . . , fm−1 ∈ R ein reelles trigonometrisches Interpolationspolynom " # n X 1 tn (x) = α0 + αk cos(kx) + βk sin(kx) ∈ Tn 2 k=1 vom Grad n, das die m Bedingungen tn (2πj/m) = fj (j = 0, 1, . . . , m − 1) erfüllt. Seine Koeffizienten sind durch ! ! m−1 m−1 2πj 2πj 2 X 2 X fj cos k fj sin k αk = bzw. βk = m j=0 m m j=0 m (k = 0, 1, . . . , n) gegeben. Im Fall m = 2n muß βn = 0 gesetzt und αn halbiert werden. 5.3 Diskrete Fourier-Transformation TU Bergakademie Freiberg, WS 2011/12 233 Numerik I 5.4 Schnelle Fourier-Transformation (FFT) j Seien ωm (j = 0, . . . , m − 1, ωm := exp(2πi/m)) die m-ten Einheitswurzeln. Diskrete Fourier-Analyse: Bestimme zu vorgebenen Funktionswerten f0 , . . . , fm−1 ∈ C die KoeffiPm−1 j zienten c0 , . . . , cm−1 des Interpolationspolynoms P (z) = j=0 cj z mit j P (ωm ) = fj für j = 0, . . . , m − 1. −kj Wir wissen: Mit der Fourier-Matrix Fm := [ωm ]0≤k,j≤m−1 ∈ Cm×m gilt c0 f0 c1 1 f1 . = Fm . . .. m .. cm−1 fm−1 5.4 Schnelle Fourier-Transformation (FFT) TU Bergakademie Freiberg, WS 2011/12 234 Numerik I Diskrete Fourier-Synthese: Inverse Aufgabe: Bestimme zu vorgebenen Koeffizienten c0 , . . . , cm−1 ∈ C Pm−1 die Funktionswerte f0 , . . . , fm−1 des Polynoms P (z) = j=0 cj z j an den 0 m−1 m-ten Einheitswurzeln ωm , . . . ωm . Offensichtlich: f0 c0 c1 f1 . = Wm . .. .. cm−1 fm−1 kj mit der Matrix Wm := [ωm ]0≤k,j≤m−1 = F̄m ∈ Cm×m . 5.4 Schnelle Fourier-Transformation (FFT) TU Bergakademie Freiberg, WS 2011/12 235 Numerik I −kj Lemma 5.14 Für die Fourier-Matrix Fm = [ωm ]0≤k,j≤m−1 ∈ Cm×m gelten: T H (a) Fm = Fm (aber Fm 6= Fm für m > 2!), H (b) Fm Fm = mIm , d.h. die Spalten von Fm sind orthogonal √ und besitzen alle die Euklid-Norm m. 1 1 H −1 Fm =m F̄m . (c) Fm =m Diskrete Fourier-Transformationen (d.h. diskrete Fourier-Analysen und Synthesen) müssen in der Praxis oft berechnet werden (Signalverarbeitung, Lösung der Poisson-Gleichung etc.). Die “klassische” Berechnung einer Fourier-Transformation (ein Matrix-Vektor-Produkt mit Fm /m bzw. Wm ) erfordert offenbar O(m2 ) komplexe Multiplikationen. Bei Anwendung der schnellen Fourier-Transformation (FFT) reduziert sich dieser Aufwand auf O(m log2 m). 5.4 Schnelle Fourier-Transformation (FFT) TU Bergakademie Freiberg, WS 2011/12 236 Numerik I Diese Verbesserung kann nicht überbewertet werden: “It [the FFT] has changed the face of science and engineering so much that it is not an exaggeration to say that life as we know it would be very different without the FFT.” [Charles Van Loan, Computational Frameworks for the Fast Fourier Transform, SIAM, Philadelphia 1992, p. ix] Wir setzen (aus schreibtechnischen Gründen) im folgenden 2πi 2π 2π ζm = ω̄m = exp − = cos − i sin , m m m kj so dass Fm = [ζm ]0≤k,j≤m−1 . Außerdem sei m gerade. 5.4 Schnelle Fourier-Transformation (FFT) TU Bergakademie Freiberg, WS 2011/12 237 Numerik I Die Idee der FFT (für m = 8): Mit ζ := ζ8 ist 1 1 1 1 1 1 1 ζ ζ 2 ζ 3 ζ 4 ζ 5 1 ζ 2 ζ 4 ζ 6 ζ 8 ζ 10 1 ζ 3 ζ 6 ζ 9 ζ 12 ζ 15 F8 = 1 ζ 4 ζ 8 ζ 12 ζ 16 ζ 20 1 ζ 5 ζ 10 ζ 15 ζ 20 ζ 25 1 ζ 6 ζ 12 ζ 18 ζ 24 ζ 30 1 ζ 7 ζ 14 ζ 21 ζ 28 ζ 35 5.4 Schnelle Fourier-Transformation (FFT) 1 ζ 6 ζ 12 ζ 18 ζ 24 ζ 30 ζ 36 ζ 42 1 ζ ζ 14 21 ζ . 28 ζ ζ 35 42 ζ ζ 49 7 TU Bergakademie Freiberg, WS 2011/12 Numerik I 238 Wegen ζ 8 = 1, d.h. ζ j = ζ k , wenn j − k (ohne Rest) durch 8 teilbar ist, folgt 1 1 1 1 1 1 1 1 1 ζ ζ 2 ζ 3 ζ 4 ζ 5 ζ 6 ζ 7 1 ζ 2 ζ 4 ζ 6 1 ζ 2 ζ 4 ζ 6 1 ζ 3 ζ 6 ζ ζ 4 ζ 7 ζ 2 ζ 5 F8 = . 4 4 4 4 1 ζ 1 ζ 1 ζ 1 ζ 1 ζ 5 ζ 2 ζ 7 ζ 4 ζ ζ 6 ζ 3 1 ζ 6 ζ 4 ζ 2 1 ζ 6 ζ 4 ζ 2 1 ζ7 ζ6 ζ5 ζ4 ζ3 ζ2 ζ1 5.4 Schnelle Fourier-Transformation (FFT) TU Bergakademie Freiberg, WS 2011/12 239 Numerik I Jetzt numerieren wir die Zeilen von F8 um: zuerst werden radem (0,2,4,6), danach die mit ungeradem Index (1,3,5,7) zugehörige Pemutationsmatrix wird mit P bezeichnet. 1 1 1 1 1 1 1 1 1 ζ2 ζ4 ζ6 1 ζ2 ζ4 ζ6 1 ζ4 1 ζ4 1 ζ4 1 ζ4 " 1 ζ6 ζ4 ζ2 1 ζ6 ζ4 ζ2 B1,1 P F8 = =: 1 ζ ζ2 ζ3 ζ4 ζ5 ζ6 ζ7 B2,1 1 ζ3 ζ6 ζ ζ4 ζ7 ζ2 ζ5 1 ζ5 ζ2 ζ7 ζ4 ζ ζ6 ζ3 1 ζ7 ζ6 ζ5 ζ4 ζ3 ζ2 ζ1 5.4 Schnelle Fourier-Transformation (FFT) die mit gegezählt. Die B1,2 # B2,2 TU Bergakademie Freiberg, WS 2011/12 240 Numerik I Wir untersuchen die einzelnen Blöcke: Wegen ζ = ζ8 ist ζ 2 = ζ4 , d.h. 1 1 1 1 1 ζ4 ζ42 ζ43 B1,1 = B1,2 = 1 ζ 2 ζ 4 ζ 6 = F4 . 4 4 4 1 ζ43 ζ46 ζ49 Aus den Spalten 0,1,2 “aus”: 1 1 B2,1 = 1 1 5.4 Schnelle Fourier-Transformation (FFT) bzw. 3 von B2,1 “klammern” wir ζ 0 , ζ 1 , ζ 2 bzw. ζ 3 1 1 ζ2 ζ4 ζ4 1 ζ6 ζ4 1 1 ζ 6 0 ζ 4 0 ζ2 0 0 0 0 ζ 0 0 ζ2 0 0 0 = F4 D 4 . 0 ζ3 TU Bergakademie Freiberg, WS 2011/12 241 Numerik I Analog: B2,2 1 1 = 1 1 1 1 ζ2 ζ4 ζ4 1 ζ6 ζ4 1 ζ4 ζ 6 0 ζ 4 0 ζ2 0 Insgesamt erhalten wir " F4 P F8 = F4 D4 5.4 Schnelle Fourier-Transformation (FFT) F4 −F4 D4 0 0 0 ζ5 0 0 ζ6 0 0 0 = F4 (ζ 4 D4 ) = −F4 D4 . 0 ζ7 # " = F4 O O F4 #" I4 I4 D4 −D4 # . TU Bergakademie Freiberg, WS 2011/12 242 Numerik I Satz 5.15 Seien m gerade, σ die folgende (even/odd) Permutation σ = [0, 2 . . . , m − 2, 1, 3, . . . , m − 1] und P = Pσ die zugehörige Permutationsmatrix. Dann besitzt die zeilenpermutierte Fourier-Matrix Fm die Zerlegung " # " #" # Fm/2 Fm/2 Fm/2 O Im/2 Im/2 P Fm = = . Fm/2 Dm/2 −Fm/2 Dm/2 O Fm/2 Dm/2 −Dm/2 Dabei bezeichnet Dm/2 die Diagonalmatrix 0 1 m/2−1 ∈ C(m/2)×(m/2) Dm/2 = diag ζm , ζm , . . . , ζm mit ζm = ω̄m = exp(−2πi/m). 5.4 Schnelle Fourier-Transformation (FFT) TU Bergakademie Freiberg, WS 2011/12 243 Numerik I Berechne jetzt y = Fm x für ein x ∈ Cm (m gerade). Wegen der Zerlegung von Fm aus Satz 17 unterteilen wir dies in zwei Schritte: 1. Reduktionsschritt: Berechne " # Im/2 Im/2 z = x. Dm/2 −Dm/2 Für m = 8: z0 = x0 + x4 , z1 = x1 + x5 , z2 = x2 + x6 , z3 = x3 + x7 z4 = (x0 − x4 ), z5 = (x1 − x5 )ζm , 2 3 z6 = (x2 − x6 )ζm , z7 = (x3 − x7 )ζm (m/2 komplexe Multiplikationen und m komplexe Additionen). 2. Berechne Fm/2 z (0 : m/2 − 1) und Fm/2 z (m/2 : m − 1) (zwei Fourier-Transformationen der Dimension m/2). 5.4 Schnelle Fourier-Transformation (FFT) TU Bergakademie Freiberg, WS 2011/12 244 Numerik I Ist m = 2p eine Potenz von 2, so ist m/2 ebenfalls gerade und die beiden Fourier-Transformationen der Dimension m/2 können auf vier FourierTransformationen der Dimension m/4 reduziert werden. Der Aufwand zur Reduktion beträgt 2·m/4 = m/2 komplexe Multiplikationen (und 2·m/2 = m komplexe Additionen). Diese Prozess wird solange fortgesetzt bis man eine Multiplikation mit Fm auf m Multiplikationen mit F1 = [1] reduziert hat (eine Multiplikation mit F1 erfordert offenbar keinen Aufwand). Dieses Reduktionsverfahren heißt schnelle Fourier-Transformation (FFT = Fast Fourier Transformation). Satz 5.16 Zur Durchführung einer schnellen Fourier-Transformation der Ordnung m = 2p sind m m p= log2 (m) 2 2 komplexe Multiplikationen und m log2 (m) komplexe Additionen erforderlich. 5.4 Schnelle Fourier-Transformation (FFT) TU Bergakademie Freiberg, WS 2011/12 245 Numerik I Die konventionelle Berechnung einer Fourier-Transformation der Länge m = 2p durch Fm x erfordert also 2p+1 /p-mal mehr Multiplikationen als ihre Berechnung durch FFT. Wenn z.B. für p = 20 die FFT-Version eine Sekunde benötigt, so benötigt Fm x etwa 29 Stunden. Verbleibendes Problem: Bestimmt man y = Fm x durch FFT, so erhält man e = Qy mit einer Permutatinicht y , sondern einen permutierte Version y onsmatrix Q ∈ Rm×m . Es gilt: Besitzt für m = 2p der Index i ∈ {0, 1, . . . , m−1} die Binärdarstellung i = bp−1 2p−1 + · · · + b2 22 + b1 2 + b0 =: [bp−1 . . . b2 b1 b0 ]2 , und ist r(i) := [b0 b1 b2 . . . bp−1 ]2 = b0 2p−1 + b1 2p−2 + b2 2p−3 + · · · + bp−1 (bit reversal), dann gelten yi = yer(i) 5.4 Schnelle Fourier-Transformation (FFT) und yei = yr(i) . TU Bergakademie Freiberg, WS 2011/12 246 Numerik I 5.5 Eine Anwendung Interpretiere die m Ecken eines Polygons, (x0 , y0 ), . . . , (xm−1 , ym−1 ), als komplexe Zahlen: f0 = x0 + iy0 , . . . , fm−1 = xm−1 + iym−1 (i2 = −1). Das Ergebnis einer diskreten Fourier-Analyse dieser Zahlen 1 [c0 , c1 , . . . , cm−1 ] = Fm [f0 , f1 , . . . , fm−1 ]> m > nennt man diskretes komplexes Spektrum des Polygons. Es spiegelt geometrische Eigenschaften des Polygons wider und kann daher zur Klassifikation von Formen (Mustererkennung) verwendet werden. Lage- und größeunabhängig ist das normierte Amplitudenspektrum ak = |ck+2 /c1 | 5.5 Eine Anwendung (k = 0, . . . , m − 3). TU Bergakademie Freiberg, WS 2011/12 247 Numerik I 5 5 5 4 4 4 3 3 3 2 2 2 1 1 1 0 0 1 2 3 4 5 0 0 1 2 3 4 5 0 0.5 0.5 0.5 0.4 0.4 0.4 0.3 0.3 0.3 0.2 0.2 0.2 0.1 0.1 0.1 0 10 20 30 0 10 20 30 0 0 1 2 10 3 20 4 5 30 a1 < a2 , a2 > a3 ; a1 > a2 , a2 > a3 ; a1 > a2 , a2 < a3 ; 5.5 Eine Anwendung TU Bergakademie Freiberg, WS 2011/12 248 Numerik I 5 0.5 4.5 0.45 4 Polygon E F H 0.4 3.5 0.35 3 0.3 2.5 0.25 2 0.2 1.5 0.15 1 0.1 0.5 0.05 0 0 5.5 Eine Anwendung 1 2 3 0 0 5 10 15 20 25 30 TU Bergakademie Freiberg, WS 2011/12 249 Numerik I 5 0.5 4.5 Polygon E F H 0.45 4 0.4 3.5 0.35 3 0.3 2.5 0.25 2 0.2 1.5 0.15 1 0.1 0.5 0.05 0 0 5.5 Eine Anwendung 1 2 3 0 0 5 10 15 20 25 30 TU Bergakademie Freiberg, WS 2011/12 250 Numerik I 5 0.5 4.5 0.45 4 0.4 3.5 Polygon E F H 0.35 3 0.3 2.5 0.25 2 0.2 1.5 0.15 1 0.1 0.5 0.05 0 0 5.5 Eine Anwendung 1 2 3 0 0 5 10 15 20 25 30 TU Bergakademie Freiberg, WS 2011/12