Numerisches Programmieren, Übungen

Ähnliche Dokumente
H.J. Oberle Analysis II SoSe Interpolation

6. Polynom-Interpolation

Numerische Verfahren

Numerisches Programmieren, Übungen

19. Januar Universität Erlangen-Nürnberg Department Mathematik PD Dr. Markus Bause. . Danach liefert die Gauss-Elinination. .

Polynominterpolation mit Matlab.

5 Interpolation und Approximation

Klassische Polynom Interpolation.

Musterlösungen zur Leistungsnachweisklausur vom Studiengang Informatik, Ingenieurinformatik, Lehramt

1 2 x x x x x x2 + 83

KAPITEL 8. Interpolation

Übungen zu Splines Lösungen zu Übung 20

1. Anhang: Spline-Funktionen

(x x j ) R m [x] (3) x x j x k x j. R m [x]. (4)

Interpolation. Kapitel 3

Übungen zur Ingenieur-Mathematik II SS 2017 Blatt Aufgabe 13: Betrachten Sie die Funktion. f(x) =

Interpolation und Approximation von Funktionen

Übungsblatt 3 Musterlösung

9. Parametrische Kurven und Flächen

D-MAVT NUMERISCHE MATHEMATIK FS 14 K. Nipp, A. Hiltebrand Lösung vom Test 2

c) Realisierung des Gauß Algorithmus in Gleitpunktarithmetik: Fehlerschranke hängt linear ab von max i,k l ik. 8n 3 max i,j,k a (k) ij ε.

Nachklausur am Donnerstag, den 7. August 2008

HTL Kapfenberg SPLINE Interpolation Seite 1 von 7.

Kapitel 4: Interpolation Sei U eine Klasse von einfach strukturierten Funktionen, z.b.

Lösungsvorschlag zur Modulprüfung Numerische Methoden Sommersemester 2016

Numerische Verfahren

8 Interpolation. 8.1 Problemstellung. Gegeben: Diskrete Werte einer Funktion f : R R an n + 1 Stützstellen. x 0 < x 1 <... < x n.

Approximation durch Polynome

Numerisches Programmieren, Übungen

Einführung in die numerische Mathematik

7 Integralrechnung für Funktionen einer Variablen

Interpolation, numerische Integration

Musterlösung zum Übungsblatt Interpolation nach Newton, Nevill, Lagrange.

VF-2: 2. Es seien x = 1 3 und y = π Bei der Berechnung von sin(x) sin(y) in M(10, 12, 99, 99) tritt. Auslöschung auf.

8 Polynominterpolation

Lösungen zu Blatt 13 der Übungen zur Vorlesung Numerik, LMU München, Wintersemester 2016/2017

Name Vorname Fachrichtg. Matrikelnr. Punkte Klausur Aufgabe max. Punkte Punkte. Bitte beachten!

Klausurvorbereitung Höhere Mathematik Lösungen

Mathematik für Sicherheitsingenieure I A

Mathematik für Wirtschaftswissenschaftler im WS 12/13 Lösungen zu den Übungsaufgaben Blatt 12

6 Polynominterpolation

Grundkurs Höhere Mathematik I (für naturwissenschaftliche. Studiengänge) Beispiele

Kapitel 7. Interpolation und Approximation II. Inhalt: 7.1 Spline-Interpolation 7.2 Trigonometrische Interpolation 7.3 Tschebyscheff-Approximation

9. Übungsblatt zur Vorlesung Mathematik I für Informatik

KLAUSUR zur Numerik I mit Lösungen. Aufgabe 1: (10 Punkte) [ wahr falsch ] 1. Die maximale Ordnung einer s-stufigen Quadraturformel ist s 2.

Numerische Methoden 7. Übungsblatt

Mathematik II für Studierende der Informatik (Analysis und lineare Algebra) im Sommersemester 2018

Einführung in die numerische Mathematik

UNIVERSITÄT KARLSRUHE Institut für Analysis HDoz. Dr. P. C. Kunstmann Dipl.-Math. M. Uhl. Sommersemester 2009

Klausur Numerische Mathematik (für Elektrotechniker), 24. Februar 2016

Grundlagen der Mathematik (BSc Maschinenbau)

Numerische Integration und Differentiation

Kapitel 3. Approximation von Funktionen und Daten. Interpolation Stückweise Interpolation Spline-Funktionen [

0.1 Modellierung von Kurven und Flächen mittels B-Splines

Die Programmieraufgaben

Lösung der Diplom-Vorprüfung Höhere Mathematik III/IV Aufgabe N1 (LR-Zerlegung mit Pivotisierung) Gegeben seien R 3.

gekrümmte Flächen / Freiformflächen (analog zur Kurvendarstellung)

3 Interpolation und Approximation

Wir konstruieren eine Wasserrutsche!

Prof. Dr. Rolf Linn

Interpolation, numerische Integration, Eigenwerte

5 Randwertprobleme. y = f(t, y, y ) für t J, (5.2a) y(t 0 ) = y 0, y(t) = y T (5.2b) zu gegebener Funktion f und Werten y 0, y T.

Kommentierte Musterlösung zur Klausur HM II für Naturwissenschaftler

Partialbruchzerlegung

Technische Universität München. Probeklausur Lösung SS 2012

Ableitungen von Funktionen

Institut für Geometrie und Praktische Mathematik

Die Interpolationsaufgabe besteht darin, eine (einfache) Funktion u n U n zu finden,

5 Interpolation und numerische Approximation

Übung 5, Analytische Optimierung

Serie 13. Analysis D-BAUG Dr. Cornelia Busch FS 2016

Numerisches Programmieren, Übungen

Musterlösung. 1 Relationen. 2 Abbildungen. TUM Ferienkurs Lineare Algebra 1 WiSe 08/09 Dipl.-Math. Konrad Waldherr

Übungen zu Einführung in die Numerische Mathematik (V2E2) Sommersemester 2016

3 a) Berechnen Sie die normierte Zeilenstufenform der Matrix A = normierte Zeilenstufenform:

GRUNDLAGEN MATHEMATIK

Polynominterpolation

Beispiele. zum Tutorium Numerisches Rechnen und Lineare Algebra WS 2016/2017

Numerik gewöhnlicher Differentialgleichungen. Übung 8 - Lösungsvorschlag

Gitterfreie Methoden. Florian Hewener. 29. Oktober 2013

Spline-Räume - B-Spline-Basen

Übungsblatt 2 Musterlösung

Übungsblatt 1 Musterlösung

Transkript:

Technische Universität München SoSe 20 Institut für Informatik Prof Dr Thomas Huckle Dipl-Inf Christoph Riesinger Dipl-Math Jürgen Bräckle Numerisches Programmieren, Übungen Musterlösung 6 Übungsblatt: Stückweise Interpolation ) Hermite-Interpolation i) Mit den Interpolationsbedingungen () p(x 0 ) = y 0, p(x ) = y, p (x 0 ) = y 0, p (x ) = y sowie dem allgemeinen Ansatz für kubische Polynome bzw dessen Ableitung p(t) = a 0 + a t + a 2 t 2 + a t, t [0; ] = [x 0 ; x ] p (t) = a t + 2a 2 t + a t 2, t [0; ] = [x 0 ; x ] ergibt sich das folgende lineare Gleichungssystem: p(t = 0) = a 0! = y 0 p(t = ) = a 0 + a + a 2 + a! = y p (t = 0) = a! = y 0 + 2a 2 + a p (t = ) = a! = y Nach etwas Umsortieren erhalten wir in Matrix-Vektor-Notation a y 2 0 a 2 0 0 0 a = y y 0 0 0 0 a 0 y 0 und Umformen auf Zeilenstufenform liefert y 0 2 y + y 0 0 0 y 0 0 0 0 y 0

Mit Rückwärtssubstitution ergibt sich somit als Lösung a 0 = y 0 a = y 0 a 2 = y + y 2y 0 y 0 a = y ( y + y 2y 0 y 0 ) y 0 y 0 = 2y 0 + y 0 2y + y Damit erhalten wir das kubische Polynom p(t) = y 0 + y 0t + ( y + y 2y 0 y 0 )t 2 + (2y 0 + y 0 2y + y )t bzw sortiert nach y 0, y, y 0 und y : p(t) = y 0 ( t 2 + 2t ) + y (t 2 2t ) + y 0 (t 2t 2 + t ) + y ( t 2 + t ) Mittels Koeffizientenvergleich bzgl den Variablen y 0, y, y 0 und y erhalten wir schließlich die kubischen Basispolynome H i, i = 0,, 2,, des Hermite-Ansatzes Sie ergeben sich zu p(t) = y 0 H 0 (t) + y H (t) + y 0 H 2 (t) + y H (t) H 0 (t) = t 2 + 2t H (t) = t 2 2t H 2 (t) = t 2t 2 + t H (t) = t 2 + t ii) Die 4 Bedingungen für das Teilintervall [x i, x i+ ] lauten p(x i ) = y i, p(x i+ ) = y i+ p (x i ) = y i, p (x i+ ) = y i+ Um in [x i, x i+ ] die Basispolynome H 0 (t) bis H (t), t [0; ], nützen zu können, müssen wir unsere Variable x vorher noch mit der Funktion t i (x) auf das Intervall [0; ] transformieren Das erreichen wir mit x x i t i (x) := = x x i [0; ] x i+ x i h i Damit ist die meiste Arbeit getan, es muss lediglich noch ein Detail beachtet werden: Wenn wir die transformierte Funktion ableiten, müssen wir die Kettenregel berücksichtigen Das gibt einen zusätzlichen Faktor h i, wie man folgendermaßen sieht: d dx (f(t i(x))) = d dt (f(t i(x))) dt dx = d dt (f(t i(x))) = d x i+ x i dt (f(t i(x))) h i Um nun das kubische Teilpolynom p i (t(x)) mit Hilfe des Hermite-Ansatzes festzulegen, müssen wir bei den Summanden mit y i und y i+ einen Faktor h i dazunehmen, weil dort bei der Ableitung ein /h i auftauchen würde, das bei der Interpolation nicht auftauchen darf! Somit erhalten wir für ein Teilintervall [x i, x i+ ]: p i (t i (x)) = y i H 0 (t i (x)) + y i+ H (t i (x)) + h i y i H 2 (t i (x)) + h i y i+ H (t i (x))

In Abb ist beispielhaft das interpolierende Hermite-Polynom zur Funktion sin(x) auf dem Intervall [0; 4π] dargestellt Dieses Bild wurde mit der matlab-routine vishermitesinm erstellt, das auch auf der Webpage unter der Rubrik Tutorium zum Download bereitgestellt ist Für die Benutzung der Datei unter octave muss lediglich der entsprechende plot-bereich ein- bzw auskommentiert werden 08 Hermite Interpolation mit 5 Werten auf [0;4π] f(x) = sin(x) Hermite Polynom Stuetzstellen 06 max error = 02459 04 02 0 02 04 06 08 0 2 4 6 8 0 2 4 Abbildung : Visualisierung eines Hermite-Polynoms als Interpoland von sin(x) auf [0; 4π] 2) Interpolation mit kubischen Splines i) Ziel: Darstellung von s(x) [xi ;x i+ ] mittels stückweiser kubischer Polynome p i (x) (analog zur Aufgabe )) Interpolationsbedingung: s(x i ) = y i, i = 0,, n (n + Bedingungen) C 2 -Stetigkeit: entscheidend nur die Klebestellen x,, x n, dazwischen kann man jedes stückweise kubisches Polynom immer problemlos stetig ableiten: s (x i+ ) = y i+, i = 0,, n 2 (C -Stetigkeit, notwendig für C 2 ) () s (x i+ ) = y i+, i = 0,, n 2 (n Bedingungen) (2) ii) Wir werden sofort in Teilaufgabe iii) sehen, warum wir die zweiten Ableitungen der

Hermite-Basispolynome brauchen Hier berechnen wir sie schnell: H 0 (t) = 6 + 2t = H (t) = 6 2t = H 2 (t) = 4 + 6t = H (t) = 2 + 6t = { 6, für t = 0 6, für t = { 6, für t = 0 6, für t = { 4, für t = 0 2, für t = { 2, für t = 0 4, für t = iii) Wie in Aufgabe ) können wir für die stückweisen kubischen Polynome p i (x) den Hermite- Ansatz machen, auch wenn wir die ersten Ableitungen y i (i =,, n ) aus () noch nicht kennen Wieder benötigen wir die Transformationsfunktion t i (x) = (x x i )/(x i+ x i ) = (x x i )/h, die mit unseren äquidistanten Stützstellen immer dasselbe h benutzt, um unseren x-wert ins Intervall [0; ] zu bekommen: p i (t i (x)) = y i H 0 (t i (x)) + y i+ H (t i (x)) + h y i H 2 (t i (x)) + h y i+ H (t i (x)) () Die Bedingungen (2) erlauben uns nun, die y i (i =,, n ) zu bestimmen, indem wir einfach die zweite Ableitung der Funktionen p i (t(x) = ) und p i+ (t(x) = 0) an den Klebestellen x i+ (i = 0,, n 2) gleichsetzen: p i (t = ) = s (x i+ ) = p i+(t = 0), i = 0,,, n 2 [ yi H h 2 0 () + y i+ H () + h y i H 2 () + h y i+ H () ] = = h 2 [ yi+ H 0 (0) + y i+2 H (0) + h y i+ H 2 (0) + h y i+2 H (0) ] Der Faktor /h 2 kommt vom zweimaligen Ableiten der Basispolynome (Kettenregel mit t i (x), vgl Aufg )) Jetzt sortieren wir das noch kurz nach Summanden mit y auf der linken und y auf der rechten Seite: h h 2 [ y i H 2 () + y i+ (H () H 2 (0)) y i+2 H (0) ] = = h 2 [ y i H 0 () + y i+ ( H () + H 0 (0)) + y i+2 H (0)] Wenn wir jetzt die Werte für H i erhalten wir für i = 0,, n 2: an der Stelle 0 bzw aus Teilaufgabe ii) einsetzen, [ y h i 2 + y i+ (4 ( 4)) y i+2 ( 2) ] = = h 2 [ y i 6 + y i+ ( ( 6) + ( 6)) + y i+2 6] [ y i + 4y i+ + y i+2] = h [y i+2 y i ]

Das ist ein lineares Gleichungssystem der Dimension n (analog zu Ergebnis aus Vorlesung, dort heißen die H i nur α i+ ): 4 y y 2 y 0 h 4 y y 0 2 = y y h y n 2 y n y n 4 y n y n y n 2 h y n Dabei müssen die Randbedingungen y 0 und y n gesetzt werden Eine Möglichkeit ist zb y 0 = 0 = y n oder auch die echte Ableitung der zu interpolierenden Funktion bei x 0, x n 08 Cubic spline through 5 interpolation nodes on [0;4π] with y prime 0 = y prime n = cos(x) function f cubic spline interpolated nodes max error = 08242 06 04 02 0 02 04 06 08 0 2 4 6 8 0 2 4 Abbildung 2: Visualisierung einer kubischen Spline-Funktion als Interpoland von sin(x) auf [0; 4π] für 5 Punkte In Abb 2 ist die kubische Splinefunktion zur Funktion sin(x) auf dem Intervall [0; 4π] dargestellt Man erkennt deutlich den Unterschied zur Hermite-Interpolation (selbe Situation) Allerdings hat das Hermite-Polynom mit Ableitungen an den Zwischenknoten mehr Informationen von der zu interpolierenden Funktion erhalten Splines sind per Konstruktion Funktionen, die möglichst glatt durch die vorgegebenen Interpolationspunkte laufen, da sie die Krümmung der Gesamtfunktion minimieren Starke Oszillationen wie beispielsweise bei der Polynominterpolation hohen Grades können so nicht auftreten Abbildung 2 wurde mit der matlab-routine spline easynm erstellt, das auch auf der Webpage unter der Rubrik Tutorium zum Download bereitgestellt ist Für die Benutzung der Datei unter octave muss lediglich der entsprechende plot-bereich ein- bzw auskommentiert werden

iv) Zum Abschluss bestimmen wir noch explizit eine Spline-Funktion Als Werte sind hierfür gegeben: i 0 2 x i 0 2 y i 2 0 2 y i 9?? 0 Die Spline-Funktion s(x) ist stückweise definiert über s(x) = p i (t i (x)) für x [x i, x i+ ] mit der Transformation auf das Einheitsintervall und den kubischen Funktionen [x i, x i+ ] [0, ], x t i (x) = x x i h i p i (t i (x)) = y i H 0 (t i (x)) + y i+ H (t i (x)) + h y i H 2 (t i (x)) + h y i+ H (t i (x)) Es sind also noch die fehlenden Ableitungen y i zu bestimmen, bevor wir die Funktion vollständig aufstellen können Da die Stützstellen äquidistant sind, können wir das lineare Gleichungssystem aus Teilaufgabe (iii) verwenden, um y und y 2 zu bestimmen Speziell für diesen Fall lautet es ( ) ( ) 4 y h 4 y 2 = ( ) y2 y 0 h h 2 y 0 y y h y Setzen wir h = sowie die y-werte ein, so erhalten wir ( ) ( ) ( 4 y 2 2 4 y 2 = 9 ) 0 0 ( = 9 ) und als Lösung ergibt sich schließlich ( ) y = y 2 ( ) Wir erhalten damit als Spline-Funktion p 0 (t 0 (x)) für x [, 0[ mit t 0 (x) = x + s(x) = p (t (x)) für x [0, [ mit t (x) = x p 2 (t 2 (x)) für x [, 2] mit t 2 (x) = x mit p 0 (t) = 2 H 0 (t) + 9 H 2 (t) H (t) p (t) = 2 H (t) H 2 (t) + H (t) p 2 (t) = 2 H 0 (t) + H (t) + H 2 (t)

5 25 2 5 05 0 05 05 0 05 5 2 Abbildung : Visualisierung der berechneten Spline-Funktion s(x) Zu Splines gäbe es noch viel zu sagen Es sind eine Reihe von Verallgemeinerungen möglich (nicht äquidistant, Kontrollpunkte abseits der Kurve,) Details hierzu werden üblicherweise in Vorlesungen zu CAD diskutiert Eine schöne Eigenschaft der Splines soll nicht unerwähnt bleiben: Eine Veränderung in einem Kontrollpunkt wirkt sich immer nur lokal auf einen kleinen Bereich der Kurve aus, der Großteil der Kurve bleibt unverändert

Wiederholung: Interpolation a) Dreiecksschema: Die Berechnungen im Einzelnen: x i i\k 0 2 0 0 y 0 = 0 y = 2 2 y 2 = 0 [x 0 ] f = sin(0) = 0 [x ] f = sin( π 2 ) = [x 2 ] f = sin(π) = 0 [x 0, x ] f = [x ]f [x 0 ]f x x 0 = 0 0 = [x, x 2 ] f = [x 2]f [x ]f x 2 x = 0 2 = [x 0, x, x 2 ] f = [x, x 2 ]f [x 0, x ]f = x 2 x 0 2 0 Als Interpolant ergibt sich damit: = p(x) = [x 0 ]f + [x 0, x ]f (x x 0 ) + [x 0, x, x 2 ]f (x x 0 ) (x x ) = 0 + (x 0)) + ( )(x 0))(x ) = 0 + (x 0) (x 0)(x ) b) Erweiterung des Dreiecksschemas: = x x(x ) = x(2 x) = 2x x 2 x i i\k 0 2 0 0 y 0 = 0 20 y = 2 20 2 2 y 2 = 0-0 y = 2 Die Berechnungen im Einzelnen: [x ] f = sin( π 6 ) = 2 [x 2, x ] f = [x ]f [x 2 ]f x x 2 = 0 2 2 = 0 [x, x 2, x ] f = [x 2, x ]f [x, x 2 ]f = + 0 x x = 2 20 [x 0, x, x 2, x ] f = [x, x 2, x ]f [x 0, x, x 2 ]f = 2 + 20 x x 0 0 = 20

Als neuer Interpolant ergibt sich damit: p(x) = x(2 x) x(x )(x 2) 20 c) d) Spline-Interpolation p (u) = p (u) u u 4 u 0 u 4 + p 2 (u) u u 0 u 4 u 0 = p (u) + u u 0 u 4 u 0 (p 2 (u) p (u)) Interpolation mit lokalen Polynomen niedrigen Grades, dadurch keine starken Oszillation an den Rändern auf Grund eines hohen Polynomgrads geringere Komplexität der Berechnungen (O(n) statt O(n 2 ), wobei in diesem Fall n = 00 gilt) e) Der erste Fehler befindet sich in Zeile 07: Dort muss es in der letzten Klammer heißen: /(xs[i+k]-xs[i]); Der zweite Fehler steckt in Zeile 09: Die Rückgabe muss im ersten Element des f-feldes erfolgen: 09 return f[0]; f) Die Methode foo() berechnet die zweidimensionale Polynominterpolation nach Aitken- Neville und testet, ob die Stützwerte passende Dimensionen haben (in x- und y-richtung gleich viele)