MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

________________________________________________________________________________

 

Inhalt....: Spline-Interpolation

Kategorie.: Grundkurs

Mathematik: Numerik 

MuPAD.....: 3.0.0

Datum.....: 2004-03-31

Autoren...: Kai Gehrs <acrowley@mupad.de>

Funktionen: plot, plot::Point2d, PointSize, plot::Function2d, Color,

Funktionen: numeric::cubicSpline

________________________________________________________________________________

 

Spline-Interpolation

 

Dieses Arbeitsblatt ist Bestandteil des MuPAD Grundkurses.

 

In der Praxis kommt es vor, dass man einen Datensatz (d.h. eine Menge von x-

und y-Koordinaten) gegeben hat und sich nun fragt, ob die Punkte einer gewißen

Gesetzmäßigkeit genügen. Man ist auf der Suche nach einer Funktion, deren

Graph möglichst glatt ist und durch die vorgebenen Punkte verläuft. Die Forderung

der "Glattheit" begründet sich u.a. darauf, dass man unter glatten Funktionen in der

Regel mehrfach differenzierbare Funktionen versteht, die sich dann mit Hilfe von

analytischen Methoden (z.B. Berechnung lokaler Maxima und Minima über die erste

bzw. zweite Ableitung) weiter untersuchen lassen.

 

Die Suche nach einer solchen Funktion ist z.B. im Kontext physikalischer Meßdaten

denkbar oder z.B. bei Börsenkursen zur Veranschaulichung des bisherigen Kurs-

laufs. Wir geben uns einen kleinen Datensatz vor und wollen im folgenden Stück

für Stück eine gute Interpolationsfunktion mit MuPAD bestimmen:

 

Daten:= [0, 0.1], [1.75, 0.9], [3.2, -0.01],

        [4.6, -1.02], [6.7, 0.1]

math

Mit Hilfe des Befehls plot::Point2d erzeugen wir uns Punkte, die sich anschließend

mit Hilfe des plot-Befehls darstellen lassen:

 

Punkte:= plot::Point2d( Daten[i][1],

                        Daten[i][2],

                        PointSize = 3  ) $ i = 1..5:

plot(Punkte)

MuPAD graphics

Ein erster naiver Ansatz zur Interpolation könnte darin bestehen, dass wir alle

benachbarten Punkte durch lineare Funktionen verbinden. Dazu verwenden wir

die aus dem Mittelstufenunterricht bekannte Gleichung zur Bestimmung der

Gerade durch zwei vorgebene (verschiedene) Punkte:

 

p:= (L1, L2) -> (L2[2]-L1[2])/(L2[1]-L1[1]) *

                (x-L1[1]) + L1[2]

math

Die entsprechenden linearen Interpolationsfunktionen bestimmen wir nun für je

zwei benachbarte Punkte und zeichnen anschließend die erhaltene (zusammen-

gestückelte) Funktion:

 

interPol:= plot::Function2d( p(Daten[i], Daten[i+1]),

                             x = Daten[i][1]..Daten[i+1][1] )

                             $ i = 1..4:

plot(interPol)

MuPAD graphics

Unsere Meßdaten von oben können wir nun spielend leicht mit der Interpolierenden

in ein gemeinsames Koordinatensystem zeichnen:

 

plot(interPol, Punkte)

MuPAD graphics

Offenbar verläuft der Graph der Funktion, die wir bestimmt haben, tatsächlich

durch die vorgegebenen Punkte. Die interpolierende Funktion ist zwar stetig,

denn sie weist keinerlei Sprungstellen auf, aber sie ist an den vorgegebenen

Meßwerten nicht differenzierbar. Eine weitere Untersuchung der Funktion mit

Mitteln der Analysis ist also nur begrenzt möglich.

 

Um eine glattere Funktion zu erhalten, greifen wir nun auf die Routine

numeric::cubicSpline zurück. Wir werden hier nicht auf algorithmische Details

eingehen, wie man zu der Spline-Interpolierenden gelangt, sondern betrachten

die MuPAD Funktion numeric::cubicSpline als Black-Box Routine. Diese Vor-

gehensweise ist keinesfalls verwerflich, denn im Bereich der Numerik gibt es

eine Reihe von approximativen Verfahren, die in der Praxis als sogenannte

Black-Box Routinen verwandt werden und bei deren Benutzung man sich keine

genaueren Gedanken über etwaige mathematische Hintergründe macht.

 

Wie oben werden wir auch die mittels Spline-Interpolation gewonnene Funktion

sofort grafisch darstellen:

 

S1:= numeric::cubicSpline(Daten):

Spline:= plot::Function2d(S1(x), x = 0..7):

plot(Spline)

MuPAD graphics

Der Verlauf der Funktion S1 ist wesentlich glatter als der unserer linearen Inter-

polierenden von oben. Wir zeichnen S1 und ihre erste und zweite Ableitung in ein

gemeinsames Koordinatensystem. Dabei färben wir die erste Ableitung blau und

die zweite Ableitung grün ein:

 

plot( Spline,

      plot::Function2d( S1(x, [1]), x = 0..7, Color = RGB::Blue ),

      plot::Function2d( S1(x, [2]), x = 0..7, Color = RGB::Green )

    )

MuPAD graphics

Offensichtlich läßt sich S1 nun durchaus mit den üblichen Mitteln der Analysis

studieren. Wir überprüfen graphisch, ob auch S1 durch die gewünschten Punkte

verläuft:

 

plot(Spline, Punkte)

MuPAD graphics

Damit haben wir unser Zeil erreicht. Sicherlich ist es allerdings so, dass unsere

Meßwerte nur sehr unwahrscheinlicher Weise von genau der berechneten

Spline-Funktion S1 stammen. Dem Verlauf des Funktionsgraphen von S1 nach

zu Urteilen, müssten die ursprünglichen Werte von der Funktion sin(x) herrühren.

Wir zeichnen S1 und sin(x) in ein gemeinsames Koordinatensystem:

 

plot( Spline, plot::Function2d(sin(x), x = 0..7,

                               Color = RGB::Red) )

MuPAD graphics

Der rote Graph ist der Graph der Funktion sin(x). Tatsächlich haben wir die

angeblichen Meßwerte als Punkte gewählt, die sich durch leichte Variation von

Punkten der Sinus-Funktion ergeben.

 

________________________________________________________________________________

 

Übungen:

1. Fügen Sie in die obige Liste von Daten drei weitere Punkte ein. Untersuchen Sie, wie stark sich

__ein kleines Maß an Zusatzfunktionen auf die Güte der Approximation der Sinus-Funktion mit Hilfe

__der Spline-Interpolierenden auswirken kann. Zeichnen Sie dazu Ihre neu gewonnene Spline-Inter-

__polierende mit der Sinus-Funktion wiederum in ein gemeinsames Koordinatensystem. Vergleichen

__Sie Ihre Grafik mit der oben angegebenen.

________________________________________________________________________________

 

Anmerkungen:

1.  Weitere Anregungen finden Sie in der Buchreihe Mathematik 1 x anders. In dieser Reihe

     wird eine Vielzahl unterschiedlichster mathematischer Probleme mit MuPAD gelöst. Die

     Bücher können unter www.schule.mupad.de/literatur kostenfrei kopiert werden.

 

________________________________________________________________________________

 

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.