Frühere | Chronologischer Index | Spätere | ||
Vorherige | Thematischer Index | Nächste |
Guten Abend Herr Dolhaine, zu dem Thema kann ich Ihnen - allenfalls wie Sauerbier - dieselbe Lösung anbieten wie in der Diskussion in dieser Gruppe mit Hrn. Martin Heimann vom 21. 10. - 28. 10. vergangenen Jahres. Da Sie Funktionen (einer reellen Veränderlichen) interpolieren wollen, sind die Argumente strikt monoton. Deshalb kann man durch je drei aufeinanderfolgende Argument-Wert-Paare der Funktion je einen Kreis legen und im mittleren Punkt die erste und zweite Ableitung an diesen Kreis berechnen und diese beiden Ableitungen mit in die Interpolation eingeben. Es ist klar, dass die Ableitungen einer diskreten Wertetabelle irgendwie erfunden - definiert - werden müssen, und dies gelingt mit sehr kleinem Aufwand mit Hilfe von Kreisen und ist in dem beiliegenden Notebook (heimannSpline.nb) implementiert. Wie Sie an dem gleich folgenden Bildchen sehen, funktioniert es, lediglich die Bestimmung der Ableitungen am Anfangs- und Endpunkt des Intervalls habe ich recht primitiv behandelt; man sollte heimannInter[] entsprechende Parameter geben, um den Nutzer die Ableitungen vorgeben zu lassen. Damit Ableitung und Funktion etwa denselben Wertebereich haben, betrachte man die folgende Punktliste: p0 = Table[n 0.1 + Random[Real, {0., 0.099}], {n, 0, 32}] /. x : _Real -> {x, Cos[x]} definiere die Interpolation f und ihre Ableitung fd: f = heimannInter[p0]; fd = Derivative[1][f]; und erzeuge ein Bildchen: Show[{Graphics[Point[#] & /@ p0], Plot[{f[x], fd[x], Cos[x], -Sin[x]}, {x, First[First[p0]], First[Last[p0]]}, PlotRange -> All, PlotPoints -> 73, PlotStyle -> {RGBColor[0, 0, 1], RGBColor[1, 0, 0], RGBColor[0, 0, 0], RGBColor[0, 0, 0]}, DisplayFunction -> Identity]}, DisplayFunction \ -> $DisplayFunction, Frame -> True, Axes -> True] Das Bildchen ist im Anhang. heimannInter implementiert die oben genannte Idee, es kommt in der Ableitung fd recht gut -Sin[x] heraus. Mit den besten Grüssen U. Krause. Hans.Dolhaine@XXXXXXX.com schrieb: > Guten Morgen allerseits, > > wer kennt sich aus mit Interpolation? > > Ich habe eine Reihe experimenteller Daten data und kann mit > > f1= Interpolation[ data] > > wunderbar eine Funktion kreieren, die durch die Punkte geht. > Das ist aber nicht das, was ich will. Ich suche eine Funktion, die die > Ableitung der durch die Messwerte beschriebenen Funktion (die ist > unbekannt) möglichst gut approximiert. > > Das ist siche nicht die Ableitung von f1. > > f2= Derivative[1][f1] > > weist Sprünge und Zacken auf und ist somit alles andere als glatt, was von > der gesuchten Ableitung aber erwartet wird. > > Weiss jemand Rat? > > Hans Dolhaine > _________________________________ > > VTR-TS > Phone: +49-211-797-4809 > Fax: +49-211-798-1853 > Mobile: 0171 97 17 049 > E-Mail: Hans.Dolhaine@XXXXXXX.com
heimannSpline.nb
Description: Mathematica Notebook document
Frühere | Chronologischer Index | Spätere | ||
Vorherige | Thematischer Index | Nächste |
DMUG-Archiv, http://www.mathematica.ch/archiv.html