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 /  Evaluierung von Ausdrücken /

Prinzipien der EvaluierungAttribute

2.5.2 Reduzierung von Ausdrücken in ihre Standard-Form

Die in Mathematica eingebauten Funktionen operieren auf vielfältige Weise. Viele der mathematischen Funktionen haben jedoch einen wichtigen Ansatz gemein: Sie sind darauf ausgerichtet, Klassen mathematischer Ausdrücke in Standard-Formen zu reduzieren.

Die eingebauten Definitionen für die Plus-Funktion sind zum Beispiel darauf ausgerichtet, Term-Summen in einer ungeklammerten Standard-Form zu schreiben. Die Assoziativität der Addition bedeutet, daß Ausdrücke wie (a + b) + c, a + (b + c) und a + b + c alle äquivalent sind. Für viele Zwecke ist es jedoch zweckmäßig, wenn alle diese Formen in eine einzige Standard-Form a + b + c reduziert werden. Die eingebauten Definitionen für Plus sind so konstruiert, daß sie dies leisten.

Die eingebauten Definitionen für Plus reduzieren diesen Ausdruck in eine ungeklammerte Standard-Form.

In[1]:= (a + b) + c

Out[1]=

Sobald Mathematica weiß, daß eine Funktion assoziativ ist, versucht es, Klammern (oder verschachtelte Aufrufe der Funktion) zu entfernen, um die Funktion in eine „eingeebnete" Standard-Form zu bringen.

Eine Funktion wie die Addition ist nicht nur assoziativ, sondern auch kommutativ. Deshalb sind Ausdrücke wie a + c + b und a + b + c mit verschieden angeordneten Termen gleich. Wiederum versucht Mathematica, alle derartigen Ausdrücke in eine „Standard"-Form zu überführen. In der gewählten Standard-Form befinden sich alle Terme in einer bestimmten Reihenfolge, die grob der alphabetischen Reihenfolge entspricht.

Mathematica sortiert die Terme in dieser Summe in eine Standard-Reihenfolge.

In[2]:= c + a + b

Out[2]=

Zwei wichtige Eigenschaften, die Mathematica bei der Reduzierung gewisser Funktionen in Standard-Form verwendet

Für das Bestreben, Ausdrücke in Standard-Formen zu überführen, gibt es mehrere Gründe. Der wichtigste ist: wenn zwei Ausdrücke wirklich in Standard-Form vorliegen, dann wird es offensichtlich, ob sie gleich sind oder nicht.

Wenn die zwei Summen in Standard-Reihenfolge überführt sind, wird sofort ersichtlich, daß sie gleich sind, so daß die zwei f's sich aufheben und das Resultat 0 ergeben.

In[3]:= f[a + c + b] - f[c + a + b]

Out[3]=

Stellen Sie sich vor, Sie wollten herausfinden, ob a + c + b gleich c + a + b ist, indem Sie alle möglichen Anordnungen jeder Summe prüfen. Offensichtlich ist die einfache Reduktion beider Summen in Standard-Formen eine sehr viel effizientere Prozedur.

Man kann sich vorstellen, daß Mathematica irgendwie alle mathematischen Ausdrücke automatisch auf eine einzige kanonische Standard-Form reduzieren sollte. Es ist jedoch leicht einsehbar, daß Sie nicht für alle Ausdrücke, außer den einfachsten, dieselbe Standard-Form für alle Zwecke anstreben.

Für Polynome gibt es zum Beispiel zwei naheliegende Standard-Formen, die sich für verschiedene Zwecke eignen. Die erste Standard-Form für ein Polynom ist eine einfache Summe mit Termen, so wie sie in Mathematica durch Anwendung der Funktion Expand entstünde. Diese Standard-Form würde sich am besten eignen, wenn Sie Polynome addieren und subtrahieren müßten.

Es gibt jedoch eine andere mögliche Standard-Form, die Sie bei Polynomen einsetzen können. Durch Anwendung von Factor können Sie jedes Polynom als Produkt irreduzibler Faktoren schreiben. Diese kanonische Form ist nützlich, wenn Sie Operationen wie Division durchführen wollen.

Ausmultiplizierte und faktorisierte Formen sind in gewissem Sinne beide gleichermaßen gute Standard-Formen für Polynome. Die Entscheidung, welche Sie verwenden wollen, hängt einfach davon ab, wofür Sie sie einsetzen wollen. Daher liefert Mathematica Polynome nicht automatisch in einer dieser zwei Formen. Stattdessen bietet es Funktionen wie Expand und Factor, die Ihnen explizit erlauben, Polynome in die von Ihnen gewünschte Form zu bringen.

Hier ist eine Liste zweier Polynome, die mathematisch gleich sind.

In[4]:= t = {x^2 - 1, (x + 1)(x - 1)}

Out[4]=

Durch Anwendung von Expand erhalten Sie für beide die ausmultiplizierte Form. In dieser Form wird die Gleichheit der zwei Polynome offensichtlich.

In[5]:= Expand[t]

Out[5]=

Wenn Sie beide in faktorisierter Form schreiben, können Sie auch sehen, daß die Polynome gleich sind.

In[6]:= Factor[t]

Out[6]=

Obwohl es klar ist, daß Sie nicht immer Ausdrücke auf dieselbe Standard-Form reduziert haben wollen, werden Sie sich fragen, ob es nicht zumindest möglich ist, alle Ausdrücke auf irgendeine Standard-Form zu reduzieren.

Es gibt ein fundamentales Ergebnis in der mathematischen Berechnungstheorie, das zeigt, daß dies tatsächlich nicht immer möglich ist. Sie können nicht garantieren, daß irgendeine endliche Folge von Transformationen je zwei beliebig gewählte Ausdrücke in eine Standard-Form überführen kann.

In gewissem Sinne überrascht dies nicht. Könnten Sie tatsächlich alle mathematischen Ausdrücke in eine Standard-Form reduzieren, dann wäre es sehr leicht zu sagen, ob zwei beliebige Ausdrücke gleich sind. Die Tatsache, daß so viele der schwierigen Probleme der Mathematik als Fragen nach der Gleichheit von Ausdrücken formuliert werden können, läßt jedoch schon ahnen, daß dies tatsächlich schwierig sein kann.

Prinzipien der EvaluierungAttribute