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 /  Mathematica Nachschlageteil /  Einige Anmerkungen zur internen Implementierung /

Numerische und verwandte FunktionenAusgabe und Schnittstellen

A.9.5 Algebra und Analysis

Polynom-Manipulation

FilledSmallCircle Für univariate Polynome (d. h. Polynome in einer Variablen) setzt Factor eine Variante des Cantor-Zassenhaus-Algorithmus ein, um modulo einer Primzahl zu faktorisieren, dann Hensel-Liftung und Rekombination, um Faktoren über den ganzen Zahlen zu konstruieren.

FilledSmallCircle Faktorzerlegung über algebraischen Zahlenfeldern wird durchgeführt, indem ein primitives Element aus den rationalen Zahlen ermittelt und dann der Trager-Algorithmus verwendet wird.

FilledSmallCircle Bei multivariaten Polynomen substituiert Factor geeignete, ausgewählte ganze Zahlen für alle außer einer Variablen; die sich ergebenden univariaten Polynome werden dann in Faktoren zerlegt und die multivariaten Faktoren mit dem Wang-Algorithmus rekonstruiert.

FilledSmallCircle Der interne Code für Factor ohne allgemeine Polynom-Manipulation ist etwa 250 Seiten lang.

FilledSmallCircleFactorSquareFree ermittelt eine Ableitung und berechnet dann iterativ den ggT.

FilledSmallCircleResultant verwendet entweder explizit subresultante Polynom-Restfolgen oder modulare Folgen, zusammen mit dem chinesischen Restsatz.

FilledSmallCircleApart verwendet entweder eine Version der Padé-Technik oder die Methode der unbestimmten Koeffizienten.

FilledSmallCirclePolynomialGCD verwendet normalerweise modulare Algorithmen, darunter auch Zippels dünnbesetzten (sparse) modularen Algorithmus. In einigen Fällen werden aber subresultante Polynom-Restfolgen verwendet.

Symbolische lineare Algebra

FilledSmallCircleRowReduce, LinearSolve und NullSpace beruhen auf der Gauß-Elimination.

FilledSmallCircleInverse verwendet Kofaktor-Erweiterung und Zeilenreduzierung. Pivotelemente werden auf heuristische Weise gewählt, indem nach einfachen Ausdrücken gesucht wird.

FilledSmallCircleDet verwendet direkte Kofaktor-Erweiterung für kleine Matrizen und die Gauß-Elimination für größere.

FilledSmallCircleMatrixExp ermittelt Eigenwerte und verwendet dann die Putzer-Methode.

FilledSmallCircle Das Testen auf Nullstellen bei diversen Funktionen geschieht mit symbolischen Transformationen und auf Intervallen beruhenden numerischen Näherungen, nachdem zufällige numerische Werte für die Variablen substituiert wurden.

Exaktes Lösen von Gleichungen

FilledSmallCircle Für die Lösung von linearen Gleichungen werden Gauß-Elimination und andere Methoden der linearen Algebra eingesetzt.

FilledSmallCircleRoot-Objekte, die mathematische Zahlen darstellen, werden normalerweise isoliert und mit sicheren numerischen Methoden manipuliert. Bei der Einstellung ExactRootIsolation->True verwendet Root für reelle Nullstellen eine Kettenbruchversion eines Algorithmus, der auf der Descartesschen Zeichenregel basiert, und für komplexe Nullstellen den Collins-Krandick-Algorithmus.

FilledSmallCircleSolve verwendet für einzelne Polynomgleichungen explizite Formeln bis vierten Grades, versucht mit Factor und Decompose, die Polynome zu reduzieren und erkennt Kreisteilungspolynome und andere spezielle Polynome.

FilledSmallCircle Für Polynomgleichungssysteme konstruiert Solve eine Gröbner-Basis.

FilledSmallCircleSolve und GroebnerBasis verwenden eine effiziente Version des Buchberger-Algorithmus.

FilledSmallCircle Bei Nicht-Polynomgleichungen versucht Solve, Variablen zu ändern und Polynom-Nebenbedingungen hinzuzufügen.

FilledSmallCircle Der Code für Solve ist ungefähr 500 Seiten lang.

Vereinfachung

FilledSmallCircleFullSimplify verwendet automatisch sowohl etwa 40 Arten allgemeiner algebraischer Transformationen als auch etwa 400 Regeltypen für bestimmte mathematische Funktionen.

FilledSmallCircle Verallgemeinerte hypergeometrische Funktionen werden mit Hilfe von etwa 70 Seiten Mathematica-Transformationsregeln vereinfacht. Diese Funktionen sind für viele Analysis-Operationen in Mathematica grundlegend.

FilledSmallCircleFunctionExpand verwendet eine Erweiterung des Gaußschen Algorithmus, um trigonometrische Funktionen mit Argumenten zu entwickeln, die rationale Vielfache von sind.

FilledSmallCircleSimplify und FullSimplify legen Ergebnisse in einem Cache ab, wenn dies angemessen ist.

FilledSmallCircle Wenn Annahmen spezifizieren, daß Variablen reell sind, werden auf zylindrischer algebraischer Zerlegung basierende Methoden verwendet, um abzuleiten, welche Transformationen angewendet werden können.

FilledSmallCircle Für allgemeine Polynomungleichungen wird eine Version des Collins-Algorithmus mit McCallums verbessertem Projektionsoperator eingesetzt. Bei strengen Ungleichungen wird Strzebonskis Methode eingesetzt. Für lineare Ungleichungen werden Verfahren eingesetzt, die entweder auf dem Simplex-Algorithmus oder dem linearen Quantoreneliminations-Algorithmus von Loos-Weispfenning basieren.

FilledSmallCircle Enthalten Annahmen Gleichungen zwischen Polynomen, so werden Gröbner-Basis-Methoden eingesetzt.

FilledSmallCircle Für nicht-algebraische Funktionen werden mit einer Relationsdatenbank die Definitionsbereiche von Funktionswerten aus den Definitionsbereichen ihrer Argumente bestimmt. Polynom-orientierte Algorithmen werden immer dann eingesetzt, wenn die sich ergebenden Definitionsbereiche semialgebraischen Mengen entsprechen.

FilledSmallCircle Bei ganzwertigen Funktionen werden hunderte von Sätzen der Zahlentheorie in Form von Mathematica-Regeln eingesetzt.

Differentiation und Integration

FilledSmallCircle Differentiation verwendet Cache-Speicherung, um die wiederholte Berechnung von Teilergebnissen zu vermeiden.

FilledSmallCircle Für unbestimmte Integrale wird immer dann eine erweiterte Version des Risch-Algorithmus verwendet, wenn sowohl Integrand als auch Integral sich in Form von elementaren Funktionen, Exponentialintegralfunktionen, Mehrfachlogarithmen und anderen verwandten Funktionen ausdrücken lassen.

FilledSmallCircle Für andere unbestimmte Integrale werden heuristische Vereinfachungen mit nachfolgendem Mustervergleich verwendet.

FilledSmallCircle Die Algorithmen in Mathematica decken alle in Standard-Referenzbüchern wie zum Beispiel Gradshteyn-Ryzhik vorkommenden unbestimmten Integrale ab.

FilledSmallCircle Bestimmte Integrale, die keine Singularitäten enthalten, werden meistens durch Übergang zum Grenzwert des entsprechenden unbestimmten Integrals gelöst.

FilledSmallCircle Viele andere bestimmte Integrale werden mit Marichev-Adamchik-Mellin-Transformationsmethoden gelöst. Die Ergebnisse werden zuerst oft mittels Meijer G-Funktionen ausgedrückt, die mit Hilfe des Slater-Theorems in hypergeometrische Funktionen konvertiert und dann vereinfacht werden.

FilledSmallCircleIntegrate verwendet etwa 500 Seiten Mathematica-Code und 600 Seiten C-Code.

Differentialgleichungen

FilledSmallCircle Lineare Gleichungen mit konstanten Koeffizienten werden mit Matrizenpotenzierung gelöst.

FilledSmallCircle Lineare Gleichungen zweiter Ordnung mit variablen Koeffizienten, deren Lösungen mit Termen mit elementaren Funktionen und deren Integralen ausgedrückt werden können, werden mit dem Kovacic-Algorithmus gelöst.

FilledSmallCircle Lineare Gleichungen mit Polynom-Koeffizienten werden durch Anwendung von Mellin-Transformationen mit speziellen Funktionen gelöst.

FilledSmallCircle Nichtlineare Gleichungen werden, wenn möglich, mit Symmetriereduzierungs-Techniken gelöst. Für Gleichungen erster Ordnung werden klassische Techniken verwendet. Für Gleichungen und Systeme zweiter Ordnung werden Bocharov-Techniken verwendet.

FilledSmallCircle Für partielle Differentialgleichungen werden Variablentrennung und Symmetriereduzierung verwendet.

FilledSmallCircleDSolve verwendet etwa 300 Seiten Mathematica-Code und 200 Seiten C-Code.

Summen und Produkte

FilledSmallCircle Polynomreihen werden mit Bernoulli- und Euler-Polynomen summiert.

FilledSmallCircle Reihen, die rationale und Fakultäts-Funktionen enthalten, werden mit Adamchik-Techniken in Ausdrücke mit verallgemeinerten hypergeometrischen Funktionen summiert, die dann vereinfacht werden.

FilledSmallCircle Reihen, die Polygamma-Funktionen enthalten, werden mittels Integraldarstellungen summiert.

FilledSmallCircle Dirichlet- und verwandte Reihen werden mittels Mustervergleich summiert.

FilledSmallCircle Für unendliche Reihen werden d'Alembert- und Raabe-Konvergenztests verwendet.

FilledSmallCircle Die Algorithmen in Mathematica decken mindestens 90% der in Standard-Referenzbüchern, wie zum Beispiel Gradshteyn-Ryzhik, vorkommenden Summen ab.

FilledSmallCircle Produkte werden vorrangig durch Mustervergleich berechnet.

FilledSmallCircleSum und Product verwenden etwa 100 Seiten Mathematica-Code.

Reihen und Grenzwerte

FilledSmallCircleSeries verknüpft rekursiv Reihenentwicklungen von Funktionen und Reihenentwicklungen ihrer Argumente.

FilledSmallCircle Grenzwerte werden mit Reihen und anderen Methoden ermittelt.

Numerische und verwandte FunktionenAusgabe und Schnittstellen