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 /  Die Prinzipien von Mathematica /  Transformationsregeln und Definitionen /

Sofortige und verzögerte DefinitionenDefinitionen mit verschiedenen Symbolen verknüpfen

2.4.9 Funktionen, die sich an die gefundenen Werte erinnern

Wenn Sie eine Funktionsdefinition mit Hilfe von := aufstellen, wird der Funktionswert jedesmal neu berechnet, wenn Sie nach ihm fragen. Bei manchen Berechnungsarten kann es sein, daß Sie schließlich viele Male nach dem gleichen Funktionswert fragen. Sie können in diesen Fällen dadurch Zeit sparen, daß Sie Mathematica dazu veranlassen, sich an alle von ihm gefundenen Funktionswerte zu erinnern. Hier ist ein „Idiom" für die Definition einer Funktion, die dieses bewirkt.

Definieren einer Funktion, die sich an von ihr gefundene Werte erinnert

Dadurch wird eine Funktion f definiert, die alle von ihr gefundenen Werte speichert.

In[1]:= f[x_] := f[x] = f[x - 1] + f[x - 2]

Hier sind die End-Bedingungen für die rekursive Funktion f.

In[2]:= f[0] = f[1] = 1

Out[2]=

Hier ist die ursprüngliche Definition von f.

In[3]:= ?f

Dadurch wird f[5] berechnet. Die Berechnung umfaßt die Bestimmung der Wertefolge f[5], f[4], f[2].

In[4]:= f[5]

Out[4]=

Alle Werte von f, die bis jetzt bestimmt wurden, werden explizit gespeichert.

In[5]:= ?f

Wenn Sie wieder nach f[5] fragen, kann Mathematica den Wert sofort nachschlagen; er muß nicht erneut berechnet werden.

In[6]:= f[5]

Out[6]=

Sie können sehen, wie eine Definition wie f[x_] := f[x] = f[x-1] + f[x-2] funktioniert. Die Funktion f[x_] ist als das „Programm" f[x] = f[x-1] + f[x-2] definiert. Wenn Sie nach einem Wert der Funktion f fragen, wird das „Programm" ausgeführt. Das Programm berechnet zuerst den Wert von f[x-1] + f[x-2] und speichert dann das Ergebnis als f[x] ab.

Häufig ist es dann eine gute Idee, Funktionen zu benutzen, die sich an Werte erinnern, wenn Sie mathematische Rekursionsrelationen in Mathematica implementieren. In einem typischen Fall ergibt eine Rekursionsrelation den Wert einer Funktion mit einem ganzzahligen Argument , der mittels der Werte derselben Funktion mit Argumenten , , usw. erhalten wird. Die oben benutzte Definition der Fibonacci-Funktion ist ein Beispiel für diese Art einer Rekursionsrelation. Der springende Punkt: Wenn Sie beispielsweise berechnen, indem Sie lediglich die Rekursionsrelation immer wieder anwenden, haben Sie schließlich Größen wie viele Male berechnet. In einem Fall wie diesem ist es deshalb besser, sich den Wert von zu merken und ihn dann nachzuschlagen, wenn Sie ihn benötigen, statt ihn erneut berechnen zu müssen.

Es gibt natürlich einen Nachteil, der mit der Speicherung von Werten verbunden ist. Man findet einen bestimmten Wert schneller, aber es wird mehr Platz benötigt, um alle zu speichern. Sie sollten gewöhnlich nur dann Funktionen definieren, die sich an ihre Werte erinnern, wenn die Gesamtanzahl der verschiedenen Werte, die erzeugt werden, vergleichsweise klein ist oder der Aufwand ihrer Neuberechnung sehr groß ist.

Sofortige und verzögerte DefinitionenDefinitionen mit verschiedenen Symbolen verknüpfen