Numerik in Java Einige wichtige numerische Methoden in Java Prof. Dr. Nikolaus Wulff
Angewandte Informatik Computer bieten heute vielfältige Möglichkeiten, um komplizierte Prozesse steuern und regeln zu können. Häufig sind hierfür Methoden der Numerischen Mathematik notwendig: Approximation von Funktionen. Nullstellensuche von Funktionen f : C m C n Bestimmung von Minima/Maxima von Funktionen. Differentiation und Integration von Funktionen. Lösung von (linearen) Gleichungssystemen. Lösung von Differentialgleichungssystemen. Prof. Dr. Nikolaus Wulff Informatik III 2
Problemstellungen Gesucht sind meistens optimale Lösungen. Was heißt hier optimal...? Gelingt es ein Problem mathematisch zu formulieren, so ist die optimale Lösung als das Minimum einer Kostenfunktion beschrieben. Häufig reicht als Lösung eine Approximation aus, da die Eingangsdaten nicht exakt vorliegen nur ein vereinfachtes Modell vorliegt das Modell mathematisch nicht geschlossen lösbar ist. Die Lösung muss dann innerhalb einer vorgegebenen Fehlerschranke ε>0 exakt sein. Prof. Dr. Nikolaus Wulff Informatik III 3
Daten fitten Häufig muss zu gegeben Daten eine geeignete Modellfunktion gefunden und parametrisiert werden. Hierzu wird versucht die Fehler (Residuen) zwischen den Daten und der Modellfunktion zu minimieren. Prof. Dr. Nikolaus Wulff Informatik III 4
Es kommt drauf an... Es gibt verschiedene Möglichkeiten eine Kurve an die Datenpunkte anzupassen, z. B.: Polynom-Fit: Suche ein Polynom, das exakt(!) durch alle Datenpunkte geht. m p n x m y m =0 => Lagrange- oder Newton-Polynome. Führt häufig zu heftig oszillierenden Lösungen... Suche eine Funktion, die glatt durch die Datenpunkte geht, d.h. dort eine stetige Ableitung besitzt. => Kubische Spline-Funktion. stückweise Polynome dritten Grads. Prof. Dr. Nikolaus Wulff Informatik III 5
Methode der kleinsten Quadrate Ziel der Ausgleichsrechnung ist es die unbekannten p Parameter a=(a 1,...,a p ) einer Modellfunktion f an eine Reihe von (Mess)Daten (x,y) m optimal anzupassen. Dies geschieht mit der Methode der kleinsten Quadrate: 2 a = m f a, x m y m 2 =minimal Ableiten führt auf die p Bedingungsgleichungen g k (a) g k a = a 2 k 2 a k =0 mit k =1,, p Prof. Dr. Nikolaus Wulff Informatik III 6
Approximation Außer bei Polynomen lassen sich die entstehenden p Gleichungen meistens nicht analytisch lösen. g k a = m f a, x m y m f a k! = 0 Eine iterative (Nährungs)Lösung g(ξ)=0 lässt sich bei geeignetem Startvektor a 0 durch ein mehrdimensionales Newton-Verfahren mit Hilfe der Jacobi-Matrix J g finden mit =lim n a n a n 1 := a n [J g a n ] 1 g a n Prof. Dr. Nikolaus Wulff Informatik III 7
Hesse-Matrix Da die Funktion g der Gradient von χ 2 ist, führt die Jacobi-Matrix zur Berechnung der Elemente H jk der Hesse-Matrix von χ 2 (und somit auch H f ): g k a a j = a m f a, x m y m f a, x m j a k f m y m 2 f m f m f ] m a j a k a j a k H jk = m [ Deren Invertierung für das verallgemeinerte Newton- Verfahren erforderlich ist, es sei denn... Prof. Dr. Nikolaus Wulff Informatik III 8
Numerische Optimierung Anstatt die Hesse-Matrix zu invertieren bietet sich folgendes rekursives Verfahren an: H 2 a n a n 1 a n = 2 a n D. h. löse das entstehende Gleichungssystem H 2 a n b n 1 = 2 a n H n b n+1 = g n nach b n+1, was mit Hilfe des Gauss-Algorithmus geschehen kann und setze a n+1 := a n - b, so lange n+1 bis b kleiner als die vorgegeben Genauigkeit ε ist. Numerisch vorteilhaft ist die Symmetrie der Hesse-Matrix. Prof. Dr. Nikolaus Wulff Informatik III 9
Generischer Parameterfit protected void fittparameters(double[] x, double[] y) { double delta; double[] gradf, b, a = getparameters(); double[][] hessf; ite = 0; do { gradf = gradchi2(x, y); hessf = hesschi2(x, y); // solve the equation HessF(a)*b = GradF(a) b = solve(hessf, gradf); a = sub(a,b); setparameters(a); delta = norm(b); ite++; } while (delta > EPS && ite < MAX_ITERATIONS); H 2 a n a n a n 1 = 2 a n Prof. Dr. Nikolaus Wulff Informatik III 10
Berechnung von 2 a n protected double[] gradchi2(double[] x, double[] y) { int mmax = x.length, p = numparameters(); double xm, ym, fm; double[] grad = new double[p]; for (int m = 0; m < mmax; m++) { xm = x[m]; ym = y[m]; fm = fct(xm); for (int k = 0; k < p; k++) { grad[k] += (fm - ym) * dfct(k, xm); } } return grad; } [ 2 ] k =g k a = m f a, x m y m f a k Prof. Dr. Nikolaus Wulff Informatik III 11
Berechnung der Hesse-Matrix protected double[][] hesschi2(double[] x, double[] y) { int j,k,m, mmax = x.length, p = numparameters(); double xm, rm, dfk, dfj; double[][] hess = new double[p][p]; for (m = 0; m < mmax; m++) { xm = x[m]; rm = fct(xm)-y[m]; for (k = 0; k < p; k++) { dfk = dfct(k, xm); for (j = 0; j<=k; j++) { dfj = dfct(j, xm); hess[j][k] += rm*ddfct(j, k, xm) + dfj*dfk; hess[k][j] = hess[j][k]; } } } } return hess; H jk = m [ f m y m 2 f m a j a k f m a j f m a k ] Prof. Dr. Nikolaus Wulff Informatik III 12
Was fehlt...? Der generische Parameterfit kann bis auf die Berechnung des Gradienten und der Hesse-Matrix fertig implementiert werden. Gradient und Hess-Matrix werden in auf die Modellfunktion zugeschnittenen speziellen Klassen implementiert (oder werden numerisch approximiert): protected double dfct(int k, double x) { double dx = (x - a[0]); double df = 0, y=fct(x), c=a[1], z=dx/c; switch(k) { } case 0: df = z*y/c; break; case 1: df = y/c*(z*z-1); break; case 2: df = y/a[2]; break; } return df; 1 a [ x a ]2 0 2 a 1 2 e 2 a 1 Prof. Dr. Nikolaus Wulff Informatik III 13
Datenfit und normierter Raum Die Bestimmung der Parameter zur Modellfunktionen lässt sich als ein Spezialfall der Minimierung einer Kostenfunktion auffassen. Obwohl dies häufig nicht auf analytisch auflösbare Formeln führt, bietet die Mathematik einen Rahmen, dies nummerisch effizienten durchführen zu können. Iterative Verfahren führen häufig auf konvergente (Cauchy) Folgen deren Konvergenz in einem vollständigen normierten (Vektor)Raum garantiert ist. D.h. zu einem vorgegeben Fehler ε>0 wird das Verfahren nach einer endlichen Zahl von n Schritten gegen die gesuchte Lösung konvergieren. Prof. Dr. Nikolaus Wulff Informatik III 14
Normierte Räume Ein linearer Raum V heißt normierter Raum, wenn jedem f V eine reelle Zahl f zugeordnet ist mit den Eigenschaften: f 0 und f =0 f =0 f = f f g f g C Bemerkung: Der Raum V muss nicht immer der sein, sondern auch Funktionsräume wie die Menge der stetigen (p-mal differenzierbaren) Funktionen bilden Räume : C X,C p X R n Prof. Dr. Nikolaus Wulff Informatik III 15
Beispiele von Normen Bekannte Normen auf x 1 := k =1 x k n R n sind die Manhatten Norm die euklidische Norm (per Skalarprodukt) x 2 := x, x = x T x= k=1 und die Maximumsnorm n x k 2 x :=max x 1,, x n allesamt Spezialfälle der generischen p-norm n x p := k =1 x k p 1/ p Prof. Dr. Nikolaus Wulff Informatik III 16
Beispiele von Normen Bekannte Normen auf x 1 := k =1 x k n R n sind die Manhatten Norm die euklidische Norm (per Skalarprodukt) x 2 := x, x = x T x= k=1 und die Maximumsnorm n x k 2 x :=max x 1,, x n allesamt Spezialfälle der generischen p-norm n x p := k =1 x k p 1/ p Prof. Dr. Nikolaus Wulff Informatik III 17
Normen für Funktionsräume Die Menge C(T) bzw. C[a,b] der stetigen Funktionen f auf kompakten T bzw. dem Interval T=[a,b] f :=max t T f t Die Menge C (n) [a,b] der n-mal stetig differenzierbaren Funktionen f auf dem Interval [a,b] n f := =0 n f = =0 max a t b f t Die Menge L p (a,b) der auf dem Interval [a,b] meßbaren (integrierbaren) Funktionen b f p := a f t p dt 1/ p Prof. Dr. Nikolaus Wulff Informatik III 18
Norm und Metrik Einem normierten Raum ist ein topologischer Abstandsbegriff mittels der kanonischen Metrik d(x,y), zugeordnet: d x, y := x y Die bis lang betrachteten Normen induzieren für diese Metrik, dass in ihnen alle Cauchy-Folgen gegen ihren Grenzwert konvergieren und Addition, Multiplikation und die Norm selber stetig sind: Aus: x n x, y n y, n Folgt: x n y n x y, n x n x, x n x Wichtige Voraussetzung für unsere Approximationen. Prof. Dr. Nikolaus Wulff Informatik III 19
Norm und Innenprodukt Ist auf dem Raum V eine Abbildung <x y> definiert (auch <x,y> oder x T y) mit den Eigenschaften: <x+y z> = <x y>+<x z> <αx y> = α<x y> <x y> = <y x> * <x x> => 0 und <x x>= 0 genau wenn x=0 So induziert dieses Innenprodukt eine Norm: x := <x x> 1/2 Z.B für Vektoren auf n x T y = k =1 x k y k R n oder Vektoren des L p (a,b) x y = dt x t y t Prof. Dr. Nikolaus Wulff Informatik III 20
Datenfit abstrakt... Mit Hilfe der Definition des Skalarprodukts n x T y= k=1 x k y k lässt sich der χ 2 -Fit als Minimierung der L 2 -Norm, d.h des Residuen Vektors (f-y) der Länge m schreiben: 2 a = m f m a y m 2 2 = f a y T f a y 2 f 2 y 2 2 y T f 2 =2 f y T f =0 Prof. Dr. Nikolaus Wulff Informatik III 21
Fourier-Transformation Die Übungsbeispiele verwendeten ein Polynom und eine Gauss-Funktion als Modell. Wird stattdessen ein Polynom in sin und cos Termen gewählt, so liefert der Fit die FFT Koeffizienten. f a, x = k =0 p/2 a2k cos k x a 2k 1 sin k x Allerdings wird bei der FFT die L 2 (0,2π) Norm verwendet. Prof. Dr. Nikolaus Wulff Informatik III 22
Diskret versus stetig Anstatt zu fordern, dass die Modellfunktion die diskreten Datenpunkte möglichst gut approximiert 2 a = m f a, x m y m 2 ist es auch möglich bei bekannter Funktion y(x) das Quadrat der L 2 (a,b) (Integral)norm zu minimieren: 2 a = x 0 x n dx f a, x y x 2 = f y 2 2 => x0 x n f dx f a, x a k Skalarprodukt : x = n f x0 dx y x a k < f f > = < y f > Prof. Dr. Nikolaus Wulff Informatik III 23