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

 Documentation /  Mathematica /  Das Mathematica Buch /  Eine praktische Einführung in Mathematica /  Spezielles Thema: Die Interna von Mathematica /

Die grundlegende interne ArchitekturDas Software-Engineering von Mathematica

1.12.3 Die Algorithmen von Mathematica

Die eingebauten Mathematica-Funktionen implementieren eine große Zahl von Algorithmen aus der Informatik und der Mathematik. Einige dieser Algorithmen sind ziemlich alt, die große Mehrheit aber ist extra für Mathematica erstellt oder zumindest modifiziert worden. Die meisten der mehr mathematischen Algorithmen führen letzten Endes Operationen aus, die vor noch nicht allzu langer Zeit per Hand durchgeführt wurden. In beinahe allen Fällen jedoch verwenden die Algorithmen Methoden, die sich von den gebräuchlichen Handberechnungsmethoden deutlich unterscheiden.

Die symbolische Integration bietet ein Beispiel. Bei der Berechnung per Hand wird die symbolische Integration in der Regel mit einer großen Anzahl von Tricks, wie zum Beispiel Variablenwechsel und dergleichen durchgeführt.

In Mathematica wird die symbolische Integration aber mit einer ziemlich kleinen Zahl rein systematischer Prozeduren durchgeführt. Bei der unbestimmten Integration ist das Ziel dieser Prozeduren, die allgemeinste Form dieses Integrals zu finden, diese dann zu differenzieren und dann zu versuchen, die unbestimmten Koeffizienten herauszufinden.

Häufig erzeugt diese Prozedur zwischendurch eine immense Anzahl komplizierter algebraischer Ausdrücke und manchmal auch ziemlich anspruchsvolle mathematische Funktionen. Der große Vorteil dieser Prozedur ist aber, daß sie vollständig systematisch ist, und daß ihre Operation keine besondere Cleverneß erfordert, wie sie nur von einem Menschen erwartet werden kann.

Wenn man Mathematica Integrale suchen läßt, kann man daher überzeugt sein, daß es die Ergebnisse auf systematische Weise erzielen wird. Man kann aber nicht erwarten, daß der Weg, auf dem diese Ergebnisse erreicht werden, besonders viel dem Weg ähnelt, auf dem sie per Hand erzielt werden würden.

Das gleiche gilt auch für die meisten mathematischen Algorithmen in Mathematica. Eine auffallende Eigenschaft ist, daß selbst für einfach zu beschreibende Operationen die systematischen Algorithmen ziemlich fortgeschrittene mathematische und berechnungstechnische Ideen zur Durchführung dieser Operationen in Mathematica einsetzen.

So wird zum Beispiel zur Faktorisierung eines Polynoms in  zuerst modulo einer Primzahl, wie 17, faktorisiert, indem der Nullraum einer Matrix bestimmt wird, die durch Reduktion hoher Potenzen von  modulo der Primzahl und dem ursprünglichen Polynom erhalten wird. Die Faktorisierung über den ganzen Zahlen erhält man dann durch „liften" modulo fortlaufender Potenzen der Primzahl, was durch eine Anzahl fortgeschrittener Theoreme aus Algebra und Analysis ermöglicht wird.

Die Verwendung von leistungsfähigen systematischen Algorithmen ist wichtig, damit die eingebauten Mathematica-Funktionen schwierige und allgemeine Fälle handhaben können. Für leichtere Fälle aber, die in der Praxis etwas häufiger vorkommen, ist es oft möglich, einfachere und effizientere Algorithmen zu verwenden.

Deshalb haben die in Mathematica eingebauten Funktionen oft eine große Zahl an Zusätzen, die die verschiedenen Arten von Spezialfällen abdecken. Diese Zusätze können erheblich zur Komplexität des internen Codes beitragen. Aus einem sonst 5-seitigen Algorithmus kann ein Algorithmus werden, der mehrere hundert Seiten lang ist.

Die meisten Algorithmen in Mathematica, einschließlich all ihrer Spezialfälle, wurden explizit „per Hand" konstruiert. Einige Algorithmen wurden dagegen automatisch auf effektive Weise per Computer erstellt.

Viele der Algorithmen, die für die maschinengenaue numerische Evaluierung mathematischer Funktionen verwendet werden, sind Beispiele dafür. Die Hauptbestandteile solcher Algorithmen sind Formeln, die so kurz wie möglich sind, die aber die bestmöglichen numerischen Näherungen ergeben.

Die meisten solcher in Mathematica eingesetzten Formeln sind sogar in Mathematica selbst hergeleitet worden. Oft waren viele Monate an Berechnungen erforderlich, aber das Ergebnis war schließlich eine kurze Formel, die zum optimalen Evaluieren von Funktionen verwendet werden kann.

Die grundlegende interne ArchitekturDas Software-Engineering von Mathematica