Polynominterpolation - MATHEMATIK und TECHNIK mit MATHCAD

Werbung
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
Herunterladen