This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.2)

 Documentation /  Mathematica /  Das Mathematica Buch /  Höhere Mathematik in Mathematica /  Numerische Operationen mit Daten /

InhaltNäherungsfunktionen und Interpolation

3.8.1 Kurvenanpassung

Mathematica bietet mehrere Ansätze für die Anpassung von Daten nach der Methode der kleinsten Quadrate. Die Grundidee der Anpassungen besteht darin, ausgehend von einer Liste von Funktionen, die Sie spezifiziert haben, eine Linearkombination dieser Funktionen zu finden, die Ihre Daten so gut wie möglich approximiert. Die Güte der Anpassung wird durch die Größe gemessen, wobei der Wert Ihres -ten Datenpunktes ist, und ist der Wert, der sich aus der Anpassung ergibt. Die beste Anpassung ist die, die minimiert.

Die Grundform der Funktion Fit

Einige Anpassungen an Listen von Daten

Hier ist eine Tabelle der ersten 20 Primzahlen.

In[1]:= fp = Table[Prime[x], {x, 20}]

Out[1]=

Hier ist ein Diagramm dieser „Daten".

In[2]:= gp = ListPlot[ fp ]

Out[2]=

Dies ergibt eine lineare Anpassung an die Liste der Primzahlen. Das Ergebnis ist die beste Linearkombination der Funktionen 1 und x.

In[3]:= Fit[fp, {1, x}, x]

Out[3]=

Hier ist ein Diagramm der Anpassung.

In[4]:= Plot[%, {x, 0, 20}]

Out[4]=

Hier ist die Anpassung als Überlagerung der originalen Daten eingezeichnet.

In[5]:= Show[%, gp]

Out[5]=

Dies ergibt eine quadratische Anpassung der Daten.

In[6]:= Fit[fp, {1, x, x^2}, x]

Out[6]=

Hier ist ein Diagramm der quadratischen Anpassung.

In[7]:= Plot[%, {x, 0, 20}]

Out[7]=

Dies zeigt die Anpassung und die originalen Daten in einer Überlagerung. Die quadratische Anpassung ist besser als die lineare.

In[8]:= Show[%, gp]

Out[8]=

Anpassungen mit Polynomen werden am häufigsten eingesetzt. Vermutet man, daß die Daten einer anderen funktionalen Form folgen, so kann man die entsprechenden Funktionen in die Liste der anzupassenden Funktionen aufnehmen.

Dies ergibt eine Tabelle der Werte für von 1 bis 10 in Schritten von 1.

In[9]:= ft = Table[ N[1 + 2 Exp[-x/3]] , {x, 10}]

Out[9]=

Diese Anpassung gewinnt die ursprüngliche Funktionalform wieder.

In[10]:= Fit[ ft, {1, Exp[-x/3]}, x ]

Out[10]=

Fügen Sie in die Liste andere Funktionen ein, so ermittelt Fit für diese kleine Koeffizienten.

In[11]:= Fit[ ft, {1, Sin[x], Exp[-x/3], Exp[-x]}, x ]

Out[11]=

Mit Chop können Sie sich der Terme mit kleinen Koeffizienten entledigen.

In[12]:= Chop[%]

Out[12]=

Es gibt mehrere Gründe, um Anpassungen vorzunehmen.

Haben Sie für die Daten ein bestimmtes Modell, so können Sie mit einer Anpassung versuchen, die Modellparameter zu bestimmen.

Es kommt auch häufig vor, daß man Näherungsformeln sucht, die einen bestimmten Datensatz beschreiben. Die Formel, die dann durch Fit erhalten wird, kann als Zusammenfassung der eigentlichen Daten aufgefaßt werden.

In den bisherigen Beispielen für Fit wurde angenommen, daß die Datenpunkte den Ergebnissen der Auswertung einer Funktion einer Variablen entstammen, wobei die Variable nacheinander die Werte 1, 2, ... annimmt. Man kann auch Daten spezifizieren, die von mehreren Variablen abhängen, wobei jede eine beliebige Wertefolge annimmt, die nicht notwendigerweise regelmäßig angeordnet ist.

Methoden der Spezifikation von Daten in Fit

Dies ergibt eine Tabelle der Werte von , und . Sie müssen Flatten einsetzen, um sie in die richtige Form für Fit zu bringen.

In[13]:= Flatten[ Table[ {x, y, 1 + 5x - x y},
{x, 0, 1, 0.4}, {y, 0, 1, 0.4} ], 1]

Out[13]=

Dies produziert eine Anpassung an eine Funktion zweier Variablen.

In[14]:= Fit[ % , {1, x, y, x y}, {x, y} ]

Out[14]=

Fit findet mittels der Liste der angegebenen Funktionen und nach dem Kriterium der Methode der kleinsten Quadrate die beste Anpassung an Ihre Daten. Es gibt jedoch absolut keine Garantie, daß die erhaltene Anpassung Ihre Daten akkurat reproduzieren wird. Um dies zu überprüfen, sollten statistische Testfunktionen eingesetzt werden, wie sie zum Beispiel in den Statistik-Paketen von Mathematica zu finden sind.

Finden exakter Anpassungen

Wenn ausreichend viele Datenpunkte vorliegen, dann kann durch Hinzunahme genügend vieler Terme ein Polynom konstruiert werden, das die Daten exakt anpaßt. Im allgemeinen gilt, daß für Datenpunkte ein Polynom höchstens -ten Grades benötigt wird. Die Funktion InterpolatingPolynomial liefert ein solches Polynom. Derartige Polynome sind nicht nur als Anpassungen numerischer Daten nützlich, sondern auch in diversen algebraischen Algorithmen.

Dies ergibt ein Polynom vierten Grades, und dieses paßt die gegebenen Daten exakt an.

In[15]:= efit = InterpolatingPolynomial[{1, 2, 6, 24, 120}, x]

Out[15]=

Für reproduziert das Polynom den vierten Datenpunkt genau.

In[16]:= efit /. x -> 4

Out[16]=

Dies verwendet Polynom-Anpassungen zur Extrapolation der Daten.

In[17]:= efit /. x -> 7.5

Out[17]=

InhaltNäherungsfunktionen und Interpolation