HTL Saalfelden Polynominterpolation Seite 1 von 5 Wilfried Rohm Polynominterpolation (Varianten) Mathematische / Fachliche Inhalte in Stichworten: Lösen von Gleichungssysteme, Matrizenrechnung, Mathcad-Programm Kurzzusammenfassung Ausgehend von einer einfachen Aufgabenstellung, bei der eine Polynomfunktion 2.Grades zu Interpolationszweckeen gesucht wird, wird gezeigt, wie dieses Problem mit steigender Allgemeinheit in Mathcad gelöst werden kann. Schließlich wird ein kleines Programm vorgestellt, mit dem ein Interpolationspolynom beliebigen Grades erstellt werden kann. Auch die mathcadspezifischen Funktionen werden vorgestellt. Der Artikel sollte sich zum Selbststudium (auch für Schüler!) eignen. Lehrplanbezug (bzw. Gegenstand / Abteilung / Jahrgang): Angewandte Mathematik, 3. / 5.Jahrgang Mathcad-Version: erstellt mit Mathcad 11 Anmerkungen bzw. Sonstiges: Das Einstiegsbeispiel stammt aus dem HTL-Lehrbuch Timischl/Kaiser, Band 3. Der Kraftstroffverbrauch eines PKW pro 100 km wurde für drei Geschwindigkeiten festgestellt: 6,0 Liter bei 70 km/h, 7,1 Liter bei 90 km/h und 9,9 Liter bei 120 km/h. Berechne durch ein geeignetes Interpolationspolynom näherungsweise den Treibstoffverbrauch für eine Geschwindigkeit von 100 km/h. Dieses Beispiel dient als Ausgangspunkt für die Lösung des Problems nach verschiedenen Methoden. Ziel ist, durch zunehmende Allgmeinheit der Methode bzw. des Lösungsverfahrens schließlich einen Weg zu finden, wie nach Eingabe einer völlig anderen Matrix die Lösung automatisch ermittelt wird. 1. 2. 3. 4. 5. Mit dem Lösungsblock vorgabe - suchen (speziell auf das Beispiel zugeschnitten) Mit Matrizenrechnung (aber auch auf das spezielle Beispiel zugeschnitten) Mit Matrizenrechnung - allgemeine Formulierung Mit einem kleinen Mathcadprogramm, das beliebige Eingabematrizen erlaubt Mit Hilfe der eingebauten Mathcad-Funktionen regress und interp 70 8.0 p := 90 7.1 120 9.9 〈0〉 px := p 〈1〉 py := p x0 := 100 Wir legen als Interpolationsfunktion eine Polynomfunktion 2 Grades durch die Punkte Wilfried Rohm 2005 HTL Saalfelden Polynominterpolation Seite 2 von 5 Variante 1: vorgabe-suchen Variante 1 Lösung eines Gleichungssystems in normaler (ausführlicher) Schreibweise. Nachteil: Unflexibel bei Änderungen oder mehr Punkten etc. Vorgabe 2 a ⋅ 70 + b ⋅ 70 + c = 8.0 2 a ⋅ 90 + b ⋅ 90 + c = 7.1 2 a ⋅ 120 + b ⋅ 120 + c = 9.9 2.7667 ⋅ 10-3 Ermittlung des Ergebnisses durch a symbolische Rechnung - Ausgabe b := Suchen( a , b , c) gleit , 5 → −.48767 numerisch mit 2 Nachkommastellen. 28.580 c 2 poly( x ) := a ⋅ x + b ⋅ x + c Das gesuchte Polynom poly( 100 ) = 7.5 Die gesuchte Lösung für 100 km/h Variante 1: vorgabe-suchen Variante 2: Matrizenrechnung Variante 2 Lösung des (linearen) Gleichungssystems mit Matrizenrechnung: Kürzere Schreibweise, aber sonst ähnlich wie Variante 1 702 70 1 A := 902 90 1 120 2 120 1 8.0 B := 7.1 9.9 a 2.767 × 10− 3 b = −0.488 c 28.58 a b := A− 1 ⋅ B c 2 poly( x ) := a ⋅ x + b ⋅ x + c Das gesuchte Polynom poly( 100 ) = 7.5 Die gesuchte Lösung für 100 km/h Variante 2: Matrizenrechnung Var. 3: Matrizenr.(allgemeiner) Variante 3 Verallgemeinerung der Variante 2 - d.h. die Punkte (aber nicht deren Anzahl!) können oben geändert werden px 2 px 1 ( 0) 0 2 A := ( px ) px 1 B := py 1 1 px 2 px 1 2 ( 2) a b := A− 1 ⋅ B c 2 a 2.767 × 10− 3 b = −0.488 c 28.58 poly( x ) := a ⋅ x + b ⋅ x + c poly( x0) = 7.5 Das gesuchte Polynom Lösung für x0 km/h Var. 3: Matrizenr.(allgemeiner) Wilfried Rohm 2005 HTL Saalfelden Polynominterpolation Seite 3 von 5 Grafische Lösung: Allgemeine Foormulierung der Laufvariablen: px − px 0 x := px , px + 0 0 2 100 .. px 2 10 poly ( x) 9 py poly ( x0) 8 7 80 100 120 x , px , x0 Variante 4: Allgemeine Rechnung - Bestimmung der Matrizen über kleine Mathcad-Programme Zur Demonstration werden 2 verschiedene Punktmatrizen definiert, um die Anpassungsfähigkeit zu zeigen. Über Maus-rechts können die einzelnen Ausdrücke aktiviert oder deaktiviert werden. 30 50 p := 70 90 120 5.4 4.9 70 8.0 p := 90 7.1 120 9.9 4.7 5.5 7.1 Mathcad-Programm für Variante 4 〈0〉 px := p 〈1〉 py := p x := x A := for i ∈ 0 .. grad for j ∈ 0 .. grad A i, j return A Wilfried Rohm ( i) ← px j n := länge( px) n=5 grad := n − 1 grad = 4 Allgemeine Berechnung der Koeffizientenmatrix und des Variablenvektors in Abhängigkeit von der Anzahl der Punkte, die eingegeben wurde. Diese bestimmt ja die Dimension des Polynoms! Auf der rechte Seite wird der Variablenvektor mit der jeweiligen Potenz der Unbekannten x erzeugt. Allgemeine Ermittlung des Grades des Interpolationspolynoms X( x ) := for i ∈ 0 .. grad X ←x i i return X 2005 HTL Saalfelden 1 1 A = 1 1 1 Polynominterpolation 5.4 3 5 6 2.5 × 10 1.25 × 10 6.25 × 10 4.9 3 5 7 4.9 × 10 3.43 × 10 2.401 × 10 py = 4.7 5.5 3 5 7 8.1 × 10 7.29 × 10 6.561 × 10 7.1 4 6 8 1.44 × 10 1.728 × 10 2.074 × 10 30 4 2.7 × 10 900 50 70 90 120 8.1 × 10 −1 l := A Ermittlung des Lösungsvektors mit Hilfe der Matrizenrechnung 5 ⋅ py -3 p ( x ) := l ⋅ X( x ) Seite 4 von 5 1 x 2 X( x ) → x x3 x 4 2.175 0.285 − 3 l = −8.366 × 10 −5 9.093 × 10 −3.181 × 10− 7 2 p ( x ) gleit , 2 → 2.2 + .29 ⋅ x − 8.4 ⋅ 10 ⋅ x + 9.1 ⋅ 10 Hier wird gezeigt, dass mit unserer Methode tatsächlich das "richtige" Gleichungssystem gelöst wurde -5 3 ⋅ x − 3.2 ⋅ 10 p ( x0) = 6.2 -7 ⋅x 4 Die Lösung! 2 3 4 1 + 30 ⋅ x + 900 ⋅ x + 27000 ⋅ x + 810000 ⋅ x 5.4 2 3 4 + ⋅ + 125000 ⋅ x + 6250000 ⋅ x 1 + 50 ⋅ x 2500 x 4.9 = 4.7 2 3 4 A ⋅ X( x ) = py → 1 + 70 ⋅ x + 4900 ⋅ x + 343000 ⋅ x + 24010000 ⋅ x 5.5 2 3 4 1 + 90 ⋅ x + 8100 ⋅ x + 729000 ⋅ x + 65610000 ⋅ x 7.1 1 + 120 ⋅ x + 14400 ⋅ x2 + 1728000 ⋅ x 3 + 207360000 ⋅ x 4 px − px x := px , px + 0 0 0 grad .. px grad 100 Mathcad-Programm für Variante 4 8 p( x) py 7 6 p( x0) 5 4 0 50 100 x , px , x0 Wilfried Rohm 2005 HTL Saalfelden Polynominterpolation Seite 5 von 5 Variante 5: Mathcad-Funktionen Variante 5: Verwendung fertiger Funktionen Es wird das Funktionenpaar regress - interp verwendet. Damit werden eigentlich Regressionsfunktionen ermittelt, jedoch kann eine Interpolationsfunktion als Regressfunktion aufgefaßt werden, wenn der Grad der Regressionsfunktion gleich der Anzahl der Punkte - 1 (also wie oben: n-1) ist. vs := regress( px , py , grad) y ( x ) := interp( vs , px , py , x ) 3 3 4 2.175 0.285 vs = − 3 −8.366 × 10 −5 9.093 × 10 −3.181 × 10− 7 Diese Funktion regress erzeugt den nebenstehenden Vektor Was ermittelt regress? ab px − px 0 x := px , px + 0 0 grad vs 0 = 3 vs ist Ergebnis einer regress-Funktion und nicht etwa einer Spline-Funktion vs 1 = 3 Der Index innerhalb von vs, ab dem die Polynomkoeffizienten stehen vs 2 = n Ordnung der Anpassung (Grad des Polynoms) vs 3 Die Koeffizienten des Polynoms .. px grad 100 8 7 y( x) py 6 5 4 40 60 80 100 120 x , px Variante 5: Mathcad-Funktionen Wilfried Rohm 2005