Zuweisungen

Copyright

Copyright 1994,  Claudia Funke und Markus Herold
TU-Berlin, FB 13, Fachgebiet Ökonometrie und Statistik
Dieses Notebook darf ausschließlich als Unterrichtsmaterial und für private Zwecke verwendet und nicht ohne Zustimmung der Autoren verändert werden.

Die in Mathematica erzeugten Objekte müssen mit einem Namen versehen werden. Das Ergebnis ist dann ein Symbol, auf das mit seinem Namen zugegriffen werden kann. Man kann einem Symbol numerische oder symbolische Ausdrücke zuweisen.

Die Namen werden aus alphanumerischen Zeichen gebildet. Die Länge eines Namens ist nicht beschränkt. Beginnt ein Variablenname mit einer Ziffer muß dieser Ziffer ein $ vorangestellt werden. Nach Konvention fangen Variablen, die von dem/der Anwendenden definiert wurden, mit 
Kleinbuchstaben an. Namen von systemeigenen Variablen beginnen 
mit einem $ (z.B. $Display, $Context).

a = 3

a + 7

a = 2 x + 7

Mathematica arbeitet mit dem Wert der letzten Zuweisung.

1 / a

Um Zuweisungen wieder aufzuheben, wird dem Symbol ein  .  zugewiesen.

a = .

a

Unterschied zwischen sofortiger und verzögerter Zuweisung

Wenn in einem Ausdruck   =   verwendet wird, weist Mathematica der 
betreffenden Variablen sofort den Wert zu.

random1 = Random[]

Der Variablen random1 wird der Wert  ?  sofort zugewiesen. Beim 
Aufruf von random1 gibt Mathematica immer den gleichen Wert 
zurück.

random1

Wenn in einem Aufruf   :=    verwendet wird, weist Mathematica den Wert erst  beim Aufruf der Variablen zu. Die Funktion, die rechts von  :=  steht, wird immer dann ausgeführt, wenn die betreffende Variable aufgerufen wird.

random2 := Random[]

random2

random2

Im folgenden werden zwei Funktionen betrachtet, die - bis auf die Art 
der Zuweisung - identisch sind.

b = 3

Sofortige Zuweisung:

f[x_] = x + b

Verzögerte Zuweisung:

g[x_] := x + b

b = 5

Die Funktionen  f  und  g  liefern verschiedene Ergebnisse, da sie mit 
unterschiedlichen Werten der Variablen arbeiten.

f[4]

g[4]

Mit dem  ? - Operator kann man sich die Definitionen der beiden 
Funktionen noch einmal anschauen.

?f

?g

Mehrfach-Zuweisungen

In Mathematica ist es möglich, mehrere Zuweisungen mit einem 
Statement durchzuführen. Mathematica wertet die Befehle   c = d = e   
von rechts nach links aus.

c = d = e

Die Variablen c und d verweisen auf den gleichen Wert.

c

Unter Verwendung von Listen können mehrere Zuweisungen gleichzeitig 
erfolgen.

{a, b} = {3, 5}

Ebenso können unter Verwendung von Listen Variableninhalte 
ausgetauscht werden.

{a, b} = {b, a}

Rekursive Funktionen

Durch mehrfache Zuweisungen ist es Mathematica sehr leicht möglich,
sogenannte look-ahead-tables  zu konstruieren. Look-ahead-tables 
können die Rechenzeit für die wiederholte Berechnung von rekursiven 
Funktionen stark reduzieren. Dies wird am Beispiel der Fakultäts- 
berechnung demonstriert.

fact[1] = 1;

fact[n_] := fact[n] = n * fact[n-1]

?fact

fact[3]

Wenn nun (während der laufenden Sitzung) die Funktion   fact[m]  aufgerufen wird und fact[n] mit n > m  schon einmal berechnet wurde (look-ahead-table), so ruft der Kernel nur noch diesen Wert auf. Eine Neuberechnung ist also nicht mehr nötig. Die schon berechneten Funktionswerte lassen sich über den ? - Operator abfragen:

?fact

Regeln

In Mathematica können mit dem  /.  Operator Regeln zur Auswertung 
von mathematischen Ausdrücken definiert werden.

x + 5 y  /.  x -> 2

x + 5 y  /.  {x -> 2, y -> 3}

Dabei gilt: Zuerst wird der mathematische Ausdruck ausgewertet, erst 
dann werden die Regeln angewendet.

2 x + 3 x  /.  {2 x -> y, 3 x -> 3}

Mit dem   //. - Operator wird die Regel solange ausgeführt, bis sie nicht 
mehr greift.

log[a b c d]  /.  log[x_ y_] -> log[x] + log[y]

a = .; b = .; c = .

log[a b c d]  /.  log[x_ y_] -> log[x] + log[y]

log[a b c d]  //.  log[x_ y_] -> log[x] + log[y]