Maple V

MAPLE ist ein umfassendes und allgemein verwendbares Computeralgebra-System. Es wird hauptsächlich in Forschung und Lehre in den Bereichen Naturwissenschaften, Ingenieurwesen und Mathematik verwendet. Mit MAPLE kann sowohl numerisch als auch symbolisch gerechnet werden und zusätzlich können 2D- oder 3D-Grafiken erstellt werden. Die neueste Version von MAPLE (MAPLE V Release 2) zeichnet sich besonders durch eine neue Benutzerschnittstelle aus, mit der Dokumente (sog. worksheets) erstellt werden können, die neben normalem Text auch MAPLE Ein- und Ausgabe (auch Grafiken) enthalten können. Die Ausgabe von MAPLE wird dabei neu in Druckqualität dargestellt, was sich besonders bei mathematischen Notationen wie z.B. Wurzel, bei Indizes und Exponenten und bei griechischen Buchstaben bemerkbar macht. Resultate und Unterrichtsmaterial können mit worksheets leicht präsentiert und untereinander ausgetauscht werden.

MAPLE ist auch eine Programmiersprache. Fast alle mathematischen und graphischen Funktionen sind in MAPLE selber geschrieben und nicht in einer systemnahen Sprache wie dies bei anderen Computeralgebra-Systemen der Fall ist. Diese MAPLE-Programme sind auf der Festplatte gespeichert und werden erst bei Gebrauch geladen. Die Programmiersprache unterstützt sowohl prozedurales als auch funktionales Programmieren, doch können wir in diesem Artikel leider nicht näher darauf eingehen. Für eine Einführung in die Programmiersprache MAPLE verweisen wir auf die Bücher im Literaturverzeichnis.

Im folgenden geben wir einen kleinen überblick über die historische Entwicklung von MAPLE. Das Hauptziel bei der Entwicklung von MAPLE im Jahre 1980 war, eine mächtige und effiziente Sprache zu entwerfen, in der mathematische Algorithmen besser geschrieben werden können als in einer systemnahen Programmiersprache wie C oder Lisp. Ein weiteres Gewicht wurde darauf gelegt, den Speicherbedarf möglichst klein zu halten, so daß einerseits große Probleme gelöst werden können und andererseits MAPLE auch auf kleineren Rechnern läuft, bzw. daß mehrere Benutzer in einem Timesharing-System gleichzeitig arbeiten können. Das Resultat ist ein System, das aus drei Bestandteilen besteht: der Benutzerschnittstelle, dem Kern und der MAPLE-Bibliothek. Die Benutzerschnittstelle und der MAPLE-Kern sind in C programmiert und belegen zusammen etwa 500KB Speicher. Die MAPLE-Bibliothek ist in MAPLE selber programmiert und besteht aus etwa 2500 Funktionen (etwa 150.000 Zeichen MAPLE-Code).

Diese Trennung ermöglicht es, daß MAPLE auch auf kleinen Rechnern wie z.B. Amiga, PC, Macintosh mit nur zwei Megabyte Hauptspeicher läuft. Das macht MAPLE besonders attraktiv für den Einsatz im Unterricht. MAPLE läuft natürlich auch auf den meisten Workstations, Mainframes und Supercomputern. Beim Aufbau von MAPLE wurde großes Gewicht auf Speicherökonomie gelegt. Dies hat zur Folge, daß auch größere Probleme mit MAPLE gelöst werden können, und beeinflußt auch das Laufzeitverhalten positiv. Auf Grund der klaren Trennung zwischen der Benutzerschnittstelle, dem Kern und der MAPLE-Bibliothek wird MAPLE auch von anderen Systemen als symbolische Maschine verwendet. Das Programm MATHCAD zum Beispiel, ein Programm für numerische Berechnungen, das unter Ingenieuren weit verbreitet ist, bietet dem Benutzer gewisse symbolische Funktionen von MAPLE an.

Die MAPLE-share library, in der Funktionen und Pakete von Benutzern zur Verfügung gestellt werden, wird laufend erweitert. Daneben enthält die share library u.a. weitere Dokumentationen und Software-Werkzeuge und wird vierteljährlich mit neuen Beiträgen aktualisiert. Auf die share library kann über einen elektronischen mail server und per anonymous ftp zugegriffen werden.

Weitere Informationen über MAPLE findet man in der Maple News Group, ein elektronisches Diskussionsforum; in der Zeitschrift Maple ROOTS, die Informationen über neue MAPLE-Versionen enthält und im Maple Technical Newsletter, in dem technische Artikel und Anwendungen von MAPLE publiziert werden.

Im folgenden geben wir in groben Zügen eine übersicht über die Fähigkeiten von MAPLE in den Bereichen numerisches Rechnen, symbolisches Rechnen und Grafik. Danach illustrieren wir an Hand von Beispielen einige der neuen Fähigkeiten von Release 2. Eingabezeilen beginnen in MAPLE mit dem Zeichen ">". Die Darstellung der Resultate entspricht im wesentlichen der Bildschirmausgabe bei Release 2.

Numerisches Rechnen

* Langzahl-Arithmetik und Gleitpunkt-Arithmetik, beides mit beliebiger Genauigkeit, sowie numerische Arithmetik mit komplexen Zahlen

* Numerische Berechnung der elementaren Funktionen und einer großen Bibliothek von Spezialfunktionen wie etwa das Wahrscheinlichkeitsintegral, die Gammafunktion und damit verwandte Funktionen, das Exponential-Integral, die Riemannsche Zetafunktion, Bessel-Funktionen, hypergeometrische Funktionen, statistische Verteilungsfunktionen usw.

* Numerische lineare Algebra: lineare Gleichungssysteme, Eigenwerte und Eigenvektoren, Singulärwertzerlegung

* Numerische Approximationen: Splineinterpolation, B-Splines, least squares Approximationen, Pade- und Kettenbruchapproximationen, Tschebyscheff-Reihen und eine Implementation des Remez-Algorithmus

* Numerische Analysis: Integration, Berechnung von unendlichen Summen und Produkten, Lösungen von gewöhnlichen Differentialgleichungen, Nullstellenberechnung, schnelle Fouriertransformation (FFT).

Symbolisches Rechnen

* Unbestimmte und bestimmte Integration von rationalen Funktionen, von elementaren Funktionen (Risch), von algebraischen Funktionen (Trager) und von Spezialfunktionen

* Laplace-, Fourier-, Mellin- und Z-Transformationen sowie deren inverse Transformationen

* Unbestimmte und bestimmte Summation, unendliche Produkte, Lösungen von Rekursionsgleichungen, Taylorreihen, asymptotische Reihen, symbolische Grenzwertberechnungen

* Polynomarithmetik über endlichen Körpern und Zahlkörpern, einschließlich der Berechnung von größten gemeinsamen Teilern und Resultaten, Faktorisierung, Polynomzerlegung, Wurzelbestimmung sowie ein spezielles Paket zum Rechnen in endlichen Körpern

* Symbolische lineare Algebra: Determinanten und Inverse, Eigenwerte und Eigenvektoren, Smith-, Hermite-, Jordan- und Staffelform

* Lösen von Gleichungen: lineare Gleichungssysteme, polynomiale Gleichungssysteme, Gröbnerbasen, gewöhnliche Differentialgleichungen

* Pakete für spezielle Gebiete: endliche Gruppen, Zahlentheorie, Tensoren, erzeugende Funktionen, Geometrie, orthogonale Polynome, Differentialformen, symmetrische Funktionen, Graphentheorie, Statistik etc.

Grafik

Mit den Grafikgrundfunktionen in MAPLE kann eine beliebige Anzahl von Kurven, Flächen, Polygonen und Text gezeichnet werden. Flächen können auf verschiedene Arten dargestellt werden, wie z.B. ohne verdeckte Linien, in Grautönen oder farbig schattiert. In schattierte Flächen können Konturlinien bzw. Gitterlinien eingezeichnet werden. 2D- und 3D-Animation von Folgen von Bildern werden auch unterstützt. Grafiken können auf einer Vielzahl von Druckern ausgegeben werden oder auch in ein MAPLE worksheet eingefügt werden. Folgende Spezialgrafikbefehle (allesamt in MAPLE programmiert) stehen weiter zur Verfügung:

* Kurven in kartesischen und Polarkoordinaten

* Flächen in kartesischen, zylindrischen oder Kugelkoordinaten

* Kurven und Flächen, die durch eine Parameterdarstellung spezifiziert sind, oder die implizit als Lösung einer polynomialen Gleichung gegeben sind

* Konturgrafiken, logarithmische Skalen, Dichtegraphiken, konforme Abbildungen

* Phasenportraits und Richtungsfelder, Darstellung von Lösungen gewöhnlicher Differentialgleichungen erster Ordnung

Beispiele zur Polynomfaktorisierung

MAPLE V kann Polynome in einer Variablen über den rationalen Zahlen, über algebraischen Zahlenkörpern und über endlichen Körpern faktorisieren. Das Polynom $x^8 - 8$ z.B. ist irreduzibel über Q, faktorisiert hingegen über $Q(\sqrt[4]{2})$:
 
> factor(x^8-8, 2^(1/4)); 

            $(x^4 + 2\sqrt{2}) (x^2 - 2^{3/4}) (x^2 + 2^{3/4})$
In Release 2 ist es neuerdings möglich, Polynome in mehreren Variablen über beliebigen algebraischen Zahlen oder Funktionen zu faktorisieren. Betrachten wir als Beispiel eine Faktorisierung über $Q(\sqrt2)$:
 
> factor (y^4-2*x*y^2-x^2, sqrt(2));

            $- (x  +  y^2  - y^2 \sqrt{2}) (x  +  y^2  +  y^2  +  y^2 \sqrt{2})$
Von den neuen Fähigkeiten, mit algebraischen Funktionen zu arbeiten, profitieren u.a. die Funktionen zur Integration, zum symbolischen Berechnen von Eigenwerten und Eigenvektoren und zum Lösen von Gleichungssystemen.

Beispiele zur Integration rationaler Funktionen

Betrachten wir folgende rationale Funktion:
 
> f  := (6*x^5+6*x^2-4*x+8*x^3-4)/(x^6+2*x^3-2*x^2+1);

            $\frac{6x^5 + 8x^3 + 6x^2-4x-4}{x^6 + 2x^3-2x^2+1}$
Die Schwierigkeit in diesem Beispiel ist, daß der Nenner von f über den rationalen Zahlen nicht faktorisierbar ist, und daher die herkömmliche Methode, f in Partialbrüche zu zerlegen und diese einzeln zu integrieren, nicht angewendet werden kann. Der Algorithmus von Trager und Rothstein, der in MAPLE V implementiert ist, liefert folgendes schönes Resultat:
 
   $\int f dx = \sum\limits_{a^2-2=0} {(1+\alpha) ln(x^3 -\alpha x + 1)}$
Die Summe besitzt zwei Terme, die den beiden Wurzeln $\pm\sqrt{2}$ des Polynoms $\alpha^2 - 2$ entsprechen. Mit MAPLE erhält man daher das Resultat
 
> int(f,  x) ;

     $(1 -\ sqrt{2}) ln(x^3 + \sqrt{2x} + 1) + (sqrt{2} + 1) ln(x^3 - \sqrt{2x} + 1)$
Eine Verfeinerung dieses Algorithmus, vorgeschlagen von Rioboo, ist in Release 2 implementiert. Darin wird versucht, von einer reellen Funktion einen reellen Integranden zu finden, der keine neuen Pole aufweist. MAPLE V gab z.B. bei folgendem Beispiel komplexe Logarithmen zurück, Release 2 findet hingegen ein reelles Integral:
 
> f := (x^4-3*x^2+6)/(x^6-5*x^4+5*x^2+4);
> int(f,  x) ; 

$arctan(\frac{-3}{2}x^3 + \frac{1}{2}x^5 + \frac{1}{2}x) + arctan(x^3) +arctan(x)$

Beispiele bestimmter Integrale

MAPLE V enthält eine neue Methode, um bestimmte Integrale zu berechnen, die auf dem Auswerten von Ableitungen von Spezialfunktionen basiert. MAPLE kann z.B. Integrale der Form
 
$\int_a^\infty t^n exp(-ut^3) ln(bt)^m sin(ct^r) dt$
oder
 
$\int_a^\infty t^n exp(-ut^3) ln(bt)^m cos(ct^r) dt$
bestimmen, wobei $r \in \{0, s ,2s , s/2 \}$ und die Konstanten weitere Bedingungen erfüllen müssen. Im allgemeinen können diese Integrale mit Hilfe der unvollständigen Gammafunktion, der Riemannschen Zetafunktion, der Meijer-G-Funktion und weiteren Spezialfunktionen ausgedrückt werden.
 
> int(exp(-t)*cos(t)*ln(t) ,  t=0..infinity);

            $\[ \frac-{\ln(2)}{4}-{\gamma}{2}-{\pi}{8} \]$
wobei $\gamma$ für die Eulersche Konstante steht. Als nächstes Beispiel zeigen wir eine weitere Klasse von bestimmten Integralen, die MAPLE berechnen kann und illustrieren gleichzeitig die Möglichkeit, Annahmen über symbolische Parameter dem System mitzuteilen. MAPLE kann das folgende Integral nicht lösen, da die Lösung vom Vorzeichen von p und q abhängt. Mit der assume-Funktion kann der Benutzer in Release 2 Annahmen über symbolische Parameter treffen, in unserem Beispiel also dem System bekannt geben, daß sowohl p als auch q reell und positiv sind:
 
> f  := x^(a-1)*exp(-p*x^s-q*x^(-s)) ;
> assume(p>0) ; assume(q>0) ;
> Int(f,  x=0 . . infinity) = int(f,x=0 . . infinity) ;

$\int_0^\infty x^{a-1}e^{-p^~x^3-q^~x^-3} dx 
  = 2 signum(s)\sqrt{q^{Ä3}}^\underline{a} 
      BesselK(\frac{a}{s}, 2\sqrt{p^~} \sqrt{q^~}) \frac{1}{\sqrt{p^~}^\frac{a}{s}} s^{-1}$
(Die Ausgabe p^~ bedeutet, daß das Symbol p eine zusätzliche Eigenschaft besitzt, die dem System bekannt ist.)

Beispiele von asymptotischen Reihen und Grenzwerten

MAPLE enthält eine Implementierung von einem neuen Modell von "hierarchischen" Reihen, in dem neben einfachen Polen weitere wesentliche Singularitäten zugelassen sind wie z.B. ln(x) oder $e^{\frac{1}{x}}$ (um x = 0). Die asymptotische Reihe des Wahrscheinlichkeitsintegrals ist z.B.
 
> asympt(erf(x), x)  ;

  $1 + (- \frac{1}{\sqrt{\pi x}} + \frac{1}{2\sqrt{\pi x^3}} 
        - \frac{3}{4\sqrt{\pi x^5} + O(x^{-7})) e^{-x^2}$
Mit Hilfe dieser Reihenentwicklung kann MAPLE den folgenden Grenzwert bestimmen:
 
> Limit(exp(x^2)*(1-erf(x)),x=infinity) =
> limit(exp(x^2)*(1-erf(x)),x=infinity) ;

          $\lim_{x\to\infty} e^x^2 (1 - erf(x)) = 0$
Release 2 enthält ein noch mächtigeres Modell, um Grenzwerte zu berechnen, die mit obigem Reihenansatz nicht gelöst werden konnten. Der folgende Grenzwert ist ein Beispiel dafür:
 
> f := (GAMMA(n+1/GAMMA(n))-GAMMA(n)) /ln(n) :
> Limit(f,n=infinity) = limit(f,n=infinity) ;

   $\lim_{n\to\infty} \frac{\Gamma(n +\Gamma(n)^{-1}) - \Gamma(n)}}{ln(n)} = 1$

Für weitere Auskünfte wende man sich an folgende Adressen:

 
Europa                                        Weltweit
---------------------------------------------------------------------
Waterloo Maple Software                       Waterloo Maple Software
Tiergartenstraße 17                          160 Columbia Street West
W-69121 Heidelberg                            Waterloo, Ontario, N2L 3L3
Deutschland                                   Canada

Tel. +49-6221-487 180                         Tel. (519) 747-2373
Fax +49-6221-487 184                          Fax (519) 747-5284
                                              e-mail: info@maplesoft.on.ca

Literatur

 
[1] B.W. Char, K.O. Geddes, G.H. Gonnet, B. Leong, M.B. Monagan, and S.M. Watt.
Maple V Language Reference Manual. Springer-Verlag, New York, first edition, 1991

[2] B.W. Char, K.O. Geddes, G.H. Gonnet, B. Leong, M.B. Monagan, and S.M. Watt.
Maple V Library Reference Manual. Springer-Verlag, New York, 1991

[3] B.W. Char, K.O. Geddes, G.H. Gonnet, B. Leong, M.B. Monagan, and S.M. Watt.
First Leaves: Tutorial Introduction to Maple. Springer-Verlag, New York, 1992

[4] W. Ellis, E.W. Johnson, E. Lodi, and D. Schwalbe. Maple V Flight Manual:
Tutorials for Calculus, Linear Algebra, and Differential Equations. Brooks/Cole
Publishing Company, Pacific Grove, Califormia 93950, 1992

[5] The Maple technical newsletter, Birkhäuser, Boston, 1992

Author der Beschreibung Michael Monagan (Zürich)