|
2.4.6 Definitionen für Funktionen erstellen
Abschnitt 1.7.1 erörtert, wie Sie Funktionen in Mathematica definieren können. In einem typischen Fall würden Sie f[x_] = x^2 eintippen, um eine Funktion f zu definieren. (Tatsächlich benutzten die Definitionen in Abschnitt 1.7.1 den Operator := statt des Operators =. Abschnitt 2.4.8 wird genau erklären, wann jeweils die Operatoren := und = zu benutzen sind.)
Die Definition f[x_] = x^2 legt fest, daß Mathematica, wann immer es auf einen Ausdruck trifft, der zum Muster f[x_] paßt, diesen durch x^2 ersetzen soll. Da das Muster f[x_] mit allen Ausdrücken der Form f[irgendetwas] übereinstimmt, ist die Definition auf Funktionen f mit einem beliebigen „Argument" anwendbar.
Funktionsdefinitionen wie f[x_] = x^2 können mit Definitionen wie f[a] = b für indizierte Variablen verglichen werden, die im vorangegangenen Unterabschnitt erörtert wurden. Die Definition f[a] = b legt fest, daß, wann immer der bestimmte Ausdruck f[a] auftaucht, er durch b ersetzt werden soll. Aber die Definition sagt nichts aus über Ausdrücke wie f[y], bei denen f mit einem anderen „Index" erscheint.
Um eine „Funktion" zu definieren, müssen Sie Werte für Ausdrücke der Form f[x] spezifizieren, wobei das Argument x beliebig sein kann. Dies läßt sich durch Angabe einer Definition für das Muster f[x_] erreichen, wobei das Muster-Objekt x_ für einen beliebigen Ausdruck stehen kann.
Der Unterschied zwischen der Definition einer indizierten Variablen und einer Funktion
Das Erstellen von Definitionen für f[2] oder f[a] kann man sich als die Angabe von Werten für verschiedene Elemente eines „Arrays" mit Namen f vorstellen. Das Erstellen einer Definition für f[x_] ist wie die Angabe eines Wertes für eine Menge von „Array-Elementen" mit beliebigen „Indizes". In der Tat können Sie sich eine Funktion wirklich wie ein Array mit einem beliebig variablen Index vorstellen.
Mathematisch können Sie sich f als eine Abbildung vorstellen. Wenn Sie Werte für beispielsweise f[1] und f[2] definieren, legen Sie das Bild dieser Abbildung für verschiedene diskrete Punkte in ihrem Definitionsbereich fest. Die Definition eines Wertes für f[x_] legt das Bild von f auf einem Kontinuum von Punkten fest.
Dadurch wird eine Transformationsregel für den speziellen Ausdruck f[x] definiert.
In[1]:= f[x] = u
Out[1]= 
Wenn der spezielle Ausdruck f[x] auftaucht, wird er durch u ersetzt. Andere Ausdrücke der Form f[argument] werden jedoch nicht verändert.
In[2]:= f[x] + f[y]
Out[2]= 
Dies definiert einen Wert für f mit einem beliebigen Ausdruck als „Argument".
In[3]:= f[x_] = x^2
Out[3]= 
Die alte Definition für den speziellen Ausdruck f[x] wird weiter verwendet, doch die neue allgemeine Definition für f[x_] wird jetzt benutzt, um einen Wert für f[y] zu bestimmen.
In[4]:= f[x] + f[y]
Out[4]= 
Dies entfernt alle Definitionen für f.
In[5]:= Clear[f]
Mit Mathematica können Sie Transformationsregeln für jeden Ausdruck oder jedes Muster definieren. Sie können Definitionen für spezielle Ausdrücke wie f[1] oder f[a] mit Definitionen für Muster wie f[x_] mischen.
Viele Arten von mathematischen Funktionen können angelegt werden, indem man spezielle und allgemeine Definitionen in Mathematica mischt. Betrachten Sie zum Beispiel die Fakultäts-Funktion. Diese besondere Funktion ist tatsächlich in Mathematica eingebaut (sie wird als n! geschrieben). Sie können jedoch Mathematica-Definitionen verwenden, um die Funktion selbst aufzustellen.
Die mathematische Standard-Definition für die Fakultäts-Funktion kann beinahe direkt in Mathematica eingegeben werden, und zwar in der Form: f[n_] := n f[n-1]; f[1] = 1. Diese Definition legt fest, daß f[n] für jedes n durch n f[n-1] ersetzt werden sollte. Nur wenn n den Wert 1 hat, sollte f[1] einfach durch 1 ersetzt werden.
Hier ist der Wert für die Fakultäts-Funktion mit Argument 1.
In[6]:= f[1] = 1
Out[6]= 
Hier ist die allgemeine rekursive Beziehung für die Fakultäts-Funktion.
In[7]:= f[n_] := n f[n-1]
Nun können Sie mit diesen Definitionen Werte für die Fakultäts-Funktion bestimmen.
In[8]:= f[10]
Out[8]= 
Die Ergebnisse sind dieselben, wie Sie sie von der eingebauten Version für die Fakultät erhalten.
In[9]:= 10!
Out[9]= 
|