Polynome und schnelle Fourier-Transformation Mohsen Taheri FU Berlin – SoSe2012
Polynome Ein Polynom ist eine Funktion Koeffizienten: Ein Polynom hat Grad k wenn der höchste Koeffizient mit einem Wert ungleich 0 Länge = jede ganze Zahl großer als Grad eines Polynoms Polynome und FFT
Addition von Polynomen Seien und Polynome der Länge n Addition von A(x) und B(x) ist hat auch Länge n und Beispiel Laufzeit: Polynome und FFT
Multiplikation von Polynomen Seien und Polynome der Länge n Multiplikation von A(x) und B(x) ist Wobei Länge(C) = Länge(A) + Länge(B) Beispiel Laufzeit: Polynome und FFT
Darstellung von Polynomen Koeffizienten-Darstellung Point-Value-Darstellung Polynome und FFT
Koeffizienten-Darstellung Das Polynom als ein Vektor der Koeffizienten Addition: Laufzeit Multiplikation (wie vorhin): wobei Polynome und FFT
Point-Value-Darstellung Polynom Länge n in Point-Value- Darstellung: eine Menge von Punkten alle sind disjunkt für alle : Auswertung durch Horne-Schema (in ) Polynome und FFT
Addition in Point-Value-Darstellung B : Addition: Laufzeit: Polynome und FFT
Multiplikation in Point-Value-Darstellung Problem: Länge(A.B)=Länge(A)+Länge(B) Lösung: Extended Point-Value 2n Punkte statt n Punkte A: B: Multiplikation: C: Laufzeit : Polynome und FFT
Evaluation Evaluation: Transform von Koeffizienten-Vektor zur Point-Value-Darstellung Evaluating: Die Auswertung eines Polynoms unter einen bestimmten Wert von x Mit Hilfe von Horne-Schema in Evaluation insgesamt in Polynome und FFT
Interpolation Interpolation: Transform von Point-Value-Darstellung zur Koeffizienten-Darstellung Lagranges Formel Polynome und FFT
Theorem 1: Eindeutigkeit von Interpolation der Polynomen Für alle Menge von n Punkten mit disjunkt gibt es ein eindeutiges Polynom A(x) der Länge n, so dass für alle Polynome und FFT
DFT effiziente Methode für Evaluation und Interpolation Diskrete Fourier Transform Das Polynom in n komplexe n-te Einheitswurzeln auswerten Eingabe: Koeffizienten-Vektor Ausgabe: Vektor Auswertung der Polynom in n Komplexe n-te Einheitswurzeln Polynome und FFT
Komplexe Einheitswurzeln komplexe Einheitswurzel: eine komplexe Zahl wobei Es gibt genau n komplexe n-te Einheitswurzeln: für k=0,1, … , n-1: Die Zahl : primitive n-te Einheitswurzel alle anderen Zahlen sind die Potenzen dieser Zahl n komplexe n-te Einheitswurzeln sind dann: Polynome und FFT
Komplexe Einheitswurzeln - Eigenschaften Additive Gruppe Die n Zahlen haben die gleiche Struktur wie die additive Gruppe Beweis: Polynome und FFT
Komplexe Einheitswurzeln - Eigenschaften Cancellation Lemma Für jede ganze Zahl gilt: Beweis: . Korollar: Für alle ganze Zahlen n>0 gilt: Polynome und FFT
Komplexe Einheitswurzeln - Eigenschaften Halving Lemma: wenn n>0 gerade Zahl die Quadrate der n komplexen n -te Einheitswurzeln sind die n/2 komplexe (n/2)-te Einheitswurzeln: Polynome und FFT
Komplexe Einheitswurzeln - Eigenschaften Halving Lemma: Beweis: Da n gerade ist, nehmen wir an n=2m Zu zeigen: Nach Cancellation Lemma: da , ist dann , also □ Polynome und FFT
Komplexe Einheitswurzeln - Eigenschaften Summation Lemma: Für jede ganze Zahl n≥1 und für k≠0 und nicht dividierbar durch n, gilt: Polynome und FFT
FFT Evaluation eines Polynoms in unter Verwendung der Eigenschaften der Einheitswurzeln Diese Methode heißt Fast Fourier Transform(FFT). Annahme n ist ein 2er Potenz ( ) Divide-and-Conquer Polynome und FFT
FFT das Polynom A(x) in gerade und ungerade indizierte Koeffizienten teilen zwei neue Polynome der Länge n/2 Das Polynom wird so berechnet: Polynome und FFT
FFT das Problem von Auswerten des Polynoms in n Punkten ( ) reduziert zu: 1. zwei Polynome der Länge n/2 in Punkten ( ) auswerten 2. das Resultat mit Hilfe der Abgleichung zusammen addieren Polynome und FFT
FFT Nach Halving Lemma: die Anzahl der Elemente der Liste nicht n, sondern n/2. Die zwei Subprobleme haben genau die gleiche Struktur wie das ursprüngliche Problem und sind halb so groß. Polynome und FFT
Rekursiv FFT RECURSIVE-FFT(a) n = a.length() if n==1 return a for k=0 to n/2-1 return y Eingabe: Ausgabe: Zeilen 2-3 Rekursionsbasis: DFT von einem Vektor mit einem Element ist das Element selbst., weil Zeilen 6-7 definieren die Koeffizienten-Vektoren für Zeilen 4,5 und 13 sorgen dafür, dass stets den Wert hat Die Zeilen 8-9 führen die rekursive Berechnung für k=0,1,…,n/2-1: und oder, weil durch Cancellation Lemma , ist: Polynome und FFT
Rekursiv FFT Zeilen11-12 kombinieren das Ergebnis der rekursiven Berechnung Zeile 11 für Zeile 12 für zusammengefügt wird Vektor y berechnet Polynome und FFT
Rekursiv FFT - Laufzeit jeder rekursiver Aufruf kostet n = Länge des Eingabevektors Laufzeit: Polynome und FFT
Interpolation in Einheitswurzeln umgekehrtes Verfahren Polynom vom Point-Value zurück zu Koeffizienten Berechnung von DTF als eine Matrizenmultiplikation Vandermonde-Matrix wir brauchen die Inverse-Matrix Polynome und FFT
Inverse von Vandermonde-Matrix Theorem: Für j,k=0,1,…,n-1 sind die (j,k)Einträge von die Zahlen Beweis: z.z.: , wobei die n×n Identitätsmatrix betrachte die (j,j')Einträge von Falls j=j‘ : Falls j≠j‘ : -(n-1) ≤ j-j' ≤ n-1 j-j' ist nicht durch n dividierbar Summation Lemma : Polynome und FFT
Interpolation in Einheitswurzeln I : (j,k)Einträge der sind: II : Vergleiche mit Polynom in Einheitswurzeln leichte Modifikation in Algorithmus berechnet die Interpolation tausche a und y ersetze durch dividiere jedes Element durch n Also die Interpolation auch in berechenbar Polynome und FFT
Zusammenfassung Standard-Multiplikation Koeffizienten- Darstellung Laufzeit Koeffizienten- Darstellung Interpolation Laufzeit Evaluation Laufzeit Wir haben gezeigt, dass mit Hilfe vom Recursive-FFT man die Evaluation und Interpolation eines Polynoms in durchführen kann. Damit man zwei Polynome in Koeffizienten-Form in multipliziert, wird man sie zunächst in Point-Value-Form umwandeln. Diese Transformation ist in machbar. Die Multiplikation in Point-Value-Form kostet nun Zeit. Nachher wird man das Ergebnis der Multiplikation in zurück in Koeffizienten-Form umwandeln. Somit kann man diese Multiplikation insgesamt in durchführen. punktweise Multiplikation Laufzeit Point-Value- Darstellung Polynome und FFT