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 /  Muster /

Funktionen mit einer variablen Anzahl von ArgumentenKonstruktion von Funktionen mit wahlfreien Argumenten

2.3.9 Wahlfreie Argumente und Vorgabe-Argumente

Manchmal möchten Sie Funktionen erstellen, in denen verschiedenen Argumenten, falls sie weggelassen werden, „Vorgabewerte" zugewiesen werden. Das Muster x_:v steht für ein Objekt, das weggelassen werden kann und in diesem Fall durch den Vorgabewert v ersetzt wird.

Dies definiert eine Funktion j mit einem erforderlichen Argument x und den wahlfreien Argumenten y und z mit den Vorgabewerten 1 bzw. 2.

In[1]:= j[x_, y_:1, z_:2] := jp[x, y, z]

Der Vorgabewert von z wird hier benutzt.

In[2]:= j[a, b]

Out[2]=

Jetzt werden die Vorgabewerte sowohl von y als auch von z benutzt.

In[3]:= j[a]

Out[3]=

Muster-Objekte mit Vorgabewerten

Einige übliche Mathematica-Funktionen haben für ihre Argumente eingebaute Vorgabewerte. In solchen Fällen brauchen Sie den Vorgabewert nicht explizit in der Form x_:v anzugeben, sondern können stattdessen die bequemere Notation x_. verwenden, bei der von einem eingebauten Vorgabewert ausgegangen wird.

Einige Muster mit wahlfreien Bestandteilen

Hier paßt a zum Muster x_ + y_., wobei y den Vorgabewert 0 annimmt.

In[4]:= {f[a], f[a + b]} /. f[x_ + y_.] -> p[x, y]

Out[4]=

Da Plus eine flache Funktion ist, paßt ein Muster wie x_ + y_ zu einer Summe mit einer beliebigen Anzahl von Termen. Jedoch paßt dieses Muster nicht zu einem einzelnen Term wie a. Aber das Muster x_ + y_. enthält einen wahlfreien Bestandteil und paßt entweder zu einer expliziten Summe von Termen, in der sowohl x_ als auch y_ vorkommen, oder zu einem einzelnen Term x_, wobei y gleich 0 genommen wird.

Mit Konstrukten wie x_. können Sie leicht einzelne Muster konstruieren, die zu Ausdrücken mit mehreren Strukturen passen. Dies ist besonders dann nützlich, wenn Sie verschiedene mathematisch gleiche Formen, die aber nicht dieselbe Struktur haben, durch ein Muster beschreiben wollen.

Das Muster paßt zu g[a^2], aber nicht zu g[a + b].

In[5]:= {g[a^2], g[a + b]} /. g[x_^n_] -> p[x, n]

Out[5]=

Durch Angabe eines Musters, in dem der Exponent wahlfrei ist, erreicht man die Übereinstimmung mit beiden Fällen.

In[6]:= {g[a^2], g[a + b]} /. g[x_^n_.] -> p[x, n]

Out[6]=

Das Muster a_. + b_. x_ paßt zu einer beliebigen linearen Funktion von x_.

In[7]:= lin[a_. + b_. x_, x_] := p[a, b]

In diesem Fall wird b 1.

In[8]:= lin[1 + x, x]

Out[8]=

Hier wird b 1 und a 0.

In[9]:= lin[y, y]

Out[9]=

Standard-Mathematica-Funktionen wie Plus und Times haben eingebaute Vorgabewerte für ihre Argumente. In Abschnitt A.5.1 wird beschrieben, wie Sie auch Vorgaben für Ihre eigenen Funktionen anlegen können.

Funktionen mit einer variablen Anzahl von ArgumentenKonstruktion von Funktionen mit wahlfreien Argumenten