Next: Substantive und Verben, Previous: Ausdrücke, Up: Ausdrücke [Contents][Index]

### 6.1 Einführung in Ausdrücke

Alles in Maxima, bis auf wenige Ausnahmen, sind Ausdrücke. Dazu gehören mathematische Ausdrücke wie `sqrt(2*a+b)` oder Kommandos wie `subst(a^2,b,sin(b+1)`. Auch Maxima-Programme sind Ausdrücke. Ausdrücke bestehen aus einem Atom oder einem Operator mit seinen Argumenten.

Ein Atom kann ein Symbol, eine Zeichenkette, eine ganze Zahl oder eine Gleitkommazahl sein. Jeder Ausdruck, der nicht ein Atom ist, hat die Darstellung `op(a_1, a_2, ..., a_n)`. `op` ist der Operator und `a_1`, …, `a_n` sind die Argumente des Operators. Die Argumente des Operators können Atome oder wiederum Operatoren mit Argumenten sein.

Da Maxima in Lisp programmiert ist, wird ein Ausdruck intern als eine Liste dargestellt, die die Gestalt `((op) a_1 a_2 ... a_n)` hat. Die arithmetischen Operatoren "+" und "*" haben zum Beispiel die interne Darstellung:

    x+y+10  -> ((mplus) 10 $x $y)
    2*x*x   -> ((mtimes) 2 $x $y)
    2*(x+y) -> ((mtimes) 2 ((mplus) $x $y)

Mathematische Funktionen wie die trigonometrischen Funktionen oder die Logarithmusfunktion werden von Maxima intern analog dargestellt:

    sin(x)          -> ((%sin) $x)
    log(y)          -> ((%log) $y)
    2*sin(x)+log(y) -> ((mplus) ((mtimes) 2 ((%sin) $x)) ((%log) $y))

Mehrere Ausdrücke können zusammengefaßt werden, indem die Ausdrücke durch Kommata getrennt und mit runden Klammern umgeben werden.

    (%i1) x: 3$
    (%i2) (x: x+1, x: x^2);
    (%o2)                          16
    (%i3) (if (x > 17) then 2 else 4);
    (%o3)                           4
    (%i4) (if (x > 17) then x: 2 else y: 4, y+x);
    (%o4)                          20

Auch Programmschleifen sind in Maxima Ausdrücke. Der Rückgabewert einer Programmschleife ist `done`.

    (%i1) y: (x: 1, for i from 1 thru 10 do (x: x*i))$
    (%i2) y;
    (%o2)                         done

Um einen anderen Rückgabewert als `done` zu erhalten, kann zum Beispiel der Wert der Variablen x nach dem Ende der Programmschleife ausgegeben werden.

    (%i3) y: (x: 1, for i from 1 thru 10 do (x: x*i), x)$
    (%i4) y;
    (%o4)                        3628800

Es gibt eine Anzahl an reservierten Namen, die nicht als Variablennamen verwendet werden sollten. Ihre Verwendung kann möglicherweise kryptische Fehlermeldungen erzeugen. Dazu gehören zum Beispiel die folgenden Namen:

       integrate            next           from                 diff
       in                   at             limit                sum
       for                  and            elseif               then
       else                 do             or                   if
       unless               product        while                thru
       step

Funktionen und Variablen um einen Teilausdruck zu isolieren:

       isolate     disolate  isolate_wrt_times   expisolate
       part        inpart    substpart           substinpart
       inflag      piece     partswitch
       pickapart

Funktionen und Variablen für Substantive und Verben:

       nounify   verbify     alias     aliases

Funktionen und Variablen, um zu prüfen, ob ein Teilausdruck enthalten ist und um eine Liste der Variablen eines Ausdrucks zu erstellen:

       freeof       lfreeof
       listofvars   listconstvars    listdummyvars

Funktionen und Variablen für Operatoren und Argumente:

       args    op    operatorp

Funktionen und Variablen für Substitutionen in Ausdrücke:

       subst psubst sublis exptsubst opsubst

Funktionen und Variablen für die kanonische Ordnung der Argumente eines Ausdrucks:

       ordergreat    orderless    unorder
       ordergreatp   orderlessp   ordermagnitudep

Weitere Funktionen und Variablen:

       nterms   optimize   optimprefix   partition

Next: Substantive und Verben, Previous: Ausdrücke, Up: Ausdrücke [Contents][Index]