\mnb150ÿ{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fswiss\fprq2 System;}{\f3\fswiss\fprq2 Arial;}{\f4\fmodern\fprq1 Courier New;}{\f5\fswiss\fprq2 Helvetica;}{\f6\froman\fprq2 Times New Roman;}} {\colortbl\red0\green0\blue0;\red0\green128\blue0;\red0\green0\blue128;\red0\green0\blue255;\red255\green0\blue0;\red255\green255\blue255;} \deflang1031\pard\ri4\plain\f4\fs20\cf0\b ________________________________________________________________________________ \par \par \plain\f4\fs20\cf0 Inhalt....: Spline-Interpolation \par Kategorie.: Grundkurs \par Mathematik: Numerik \par MuPAD.....: 3.0.0 \par Datum.....: 2004-03-31 \par Autoren...: Kai Gehrs \par Funktionen: plot, plot::Point2d, PointSize, plot::Function2d, Color, \par Funktionen: numeric::cubicSpline \par \plain\f4\fs20\cf0\b ________________________________________________________________________________ \par \plain\f3\fs36\cf0\b \par \plain\f3\fs40\cf0\b Spline-Interpolation \par \par \plain\f3\fs24\cf1 Dieses Arbeitsblatt ist Bestandteil des \plain\f3\fs24\cf1\b MuPAD Grundkurses\plain\f3\fs24\cf1 .\plain\f6\fs24 \par \par \plain\f3\fs28 In der Praxis kommt es vor, dass man einen Datensatz (d.h. eine Menge von x- \par und y-Koordinaten) gegeben hat und sich nun fragt, ob die Punkte einer gewi\'dfen \par Gesetzm\'e4\'dfigkeit gen\'fcgen. Man ist auf der Suche nach einer Funktion, deren \par Graph m\'f6glichst glatt ist und durch die vorgebenen Punkte verl\'e4uft. Die Forderung \par der "Glattheit" begr\'fcndet sich u.a. darauf, dass man unter glatten Funktionen in der \par Regel mehrfach differenzierbare Funktionen versteht, die sich dann mit Hilfe von \par analytischen Methoden (z.B. Berechnung lokaler Maxima und Minima \'fcber die erste \par bzw. zweite Ableitung) weiter untersuchen lassen. \par \par Die Suche nach einer solchen Funktion ist z.B. im Kontext physikalischer Me\'dfdaten \par denkbar oder z.B. bei B\'f6rsenkursen zur Veranschaulichung des bisherigen Kurs- \par laufs. Wir geben uns einen kleinen Datensatz vor und wollen im folgenden St\'fcck \par f\'fcr St\'fcck eine gute Interpolationsfunktion mit MuPAD bestimmen: \par \par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf4 {\pntext\f1\'b7\tab}Daten:= [0, 0.1], [1.75, 0.9], [3.2, -0.01], \par \pard\li600\ri1\fi-300\plain\f4\fs28\cf4 [4.6, -1.02], [6.7, 0.1] \par \pard\ri4\plain\f3\fs28 Mit Hilfe des Befehls plot::Point2d erzeugen wir uns Punkte, die sich anschlie\'dfend \par mit Hilfe des plot-Befehls darstellen lassen: \par \par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf4 {\pntext\f1\'b7\tab}Punkte:= plot::Point2d( Daten[i][1], \par \pard\li600\ri1\fi-300\plain\f4\fs28\cf4 Daten[i][2], \par PointSize = 3 ) $ i = 1..5: \par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf4 {\pntext\f1\'b7\tab}plot(Punkte) \par \pard\ri4\plain\f3\fs28 Ein erster naiver Ansatz zur Interpolation k\'f6nnte darin bestehen, dass wir alle \par benachbarten Punkte durch lineare Funktionen verbinden. Dazu verwenden wir \par die aus dem Mittelstufenunterricht bekannte Gleichung zur Bestimmung der \par Gerade durch zwei vorgebene (verschiedene) Punkte: \par \par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf4 {\pntext\f1\'b7\tab}p:= (L1, L2) -> (L2[2]-L1[2])/(L2[1]-L1[1]) * \par \pard\li600\ri1\fi-300\plain\f4\fs28\cf4 (x-L1[1]) + L1[2] \par \pard\ri4\plain\f3\fs28 Die entsprechenden linearen Interpolationsfunktionen bestimmen wir nun f\'fcr je \par zwei benachbarte Punkte und zeichnen anschlie\'dfend die erhaltene (zusammen- \par gest\'fcckelte) Funktion: \par \par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf4 {\pntext\f1\'b7\tab}interPol:= plot::Function2d( p(Daten[i], Daten[i+1]), \par \pard\li600\ri1\fi-300\plain\f4\fs28\cf4 x = Daten[i][1]..Daten[i+1][1] ) \par $ i = 1..4: \par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf4 {\pntext\f1\'b7\tab}plot(interPol) \par \pard\ri4\plain\f3\fs28 Unsere Me\'dfdaten von oben k\'f6nnen wir nun spielend leicht mit der Interpolierenden \par in ein gemeinsames Koordinatensystem zeichnen: \par \par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf4 {\pntext\f1\'b7\tab}plot(interPol, Punkte) \par \pard\ri4\plain\f3\fs28 Offenbar verl\'e4uft der Graph der Funktion, die wir bestimmt haben, tats\'e4chlich \par durch die vorgegebenen Punkte. Die interpolierende Funktion ist zwar stetig, \par denn sie weist keinerlei Sprungstellen auf, aber sie ist an den vorgegebenen \par Me\'dfwerten nicht differenzierbar. Eine weitere Untersuchung der Funktion mit \par Mitteln der Analysis ist also nur begrenzt m\'f6glich. \par \par Um eine glattere Funktion zu erhalten, greifen wir nun auf die Routine \par numeric::cubicSpline zur\'fcck. Wir werden hier nicht auf algorithmische Details \par eingehen, wie man zu der Spline-Interpolierenden gelangt, sondern betrachten \par die MuPAD Funktion numeric::cubicSpline als Black-Box Routine. Diese Vor- \par gehensweise ist keinesfalls verwerflich, denn im Bereich der Numerik gibt es \par eine Reihe von approximativen Verfahren, die in der Praxis als sogenannte \par Black-Box Routinen verwandt werden und bei deren Benutzung man sich keine \par genaueren Gedanken \'fcber etwaige mathematische Hintergr\'fcnde macht. \par \par Wie oben werden wir auch die mittels Spline-Interpolation gewonnene Funktion \par sofort grafisch darstellen: \par \par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf4 {\pntext\f1\'b7\tab}S1:= numeric::cubicSpline(Daten): \par {\pntext\f1\'b7\tab}Spline:= plot::Function2d(S1(x), x = 0..7): \par {\pntext\f1\'b7\tab}plot(Spline) \par \pard\ri4\plain\f3\fs28 Der Verlauf der Funktion S1 ist wesentlich glatter als der unserer linearen Inter- \par polierenden von oben. Wir zeichnen S1 und ihre erste und zweite Ableitung in ein \par gemeinsames Koordinatensystem. Dabei f\'e4rben wir die erste Ableitung blau und \par die zweite Ableitung gr\'fcn ein: \par \par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf4 {\pntext\f1\'b7\tab}plot( Spline, \par \pard\li600\ri1\fi-300\plain\f4\fs28\cf4 plot::Function2d( S1(x, [1]), x = 0..7, Color = RGB::Blue ), \par plot::Function2d( S1(x, [2]), x = 0..7, Color = RGB::Green ) \par ) \par \pard\ri4\plain\f3\fs28 Offensichtlich l\'e4\'dft sich S1 nun durchaus mit den \'fcblichen Mitteln der Analysis \par studieren. Wir \'fcberpr\'fcfen graphisch, ob auch S1 durch die gew\'fcnschten Punkte \par verl\'e4uft: \par \par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf4 {\pntext\f1\'b7\tab}plot(Spline, Punkte) \par \pard\ri4\plain\f3\fs28 Damit haben wir unser Zeil erreicht. Sicherlich ist es allerdings so, dass unsere \par Me\'dfwerte nur sehr unwahrscheinlicher Weise von genau der berechneten \par Spline-Funktion S1 stammen. Dem Verlauf des Funktionsgraphen von S1 nach \par zu Urteilen, m\'fcssten die urspr\'fcnglichen Werte von der Funktion sin(x) herr\'fchren. \par Wir zeichnen S1 und sin(x) in ein gemeinsames Koordinatensystem: \par \par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf4 {\pntext\f1\'b7\tab}plot( Spline, plot::Function2d(sin(x), x = 0..7, \par \pard\li600\ri1\fi-300\plain\f4\fs28\cf4 Color = RGB::Red) ) \par \pard\ri4\plain\f3\fs28 Der rote Graph ist der Graph der Funktion sin(x). Tats\'e4chlich haben wir die \par angeblichen Me\'dfwerte als Punkte gew\'e4hlt, die sich durch leichte Variation von \par Punkten der Sinus-Funktion ergeben. \par \plain\f4\fs20\cf0\b \par ________________________________________________________________________________ \par \plain\f3\fs22\cf3\b \par \plain\f3\fs22\cf2\b \'dcbungen: \par 1.\plain\f3\fs22\cf2 F\'fcgen Sie in die obige Liste von Daten drei weitere Punkte ein. Untersuchen Sie, wie stark sich \par \plain\f3\fs22\cf5 __\plain\f3\fs22\cf2 ein kleines Ma\'df an Zusatzfunktionen auf die G\'fcte der Approximation der Sinus-Funktion mit Hilfe \par \plain\f3\fs22\cf5 __\plain\f3\fs22\cf2 der Spline-Interpolierenden auswirken kann. Zeichnen Sie dazu Ihre neu gewonnene Spline-Inter- \par \plain\f3\fs22\cf5 __\plain\f3\fs22\cf2 polierende mit der Sinus-Funktion wiederum in ein gemeinsames Koordinatensystem. Vergleichen \par \plain\f3\fs22\cf5 __\plain\f3\fs22\cf2 Sie Ihre Grafik mit der oben angegebenen. \par \plain\f4\fs20\cf0\b ________________________________________________________________________________ \par \plain\f3\fs22\cf0 \par \plain\f3\fs22\cf1\b Anmerkungen:\plain\f3\fs22\cf1 \par \plain\f3\fs20\cf1\b 1\plain\f3\fs20\cf1 . Weitere Anregungen finden Sie in der Buchreihe \plain\f3\fs20\cf4 Mathematik 1 x anders\plain\f3\fs20\cf1 . In dieser Reihe \par wird eine Vielzahl unterschiedlichster mathematischer Probleme mit MuPAD gel\'f6st. Die \par B\'fccher k\'f6nnen unter \plain\f5\fs20\cf3 www.schule.mupad.de/literatur\plain\f3\fs20\cf1 kostenfrei kopiert werden. \par \plain\f3\fs20\cf3 \par \plain\f4\fs20\cf0\b ________________________________________________________________________________ \par \plain\f4\fs28\cf4 \par \par }