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

 Documentation /  Mathematica /  Das Mathematica Buch /  Die Prinzipien von Mathematica /  Funktionaloperationen /

Anwendung von Funktionen auf Teile von AusdrückenKonstruktion von Listen mit Funktionen

2.2.5 Reine Funktionen

Reine Funktionen

Wenn Sie Funktionaloperationen, wie Nest und Map, benutzen, müssen Sie stets eine Funktion angeben, die anzuwenden ist. In allen bisherigen Beispielen wurde der „Name" der Funktion benutzt, um die Funktion zu spezifizieren. Mittels reiner Funktionen lassen sich Funktionen angeben, die auf Argumente angewandt werden können, ohne die Namen der Funktionen explizit zu definieren.

Dies definiert eine Funktion h.

In[1]:= h[x_] := f[x] + g[x]

Nachdem Sie die Funktion h definiert haben, können Sie ihren Namen in Map benutzen.

In[2]:= Map[h, {a, b, c}]

Out[2]=

Hier ist eine Möglichkeit, dasselbe Ergebnis mit einer reinen Funktion zu erhalten.

In[3]:= Map[ f[#] + g[#] &, {a, b, c} ]

Out[3]=

Es gibt mehrere äquivalente Möglichkeiten in Mathematica, reine Funktionen zu schreiben. Die Idee in allen Fällen ist, ein Objekt zu konstruieren, das, mit passenden Argumenten versehen, eine Funktion berechnet. Wenn zum Beispiel fun eine reine Funktion ist, dann evaluiert fun[a] die Funktion mit dem Argument a.

Hier ist ein reine Funktion, die die Operation des Quadrierens darstellt.

In[4]:= Function[x, x^2]

Out[4]=

Wenn man die reine Funktion mit dem Argument n versieht, erhält man das Quadrat von n.

In[5]:= %[n]

Out[5]=

Sie können eine reine Funktion benutzen, wo immer Sie üblicherweise den Namen einer Funktion angeben würden.

Sie können eine reine Funktion in Map benutzen.

In[6]:= Map[ Function[x, x^2], a + b + c ]

Out[6]=

Oder in Nest.

In[7]:= Nest[ Function[q, 1/(1+q)], x, 3 ]

Out[7]=

Damit wird eine reine Funktion mit zwei Argumenten konstruiert, die dann auf die Argumente a und b angewendet wird.

In[8]:= Function[{x, y}, x^2 + y^3] [a, b]

Out[8]=

Wenn Sie eine Funktion wiederholt benutzen wollen, dann können Sie die Funktion mit f[x_] := rumpf definieren und sich auf die Funktion mittels ihres Namens f beziehen. Andererseits werden Sie es besser finden, wenn Sie eine Funktion nur einmal benutzen wollen, diese Funktion in der Form einer reinen Funktion anzugeben, ohne sie je zu benennen.

Wenn Sie mit formaler Logik oder der Programmiersprache LISP vertraut sind, werden Sie die reinen Funktionen in Mathematica als -Ausdrücke oder anonyme Funktionen wiedererkannt haben. Reine Funktionen stehen auch dem Operatorbegriff der reinen Mathematik nahe.

Kurzformen für reine Funktionen

Genauso wie der Name einer Funktion irrelevant ist, wenn Sie nicht wieder auf die Funktion verweisen wollen, sind es auch die Namen der Argumente in einer reinen Funktion. Mathematica erlaubt Ihnen, die Benutzung expliziter Namen für die Argumente reiner Funktionen zu vermeiden und stattdessen die Argumente durch das Symbol #n zu spezifizieren. In einer reinen Funktion steht in Mathematica #n für das n-te Argument, das Sie liefern. # steht für das erste Argument.

#^2 & ist eine Kurzform für eine reine Funktion, die ihr Argument quadriert.

In[9]:= Map[ #^2 &, a + b + c ]

Out[9]=

Dies wendet eine Funktion an, die die ersten zwei Elemente aus jeder Liste auswählt. Durch Einsatz einer reinen Funktion vermeiden Sie die separate Definition einer Funktion.

In[10]:= Map[Take[#, 2]&, {{2, 1, 7}, {4, 1, 5}, {3, 1, 2}}]

Out[10]=

Durch den Einsatz von Kurzformen für reine Funktionen läßt sich die Definition von tonumber (siehe Abschnitt 2.2.2) vereinfachen.

In[11]:= tonumber[digits_] := Fold[(10 #1 + #2)&, 0, digits]

Wenn Sie Kurzformen für reine Funktionen benutzen, ist es sehr wichtig, daß Sie das Et-Zeichen (&) nicht vergessen. Wenn Sie es weglassen, wird Mathematica nicht erkennen, daß Ihr Ausdruck als reine Funktion benutzt werden soll.

Wenn Sie die Et-Zeichen-Notation für reine Funktionen benutzen, müssen Sie sorgfältig auf die Gruppierung der Bestandteile Ihrer Eingabe achten. Im Abschnitt A.2.7 wurde gezeigt, daß das Et-Zeichen eine recht niedrige Priorität hat; deshalb können Sie Ausdrücke wie #1 + #2 & ohne Klammern eintippen. Wenn Sie andererseits zum Beispiel eine Option gleich einer reinen Funktion setzen wollen, müssen Sie Klammern verwenden, wie in option -> (fun &).

Reine Funktionen in Mathematica können jede Anzahl von Argumenten haben. Mit ## können Sie alle gegebenen Argumente, und mit ##n das n-te und die folgenden Argumente bezeichnen.

## steht für alle Argumente.

In[12]:= f[##, ##]& [x, y]

Out[12]=

##2 steht für alle Argumente, außer dem ersten.

In[13]:= Apply[f[##2, #1]&, {{a, b, c}, {ap, bp}}, {1}]

Out[13]=

Anwendung von Funktionen auf Teile von AusdrückenKonstruktion von Listen mit Funktionen