Maple griffbereit: Alle Versionen bis Maple V 3 [1 ed.] 978-3-528-06529-4, 978-3-322-83115-6

Nancy Blachman ist seit vielen Jahren an der Entwicklung und am Einsatz von Computeralgebrasystemen wie Maple und Mathem

178 91 29MB

German Pages 365 [374] Year 1995

Report DMCA / Copyright

DOWNLOAD PDF FILE

Table of contents :
Front Matter....Pages I-IX
Einführung in Maple....Pages 1-69
Die Benutzeroberfläche....Pages 70-93
Liste der Sachgebiete....Pages 94-119
Liste der Befehle....Pages 120-307
Elektronische Resourcen....Pages 308-318
Oft gestellte Fragen....Pages 319-336
Mathematica und Maple im Vergleich....Pages 337-353
Wie man mehr über Maple erfährt....Pages 354-357
Verzeichnis wichtiger Begriffe....Pages 358-363
Tabellen....Pages 364-365
Back Matter....Pages 366-366
Recommend Papers

Maple griffbereit: Alle Versionen bis Maple V 3 [1 ed.]
 978-3-528-06529-4, 978-3-322-83115-6

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

Nancy Blachman Michael J. Mossinghoff Maple griftbereit

Aus dem Programm -------___... Computeralgebra

N. Blachman Mathematica griftbereit

N. Blachman und M. 1. Mossinghoff Maple griilbereit

R. Braun und R. Meise Analysis mit Maple

E. Heinrich und H.-D. Janetzko Das Mathematica Arbeitsbuch

E. Heinrich und H.-D. Janetzko Das Maple Arbeitsbuch

W. Koepf, A. Ben-Israel und R. Gilbert Mathematik mit DERIVE

W.Koepf Hohere Analysis mit DERIVE

Vieweg _____________セ@

Nancy Blachman Michael 1. Mossinghoff

Maple griftbereit AIle Versionen bis Maple V 3 Aus dem Amerikanischen iibersetzt von Hans 1. Wolters

II VI.weg

© 1994 by Variable Symbols, Inc.

Aile Rechte an der deutschen Ubersetzung vorbehalten © Friedr. Vieweg & Sohn Verlagsgesellschaft mbH, BraunschweiglWiesbaden, 1995

Der Verlag Vieweg ist ein Unternehmen der Bertelsmann Fachinformation.

Das Werk einschlieBlich aller seiner Teile ist urheberrechtlich geschiitzt. Jede Verwertung auBerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzuliissig und strafbar. Das gilt insbesondere flir Vervielfiiltigungen, Ubersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen.

Gedruckt auf siiurefreiem Papier ISBN-13:978-3-528-06529-4 e-ISBN-13:978-3-322-83115-6 DOl: 10.1007/978-3-322-83115-6

Vorwort Das vorliegende Buch Maple V grijjbereit stellt eine klare und umfassende Beschreibung des Maple-Computeralgebra-Systems dar. Es wird dem Leser helfen, die Befehle, die er benotigt zu linden und effektiv zu verwenden. Das Buch ist ftir aile Benutzer geeignet; unabhangig davon wievieI Erfahrung sie mit der Anwendung von Maple haben. Maple V grijjbereit enthaIt: • Einen Uberblick und eine Einftihrung in Maple • Inforrnationen zur Benutzerschnittstelle von Maple • Listen von BefehInamen und -optionen, nach Sachgebiet geordnet • Beschreibungen aller Maple-BefehIe (alphabetisch geordnet) • Details tiber frei erhaItIiche Maple-Programme • Antworten zu oft gestellten Fragen • Die geliiuligen Mathematica-Befehlen entsprechenden Maple-Befehle • Hinweise zu anderen Quellen • Eine Kurzbeschreibung oft benutzter Begriffe

Zur Benutzung dieses Buches Kapitel A, Einfiihrung in Maple, stellt einen Uberblick sowie eine Einftihrung in Maple dar. In diesem Kapitel wird Maples Syntax beschrieben; es werden viele Beispiele zur numerischen und symbolischen Berechnung, Graphik und zur Programmierung in Maple angegeben. Sollte der Leser nicht mit Maple vertraut sein und nach einem kurzen Uberblick suchen, so sollte er mit diesem Abschnitt starten. Kapitel B, Die Benutzeroberflliche, beschreibt die graphische Arbeitsblattbenutzerschnittstelle und die auf Text basierende Befehlszeilenschnittstelle von Maple. Kapitel C, Liste der Sachgebiete, teilt aile Maple-Befehle abhangig von ihren Funktionen in bestimmte Kategorien auf. Man kann dieses Kapitel dazu benutzen, sich einen schnellen Uberblick tiber aile in Maple vorhandenen BefehIe zu verschaffen. Man kann auch nach dem Namen eines bestimmten Befehls oder einer bestimmten Option suchen. Kapitel D, Liste der Befehle, listet aile Maple-Befehle alphabetisch auf und gibt eine Kurzbeschreibung sowie ein Schema ftir jeden der Befehle. Die meisten Eintriige enthalten zumindest ein Beispiel. Kapitel E, Elektronische Resourcen, beschreibt die Share-Bibliothek, elektronische Adresslisten, Nachrichtenquellen des Intemets (news groups) und andere Resourcen, die auf dem elektronischen Wege zuganglich sind. Kapitel F, Oft gestellte Fragen, beantwortet einige Fragen zu Maple, die von Benutzem oft gestellt werden. Kapitel H, Mathematica und Maple im Vergleich, ist vor allem ftir solche Leser ntitzlich, die sich schon mit Mathematica auskennen. Die beiden Systeme werden miteinander verglichen und es werden die Maple Befehle aufgeslistet, die die Gegenstiicke zu den Mathematica-Befehlen darstellen. Kapitel I, Wie man mehr iiber Maple erf'ahrt, Iistet andere Inforrnationsquellen tiber Maple auf, darunter mehrere Publikationen und Benutzergruppen. Kapitel J, Verzeichnis wichtiger Begriffe, deliniert einige der in diesem Buch benutzten Begriffe. Kapitel K, Tabellen, faBt Maples Operatoren und Sondersatzzeichen zusammen.

Zur Erstellung dieses Buches Ftir dieses Buch wurden Maple-Befehle auf verschiedenen Plattforrnen getestet, darunter Sun und NeXT Arbeitsplatzrechner und Apple Macintosh und IBM-kompatible Personalcomputer; verwendet wurden Maple V, Maple V Version 2 und Maple V Version 3. Dieses Buch enthaIt Inforrnationen aus den Maple-Hilfsdateien und aus dem Maple V Library Reference Manual, welches von Waterloo Maple Publishing erstellt wurde. Das vorliegende Buch wurde von Nancy Blachman, Michael Mossinghoff und Peter Altenberg gestaltet. Es wurde mit dem LaTeX Dokumentverarbeitungssystem gesetzt. Die PostScript-IlIustrationen wurden von Maple erzeugt, leicht modifiziert und dann mit Hilfe der epsf-macros von Radical Eye Software eingefUgt. Zur Erzeugung der セtウxMeゥョァ。「・@

Vorwort fiir die Kapitel C, D und 7 aus von den Autoren erzeugten Datenbanken, wurden Unix-Programme verwendet. Larry Walls perl-Programm war bei der Erstellung dieser Kapitel besonders hilfreich. Das dvips-Programm von Radical Eye Software verwandelte die TsX-Ausgabe in eine PostscriptDatei.

Danksagungen Nancy und Michael - Wir sind allen dankbar, die uns Vorschllige zu diesem Buch gemacht haben. Wir wollen insbesondere den folgenden Leuten danken: Kate Atherly von Waterloo Maple Software, Bill Bauldry von der Appalachian State University, Nelson Blachman, der bis vor kurzem bei GTE tlitig war, Jonathan Brown von Wadsworth, Inc., Robert Campbell von Variable Symbols, Stan Devitt von der University of Saskatchewan und Waterloo Maple Software, Michael Fennel, Dave Hart von der Indiana University, Jeremy Hayhurst von Brooks/Cole, Benton L. Leong von Waterloo Maple Software, Michael B. Monagan von der ETH, Darrel Redfern von Practical Approach, Peter Reynolds vom Office of Naval Research, Carol Scheftic von der Camegie Mellon University und Brooks/Cole, Glenn A. Sowell von der University of Nebraska at Omaha, Paul Swets von der University of Texas at Austin, Jenny Watson von Clecom Ltd. und Sue Worden vom University of Texas Computation Center. Wir wollen uns bei Daniel Drucker von der Wayne State University, Abi Fattahi vom Whittier College, Betty Field von den Maricopa Community Colleges, John Ramsay vom College of Wooster und Daniel Schwalbe vom Macalester College ftir die Durchsicht einer friihen Version des Buches und fiir ihre zahlreichen Ideen, Komrnentare und Vorschllige danken, die wir aufgegriffen und in dieses Buch eingearbeitet haben. Wir schlitzen die Hilfe von Ed W. Sznyter von Babel Press und von Cameron Smith mit TsX. Wir danken Peter Altenberg ftir seine Untersttitzung bei der graphischen Gestaltung dieses Buches. Wir mochten auBerdem den Entwicklem von Maple, den Autoren des Maple Library Reference Manual(Bruce W. Char, Keith o. Geddes, Gaston H. Gonnet, Benton L. Leong, Michael B. Monagan und Stephen M. Watt) und Ron Neumann von Waterloo Maple Software fiir ihre Unterstiitzung danken. Wir danken auch Nancy Champlin Conti und Elizabeth Barelli Rammel, welche die Editorial Assistants bei Brooks/Cole sind, sowie dem Productions Editor Kirk Bomont ftir ihr auBergewohnliches Engagement.

Naney- Ich mochte ferner Mark Yoder und Robert L6pez vorn Rose-Hulman Institute of Technology ftir ihre Einladung zu ihrern vom NSF gesponserten Workshop zur Belebung des Wissenschafts-, Mathematik- und Ingenieursunterrichts mit Hilfe von Computeralgebra-Systemen danken. Bei diesem Workshop erhielt ich wertvolle Anregungen von Herb Brown von der University at Albany, Duane Broline von der Eastern Illinois Univerisity, Brian Evans, der zur Zeit an der University of California at Berkeley forscht, Estela Llinas von der University of Pittsburgh at Greensburg und Joel Trussell von der North Carolina State University. Ich danke Michael Morgan von Morgan/Kauffman Publishing Company und Bob Evans von Brooks/Cole daftir, daB sie mein Buch Jeremy Hayhurst empfohlen haben und Wayne Oler von Wadsworth dafiir, daB er mir geholfen hat, sich ftir Brooks/Cole als Verleger zu entscheiden. I freue mich, daB Jeremy Hayhurst von Brooks/Cole sich ftir mein Manuskript interessiert hat; es war eine sehr angenehme Zusammenarbeit. Ich mochte meinen Eltem, Nelson und Anne Blachman fiir ihre Zustimmung und Untersttitzung danken. AuBerdem mochte ich Anupama Murty ftir seine Beitrlige zu Kapitel D dieses Buches danken und Helen Chemicoff ftir die Geschliftsfiihrung von Variable Symbols, wlihrend ich an diesem Buch arbeitete.

Michael - Ich mochte dariiberhinaus dem Department of Mathematics der University of Texas at Austin danken, insbesondere Rafael de la Llave und Jeffrey Vaaler. AuBerdem mochte ich mich bei Heather Lacey von Wadsworth, Inc. ftir ihre Untersttitzung bedanken. Mein ganz besonderer Dank gilt meiner Frau Kristine ftir ihre Geduld und Untersttitzung.

Schlu8wort Wegen der wachsenden Popularitlit von Maple haben wir uns dazu entschlossen, ein Buch zu schreiben, welches den Benutzem von Maple helfen soli. Wir hoffen, daB der Leser das Buch

VI

Maple V grijJbereit als niitzlich ansieht. Sollten Sie Fehler linden oder bemerken, daB etwas fehlt, oder sollten Sie Verbesserungsvorschliige zu diesem Buch haben, so lassen Sie es uns bitte wissen. Nancy Blachman Variable Symbols, Inc. 6537 Chabot Road Oakland, CA 94618-1618 USA Email: nb@cs. stanford. edu Fax: 510-652-8461 Telefon: 510-652-8462

Michael Mossinghoff Department of Mathematics University of Texas at Austin Austin, TX 78712 USA Email: mos s ingh@math. u texas. edu

VII

Inhaltsverzeichnis A Einfiihrung in Maple A.I Der Aufbau von Maple . A.2 Notation. . . . . . . . A.3 Wie man Maple benutzt A.4 On-Line-Hilfe . . . . . A.5 Numerische Berechnungen A6 Symbolische Manipulation A7 Graphik . . . A.8 Datentypen .. A9 Anweisungen . AIO Datenstrukturen All Funktionen in Maple . AI2 Das Schreiben eigener Funktionen A.13 Eingabe und Ausgabe . . . . . . A.I4 Ubungen . . . . . . . . . . . . A.I5 Ausgaben ftir Studenten und akademische Ausgaben A.16 Wie man Maple erwirbt . . . . . . . . . . . . . .

1 2 2

3 7

9 16 20 37 40 44 53 57 62 65 68 68

B Die Benutzeroberflliche B.I Die Arbeitsbiatt-Schnittstelle B.2 Die Befehlszeilenoberflache

70

C Liste der Sachgebiete C.I Graphik . . . . . C.2 Mathematik . . . C.3 Prograrnmierung. C.4 System ..

94 95 97 112 118

D Liste der Befehle

120

E Elektronische Resourcen E.1 Die Share-Bibliothek . . . . . . . E.2 Der Info-Server und User-Groups. E.3 Wie man Anonymous FrP benutzt

308

F Oft gestellte Fragen F.I Allgemeine Fragen . F.2 Technische Fragen .

319 319 320

G Mathematica und Maple im Vergleich G.1 Vergleich . . . . . . . . . . . . . . . . . . . . . . G.2 Entsprechende Funktionen in Maple und Mathematica .

337

H Wie man mehr tiber Maple erfiihrt H.I Bticher und Fachzeitschriften . H.2 Technische Untersttitzung H.3 Training . . . . . H.4 Konferenzen. . . H.5 Fehlt irgendetwas? H.6 Uber die Autoren

354 354 356 357 357 357 357

Verzeichnis wichtiger Begriffe

358

J Tabellen 1.1 1.2 1.3 1.4

Null-Operatoren Operatorprioritat Satzzeichen .. Escape-Zeichen

70 85

308 317 317

337 338

364 364 364 365 365

A

Einfiihrung in Maple

Maple ist ein Computeralgebra-System: ein fortgeschrittenes Programm zur exakten symbolischen (Formel)manipulation, zur priizisen numerischen Berechnung, zum mathematischen Programmieren und zur Erzeugung von Graphikausgaben. Es wurde an verschiedenen Stellen von Forschem und Studenten entwickelt, unter anderem der University of Waterloo, Drexel University, der Eidgenossischen Technischen Hochschule (ETH) in ZUrich und Waterloo Maple Software. Maple wird mittlerweile iiberall an hoheren Schulen in Mathematikkursen, sowie in Untemehmen und an Universitaten zur Fortbildung, fiir technische Anwendungen und zur wissenschaftlichen Forschung eingesetzt. Maple beinhaltet: • Fortgeschrittene Algorithmen zur symbolischen Manipulation, einschlieBlich aller Standardoperationen aus Algebra, Analysis und linearer Algebra. • Eine umfangreiche Sammlung numerischer Routinen, die auf Zahlen beliebiger GroBenordnungen und mit beliebiger numerischer Genauigkeit operieren. • Zwei-und dreidimensionale Graphikroutinen zum Zeichnen von Funktionen und Visualisieren von Daten auf dem Bildschirm. • Pakete mathematischer Funktionen, welche Kodieroperationen enthalten, sowie Algorithmen aus Gebieten wie Algebra, Analysis, Geometrie, linearer Algebra, diskreter Mathematik, Zahlentheorie, Statistik und mathematischer Physik. • Eine umfangreiche Programmiersprache zum Entwickeln eigener Losungen. • Die Fiihigkeit, den Quellcode der meisten der fast 2500 Funktionen zu inspizieren und sogar zu modifizieren. • Besondere Routinen, die es Studenten erlauben. Probleme aus Algebra und Analysis schrittweise zu IOsen. • Eine erschwingliche Version speziell fiir Studenten. Maple gibt es fiir alle miiglichen Computer z.B. denen von Apple. Convex. Cray, DEC. HewlettPackard, IBM, MIPS, NeXT, Sequent, Silicon Graphics und Sun. Es lliuft auf Personalcomputem unter DOS, sowohl ohne als auch mit Microsoft Windows. Maple-Befehle und Programme sind portabel: Man kann dasselbe Maple-Programm auf einem PC, einem Arbeitsplatzrechner (Workstation), einem GroBrechner (Mainframe) und einem Supercomputer ausfiihren. Dieses Kapitel stellt eine Einfiihrung in das Maple-Computeralgebra-System dar. Zuerst wird gezeigt, wie man Maple interaktiv benutzen kann, und wie man Hilfsinformation direkt auf dem Bildschirm angezeigt bekommen kann. Dann werden einige der numerischen und symbolischen Funktionen von Maple illustriert, sowie die Moglichkeiten, Plots und Graphiken zu erstellen. AnschIieBend werden die in Maple vorhandenen Datentypen sowie die Kontroll- und Datenstrukturen diskutiert, und die Programmbibliothek wird etwas detaillierter beschrieben. Dieses Kapitei enthlilt femer eine Einfiihrung zum Schreiben eigener Funktionen und Prozeduren in Maple, die von einer Zusammenfassung der Eingabe-und Ausgabedaten abgeschlossen wird. Eine Sammlung von Aufgaben bietet die Gelegenheit. das Gelemte zu iiben. 1m letzten Abschnitt fiihren wir mehrere Untemehmen auf, welche Maple-Software anbieten. Dieses Buch basiert auf Maple V Version 3, Maple V Version 2 und Maple V. Aile zur Version 3 neu hinzugekommenen Funktionen sind klar gekennzeichnet. Maple V Version 3 ist beziiglich mathematischer Funktionen, Graphik, Programmierung und On-Line-Hilfe stark gegeniiber den vorigen Versionen verbessert worden.

A Einfiihrung in Maple

A.I

Der Autbau von Maple

Das Maple-Computeralgebra-System besteht hauptsachlich aus drei Komponenten. Zuerst ist da der Kernel, der Maples Rechenmaschine darstellt. Er wird geladen, sobald man eine Maple-Sitzung beginnt. Er fiihrt die grundlegenden Funktionen aus, z. B. das Auswerten von Ausdriicken, die Ausflihrung einfacher algebraischer Operationen und das Kontrollieren von Eingabe und Ausgabe. Der Kernel ist in der Programmiersprache C geschrieben und ist eher klein, namlich nach Obersetzung in der Regel weniger als ein Megabyte. Als zweite Komponente ist die Maple-Programmbibliothek zu nennen, die den GroBteil von Maples mathematischen Kentnissen darstellt. Die Funktionen dieser Bibliothek sind in Maples eigener Prograrnmiersprache geschrieben und man kann diesen Code buchstiiblich selbst inspizieren. Einige der Bibliotheksroutinen werden vom Kernel wiihrend einer Sitzung nach Bedarf eingelesen. Andere liest der Benutzer explizit ein, wenn er sie braucht. Einige sind zu sogenannten Paketen zusammengefaBt. Man kann ein gesamtes Paket auf einmal einladen und somit Zugriff auf Dutzende von Routinen erhalten, die z.B. in das Gebiet der linearen Algebra oder auch der Graphik fallen. Der Aufbau der Programmbibliothek wird ausfiihrlicher in Abschnitt A.II auf Seite 53 erkliirt. Die dritte Komponente des Maple-Systems ist die Benutzerschnittstelle, auch Benutzer-Interface genannt. Unter Maple V Version 2 und Version 3 benutzen aile Computer, die hinreichend graphikfahig sind, ein sogenanntes Worksheet-Interface!. Die Arbeitsblatter erlauben es, MapleBefehle, Ergebnisse, Graphiken und begleitenden Text in einem einzigen Dokument zusammenzufassen. 1m Gegensatz zum Kernel oder zur Bibliothek kann die Benutzerschnittstelle von Computer zu Computer sehr verschieden sein. Kapitel 2, Die Benutzerschnittstelle, beschreibt die beiden Hauptvarianten von Benutzerschnittstellen zum Maple-System.

A.2 Notation Wir geben oft ein sogenanntes Schema einer Maple-Funktion an, urn die Anzahl und Typen der Parameter, die sie benotigt, darstellen zu konnen. In einem Schema miissen Worte und Symbole, welche im Schreibmaschinen-Zeichensatz gesetzt sind, wortlich eingegeben werden, Begriffe in Kursivschrift hingegen, miissen durch besondere Maple-Ausdriicke ersetzt werden. Beispielsweise heiBt die Maple-Funktion urn Grenzwerte zu berechnen I imi t. Das Grundschema flir limit zeigt, daB zwei Argumente benotigt werden: Erstens einen Ausdruck (expression) und zweitens eine Gleichung. limit (ausdr, var = val); In diesem Kapitel kommen viele Beispiele von Maple-Befehlen vor. Maple-Befehle sind in Schreibmaschinen-Zeichensatz gesetzt und eine Maple-Eingabeaufforderung geht ihnen voran. Bei den meisten Systemen ist diese Eingabeaufforderung (kurz Prompt genannt) das Zeichen >, aber manche Maple-Versionen konnen e, ein ausgefiilltes Dreieck, oder ein vergroBertes > als Prompt benutzen. In diesem Buch werden wir > als die Maple-Eingabeaufforderung benutzen. Von Maple stammende Ergebnisse werden in mathematischer Darstellung sowie zentriert angegeben. Maple V Version 2 und Version 3 drucken Ergebnisse auf diese Weise bei Computern aus, die die Arbeitsblattschnittstelle benutzen. Wir konnen zum Beispiel den Grenzwert der Folge 1/(1 + -;.)m fiir m gegen Unendlich mit Hilfe des folgenden Befehls berechnen: > limit(l/(l+r/m)'m, m

= infinity); 1

Bei Systemen ohne die Arbeitsblatt-Schnittstelle, wie zum Beispiel ein einfacher Bildschirm und auch bei friiheren Maple-Versionen wiirde das Ergebnis folgendermaBen ausgedruckt werden: 1

exp(r) 1 Worksheet

kann man frei als Arbeitsblatt iibersetzen. 1m folgenden wird meistens der Begriff ,,Arbeitsblatr' verwendet werden.

2

A.3 Wie man Maple benutzt Manchmal, wenn wir anzeigen wollen, daB eine bestimmte Taste auf der Tastatur gedrilckt werden soli, rahmen wir die Taste ein. Das Betatigen der Enter- oder Datenfreigabetaste wird zum Beispiel durch IENTER I angezeigt.

A.3

Wie man Maple benutzt

In diesem Abschnitt vermitteln wir dem Leser die zur interaktiven Benutzung von Maple erforderlichen Kenntnisse von grundlegenden Befehlen und Konventionen. Wir beschreiben, wie man eine Maple-Sitzung startet, Maple-Befehle eingibt und wie man langandauemde Berechnungen unterbricht.

Wie man Maple aufruft Wie genau man Maple aufruft und eine Sitzung startet, hiingt von der Art des benutzten Computers abo Benutzt man Maple unter dem X Window System (bzw. eine der abgeleiteten Versionen wie zum Beispiel DECwindows, OpenWindows oder OSFlMotif), so gibt man xmaple & in einem Kommando-Fenster ein. Aus DOS, Unix oder einem VMS-Terminal heraus, ruft man Maple durch Eingabe von maple auf. Andere Systeme erlauben es, Maple durch Anklicken eines AhomblattSymbols aufzurufen 2 . Die nachfolgende Tabelle faBt zusammen, wie man Maple auf verschiedenen Computem aufruft. Computertyp DOS MS-Windows, Macintosh, NeXT X Window-Systeme Unix-Bildschirm VMS-Bildschirm

Befehl, urn Maple aufzurufen Man gibt maple ein Man klickt das Ahomsymbol an. Eingabe von xmaple & Eingabe von maple Eingabe von maple

Wenn sich Maple nicht aufrufen liillt, sollte man zuerst sicherstellen, daB sich das Programm in einem Dateiverzeichnis befindet, welches zum Suchpfad gehOrt. Bei Unix-Systemen kann man sich den Suchpfad durch Eingabe von echo SPATH oder echo Spath anzeigen lassen. Gegebenenfalls sollte man sich an den Systemverwalter wenden oder im Handbuch zur Maple-Installation nachlesen, wie man den Suchpfad so veriindert, daB man Maple aufrufen kann. Wenn man Maple aus einer Graphikumgebung heraus aufruft, erscheint ein neues Fenster fiir die Maple-Sitzung. (Ein Bild dieses Fensters, so wie es unter X-Window erscheint, findet man auf Seite 71 in Bild B.I.) Das Maple-Logo, versehen mit einem Portrait von Sir Isaac Newton, erscheint manchmal auf dem Bildschirm solange das Programm initialisiert wird (Bild A . I).

Bild A.I Das Maple V-Logo Wenn man Maple von einem Bildschirm aus aufruft, erscheint ein Vorspann, der so iihnlich aussieht wie der folgende: 2Anm. d. Dbers: Das rilhrt daher, daB Maple a1s ,Ahom" iibersetzt wird

3

A Einfiihrung in Maple

I\A/I

·-1 \ I

1/1-·

MAPLE

\

/

Maple V Version 2 (University of Texas at Austin) Copyright (c) 1981-1993 by the University of Waterloo. All rights reserved. Maple and Maple V are registered trademarks of Waterloo Maple Software. Type? for help.

>

Nachdem der Maple-Kernel eingeladen wurde, fordert Maple den Benutzer zur Eingabe auf und zeigt damit an, daB es bereit ist, Befehle zu bearbeiten. Einige Maple-Versionen haben zwei Benutzerschnittstellen. Eine graphische Benutzerschnittstelle wird ftir interaktive Maple-Sitzungen bevorzugt, wahrend eine Version mit Befehlszeilen sich besser ftir den Stapelbetrieb eignet. Unter Unix-Systemen wird die Version mit Befehlszeilen map 1 e genannt, und sie sollte sich in dem Dateiverzeichnis befinden, in welchem Maple installiert ist.

Die Eingabe von Maple-Befehlen Wir wollen nun von Maple den Wert von 5 10 erfragen.

9765625 Mit ganz wenigen Ausnahmen muG jeder eingegebene Maple-Befehl mit einem Semikolon (;) oder einem Doppelpunkt (: ) enden. Beendet man einen Befehl mit einem Doppelpunkt, so wird zwar die Rechnung ausgefiihrt, das Ergebnis wird aber nicht auf dem Bildschirm ausgegeben. Ein Doppelpunkt wird immer dann benutzt, wenn es unerheblich ist, das Ergebnis des Befehls zu sehen, wenn man zum Beispiel einer Variablen einen Wert zuweist oder eine Funktion aus der Programmbibliothek liest. Da das Ende eines Befehls durch ein spezielles Zeichen gekennzeichnet ist, ist es moglich, mehrere Befehle in einer Zeile einzugeben, aber auch, mehrere Zeilen zur Eingabe eines einzigen Befehls zu benutzen. Sollte man das Semikolon einmal vergessen, so kann man es in der nachsten Zeile eingeben. > 2 10;

2'20; 2'30;

A

1024 1048576 1073741824 > 13 + 29 >

42

t

Urn die Ausfiihrung von Berechnungen zu erzwingen, muG man die IRETURN Ioder IENTER Taste betatigen. (Welche Taste man verwenden muG, hangt vom benutzten Computer ab.) Nachdem Maple die Rechnung beendet hat, wird wiederum ein Prompt angezeigt, urn dem Benutzer mitzuteilen, daB ein neuer Befehl eingegeben werden kann. Es gibt eine groBe Anzahl von Funktionen in Maple V. Einige Befehlsnamen sind geradezu selbsterkliirend 3

Funktion

Beschreibung

factor limit plot round simplify solve

Zerlege ein Polynom in Linearfaktoren Berechne den Grenzwert eines Ausdruckes. Zeichne ein zweidimensionales Diagramm Runde eine (Gleitkomma)zahl auf die nachste ganze Zahl Vereinfache einen Ausdruck Lose Gleichungen auf

3 Anm.

4

d. Dbers.: Dies gilt natiirlich ftir die englische Sprache.

A.3 Wie man Maple benutzt Viele Namen sind Abkiirzungen; einige davon sind in der Mathematik sehr gebriiuchlich.

Funktion

Beschreibung

abs diff dsolve ifactor igcd int tan

Absoluter Wert Differenziere Ulse die Differentialgleichungen Zerlege eine ganze Zahl in Primfaktoren Gr(jBter gemeinsamer Teiler einer ganzen Zahl Integriere Tangens

Man ruft eine Maple-Funktion auf, indem man ihre Argumente in K1ammem hinter den Funktionsnamen setzt. Man wiirde z. B. die Quadratwurzel mittels sqrt berechnen und die Ableitung der Sinusfunktion mittels di ff. > sqrt(676) - 1;

25 > diff(sin(x) , x);

cos(x) Maple unterscheidet zwischen GroB- und K1einschreibung, der Befehl dif f ( sin (x) , x) unterscheidet sich deutlich von Diff (sin (x) , x). Die Namen der meisten Maple-Funktionen beginnen mit einem K1einbuchstaben. Viele der Funktionen, deren Name mit einem GroBbuchstaben beginnt, wie Diff, Int und Limi t sind starr- man versteht darunter formale Operationen, die keine aktuellen Berechnungen durchflihren. Man kann beispielsweise die Ableitung der Sinusfunktion ohne Berechnen des Ergebnisses rein formal mit Hilfe der starren Funktion Diff angeben. > Diff(sin(x), x);

セ@

ax sin(x)

Leerzeichen innerhalb von Maple-Befehlen werden gewllhnlich ignoriert. Es kann sichjedoch a1s niitzlich erweisen, Leerzeichen einzufligen, urn die Lesbarkeit zu erMhen. Am besten erlemt man Maple durch Uben und duch Ausprobieren der einzelnen Befehle. Der Rest dieses Kapitels stellt an zahlreichen Beispielen die Flihigkeiten von Maple dar. Man sollte nun selbst versuchen, diese Befehle einzugeben und auch mit ihnen zu experimentieren. Wenn man die Beispiele dieses Buches eintippt, sollte man darauf achten, daB man • dieselbe Rechtschreibung und GroB-Kleinschreibung • dieselben Arten von K1ammem (eckige, runde, Mengenldammem) • dieselben Satzzeichen (Anflihrungszeichen, Kornmata, Semicolon, Doppelpunkte) benutzt.

Wie man vorhergehende Ergebnisse benutzt Oft will man ein Ergebnis, welches man von Maple erhalten hat, direkt als Eingabe an einen weiteren Befehl weiterreichen. Das Anflihrungszeichen " bezieht sich auf das vorher berechnete Ergebnis. > int(cos(x)

* sin(x)A5, x);

セ@

6

sin(x)6

5

A Einfiihmng in Maple > diff (", x);

cos(x) sin(x)5 Genauso kann man das vorletzte Ergebnis durch "" und das vorvorletzte Resultat durch ansprechen. Milchte man auf die Gesamtheit aller Ergebnisse, die wlihrend einer Maple-Sitzung berechnet wurden, zugreifen, so liest man die Bibliotheksfunktion history mit Hilfe des Befehls readlib (history) ein und gibt danach den Befehl history () ein, urn den HistoryMechanismus in Gang zu setzen. Man wird dann genau tiber dem Prompt oder aueh anstelle des Prompts folgendes sehen: "On ::::!' (der Buchstabe 0 fUr Output, gefolgt von einer ganzen Zahl n). Danach wird das n-te berechnete Ergebnis in der Variablen On gespeiehert, und man kann mit diesem Namen dann in Zukunft auf das entsprechende Ergebnis zugreifen. Hat man einmal den History-Meehanismus gestartet, so sind die Befehle " " und " " " nieht mehr anwendbar. Urn diese Eigensehaft zu umgehen, muB man off eingeben. > readlib(history) : > history();

59049 02 : = 01 + 1;

59050 03 .- off; >

Wie man Maple verHi8t Urn eine Maple-Sitzung zu beenden, gebe man quit, stop oder done ein. Man braueht diese Befehle nieht mit einem Komma oder Semikolon abzusehlieBen. Die folgende Tabelle listet andere Moglichkeiten zum Verlassen von Maple, abhangig vom Computer, auf. Computertyp Aile DOS MS-Windows Macintosh X Window Systeme Unix NeXT

Befehl zum Verlassen qui t, stop oder done Driieke die Taste セ@ Man wahle den Exit-Befehl im File-Menu, oder ALT - F4 Man wlihle den Quit-Befehl im File-Menu oder COMMAND -q Man wlihle den Exit-Befehl im File-Menu oder ALT -x Man betiitige ICONTROLj-1 Man wlihle den Quit-Menubefehl oderICOMMANDI-q

Wie man eine Berechnung unterbricht Man kann eine langandauemde Berechnung unterbreehen, indem man die Interrupt-Taste des Computers betiitigt. Bei einigen Computem bricht man dadureh die gesamte Maple-Sitzung abo Bei den meisten Systemen jedoch erseheint ein neuer Prompt und man bleibt in Maple, nachdem man einen Befehl abgebroehen hat. Hier sind die Befehle zum Unterbrechen von Maple auf versehiedene Computem.

6

A.4 On-Line-Hilfe Computertyp DOS MS-Windows Macintosh X Window-Systeme Unix NeXT VMS

Befehl zum Unterbrechen CONTROLI- BREAKI oder 1CONTROLj-c CONTROLI- BREAKI COMMAND -. (Kommandotaste gefolgt von einem Punk!) Interrupt-Knopf ICONTROLi-c Interrupt-Befehl im Kernel-Menu oder oder 1COMMAND 1-. ICONTROLi-z

In Maple V unter Unix-Systemen kann man durch zweimaliges Eingeben des Interrupt-Befehls die Sitzung komplett abbrechen. Dies ist in Maple V Version 2 ftir Unix nicht mehr moglich.

A.4 On-Line-Hilfe W1ihrend einer Maple-Sitzung kann man auf ausfiihrliche Hilfe zUriickgreifen. Man kann Dokumentation tiber jede beliebige Maple-Funktion mit Hilfe des ? Befehls anfordern. Man kann die Namen von Maple-Funktionen mit Hilfe eines Schlagwortverzeichnisses, welches auf dem Bildschirm vorgespielt wird, nachschlagen, und man kann einen Uberblick tiber das ganze System mit Hilfe eines Lernprogramms (Tutorials), das sich direkt aufrufen Hillt (on-line), bekommen.

Der Hilfebefehl Durch die Eingabe eines Fragezeichens (?), gefolgt von einem Befehlsnamen, fordert man Hilfsinformationen zu diesem Befehl von Maple an. Die Hilfsinformation zu einem Befehl umfaBt in der Regel eine ausftihrliche Beschreibung des Befehls, zusammen mit einem Schema oder Muster, welches die Anzahl und Typen der erforderlichen Parameter angibt, sowie ein Beispiel zur Benutzung des Befehls und Querverweise zu verwandten Befehlen und anderen Hilfsinformationen des Schlagwortregisters. Eine Anforderung von Hilfsinforrnationen ist eine der wenigen Maple-Befehle, die nicht mit einem Semikolon enden mtissen. Nachfolgend erhalten wir Hilfsinforrnation zur Funktion igcd, die den grOBten gemeinsamen Teiler ganzer Zahlen berechnet. Es kann sein, daB dieser Hilfstext in einem anderen Fenster erscheint; das hiingt vom benutzten Computer abo > ?igcd

FUNCTION: igcd - greatest common divisor of integers FUNCTION: ilcm - least common multiple of integers CALLING SEQUENCE: igcd(x_l,x_2, ... ) ; ilcm(x_l,x_2, ... ) ; PARAMETERS: x_l,x_2, ... - any integers SYNOPSIS: - The function igcd computes the greatest common divisor of an arbitrary number of integers. The function ilcm computes the least common multiple of an arbitrary number of integers. EXAMPLES: > igcd();

o

> ilcm();

1 > igcd( -10,

6, -8 ); 2

7

A Einfiihrung in Maple > ilcm( -10,

6,

-8 ); 120

> igcd ( a,

b ); igcd(a, b)

SEE ALSO:

gcd, lcm

Man kann den ?-Befehl auch dazu benutzen, Befehlsnamen zu finden. Wenn die Hilfsanforderung mit keinem Stichwort tibereinstimmt, dann listet Maple die Namen aller Stichworte die genauso wie die Anforderung beginnen. Beispieisweise werden unten aile Hilfseintrage aufgelistet, die mit dem Buchstaben ,j" beginnen: > ?j Try one of the following topics:

{join, jordan, jacobi. 1, jacobian. lordanBlock} Wenn es keine Befehle gibt, die so wie die Nachfrage beginnen, schlagt Maple einige alternative Buchstabierungen vor: > ?jorden

Try one of the following topics:

{jordan.lordanBlock} Es gibt auch Hilfseintrage in Maple, die sich mit aligemeinen Aspekten von Maple befassen, wie zum Beispiel Typen und Datenstrukturen, Graphiken, Prozeduren und der Maple-Bibliothek. Diese Tabelle faBt zusammen, wie man den Hilfebefehl benutzen kann. Berehl ?name ?name[unterbegriff] ?name,unterbegriff ?pkg[ name] ?

?index ?library ?libmisc ?packages ?datatypes ?expressions ?statements ?index,procedures ?index,tables ?misc ?updates

Stichwort name, oder liste Eintrage, die mit name beginnen unterbegriff im Zusammenhang mit name unterbegriff im Zusammenhang mit name name im Paket pkg Der Hilfebefehl im aligemeinen Index der Stichworte ftir Hilfsinformation Die Standard-Bibliotheksfunktionen Sonstige Bibliotheksfunktionen Kurze Beschreibung aller Pakete Grundlegende Datentypen Maple-Ausdriicke Maple-Anweisungen (Statements) Maple-Prozeduren Tabellen und Felder Liste sonstiger Eintrage Zusammenfassung neuer Eigenschaften und Funktionalitaten einer jeden Neuauftage von Maple

Das Vorspielen von Hilfsinformation Das Programm, welches Hilsinformation (Stichworte) vorspielt, der sogenannte Browser, hilft dem Benutzer, Namen und Beschreibungen von Maple-Befehlen zu finden. Aile Maple-Befehle sind innerhalb des Browsers kategorisiert und zwar in vier Grundkategorien: Graphik, Mathematik, Programmierung und System. Indem man eines dieser Stichworte auswahlt, erhlilt man eine Liste von Untereintragen vorgespieit, die selbst wieder Untereintrage enthalten konnen und so weiter. SchlieBlich gelangt man zu einer Liste von Maple-Befehlen. Hebt man einen Befehl heraus, erscheint eine kurze Beschreibung des Befehls im unteren Teil des Browsers. Man kann dann den Hilfstext zu dieser Funktion aufrufen. Ein Bild des Browsers, so wie man ihn unter dem X-Window-System findet, befindet sich auf Seite 76, Bild B.2. Wie man genau den Browser aufruft, durch die Stichworte hindurchnavigiert und Befehle auswahlt,

8

A.5 Numerische Berechnungen ist von Computer zu Computer verschieden. Vnter DOS wird der Browser durch Betatigen 、・イセ@ Taste aufgerufen, mit den Pfeiltasten steuert man durch die Stichworteintriige und die Enter-Taste wiihlt ein Stichwort aus. Auf anderen Plattformen wird die Maus zum Finden und Auswiihlen von Stichworteintriigen benutzt. Der Browser in Maple V Version 3 enthlilt eine Suchfunktion, mit der man Namen von Befehlen finden kann. Die Kurzbeschreibung wird ebenso wie ein Abschnitt von Schliisselworten des Hilfsindex nach einem gegebenen Wort bzw. einer gegebenen Zeichenkette durchsucht und eine Liste passender Befehle wird zUriickgegeben. Einige Plattformen fur Maple V Version 2, wie z.B. DOS, enthalten eben falls diese Funktion. Ein Browser zum Anzeigen der Hilfseintriige gehort auf allen Plattformen zu Maple V Version 2 und Version 3.

Lernprogramm Maple V Version 2 und Version 3 beinhalten ein Lemprogramm, auch Tutorial genannt; es befindet sich on-line und dient Maple-Anfangem zum Lemen der Grundlagen. Durch Auswiihlen von Stichworten aus einem Menii kann man sich auf ein bestimmtes Themengebiet konzentrieren oder man kann der Reihe nach aile Themen des Tutorials durcharbeiten. Das Lemprogramm behandelt die grundlegenden Aspekte von Maple und bringt unziihlige Beispiele von Berechnungen, symbolischen Manipulationen und Graphik. Es gibt besondere Abschnitte, die sich mit Analysis und linearer Algebra in Maple befassen. Quizfragen dienen zum Uberpriifen des Verstiindnisses der grundlegenden Maple-Befehle und der Maple-Syntax. Man ruft das Lemprogramm mit dem Befehl tutorial () auf.

Zusatzliche Hilfebefehle Maple V Version 3 beinhaltet vier neue Hilfebefehle: info, usage, example und rela ted. Der inf o-Befehl spielt die Kurzbeschreibung einer Funktion vor, die man oben auf der entsprechenden Hilfsseite vorfindet. > info(abs);

FUNCTION: abs - The absolute value function Der usage-Befehl spielt die Aufrufsfolge fiir eine Funktion vor und gibt eine Beschreibung ihrer Parameter. Diese Funktion kann auch mit einem doppelten Fragezeichen aufgerufen werden. > ??abs CALLING SEQUENCE:

abs(x)

PARAMETERS:

x - an expression Der example-Befehl spielt den Abschnitt mit Beispielen des On-Line-Hilfstextes vor. Dieser kann mit einem dreifachen Fragezeichen aufgerufen werden: ?? ?funktion. Der related-Befehl schlieBlich, gibt zusammenhiingende Funktionen und Hilfsstichworte an. > related(abs);

SEE ALSO: evalc, signum, inifcns

A.5

Numerische Berechnungen

Man kann Maple wie einen Taschenrechner zur Auswertung mathematischer Ausdriicke verwenden. Die numerischen Fiihigkeiten von Maple iibertreffen die eines gewohnlichen Taschenrechners jedoch bei weitem. Maple besitzt eine umfassende Bibliothek numerischer Funktionen. Sie

9

A EinfOhrung in Maple ermilglicht es Maple, Ergebnisses exakt zu berechnen oder mit beliebig hoher Genauigkeit zu approximieren. In diesem Abschnitt werden einige der numerischen Funktionalitaten beschrieben.

Einfache Berechnungen Es ist iiblich, giingige mathematische Ausdriicke mit speziellen Symbolen wie +, - und < zu schreiben. Maple benutzt diese Standard-Schreibweise fiir arithmetische und auch fiir Vergleichsoperationen. Diese Symbole sind Beispiele fiir Programmiersprachen-Operatoren in Maple. Eine vollstiindige Liste dieser Operatoren und anderer Spezialzeichen findet man am Ende dieses Buches, auf Seite 364 beginnend. Die folgende Tabelle stellt eine Liste der geliiufigsten arithmetischen, Vergleichs- und Wertzuweisungsoperatoren dar. Beschreibung Fakultiit Exponentiation Addition Subtraktion Negation Multiplikation Division Kleiner als Kleiner als oder gleich GrilBer als GrilBer als oder gleich 1st gleich 1st ungleich Zuweisung

Operator +

*

/
=

.-

Beispiel 4! 2 A5 13 + 29 69 - 27 -42 6 * 7 168 / 4 a < b a b a >= b x A2 + 5*x a b a .- 3

6

Viele zum Standard gehilrende mathematische Funktionen kilnnen mit Hilfe von Maple-Befehlen berechnet werden. Einige sind in der folgenden Tabelle aufgefllhrt. Mathematik

HセI@

Ixl VX e'"

log x, lnx sin x, cos x, tan x r(z) Jv(x) e- t2 dt 2/,;;rr (t s )

J;

Maple abs(x) sqrt(x) binomial(n, m) exp(x), EAx log(x),ln(x) sin(x),cos(x),tan(x) GAMMA(z) BesselJ(v, x) erf (x) Zeta(s)

Name Absolutwert oder Betrag Quadratwurzel Binomialkoeffizient Exponentialfunktion Natiirlicher Logarithmus Trigonornetrische Funktionen Gamrnafunktion Besselfunktion Fehlerfunktion Riernannsche Zetafunktion

Prioritlit und Assoziativitlit Bei der Ausfiihrung arithmetischer Operationen folgt Maple in der Regel den Standardregeln fiir Prioritiit und Assoziativitiit von Operatoren. Zurn Beispiel werden Potenzen zuerst ausgefiihrt, dann werden Multiplikationen und Divisionen ausgewertet, schlieBlich Additionen und Subtraktionen. Man kann Klammern setzen, urn einerseits die Reihenfolge der Ausfiihrung von Operatoren zu veriindern, oder andererseits zu betonen. > 1 + 2

* 3; 7

10

A.S Numerische Berechnungen >(1+2)*3;

9 Manchmal sind Klammem notwendig. Negation ist auf derselben Prioritiitsebene wie Addition, deshalb muS die - 3 im folgenden Ausdruck in Klammem gesetzt sein. > 25 + -3;

syntax error: 25 + -3; >25+(-3);

22 Der Hochpfeil C) zeigt auf die Stelle, an der der Syntaxfehler auftrat. Klammem sind oft notwendig, wenn man potenziert. Soli Maple eine Kette von Potenzen auswerten, dann geht Maple nicht davon aus, daB die Kette von links nach rechts oder von rechts nach links abgearbeitet werden soil. Vielmehr wird eine Fehlermeldung ausgegeben. (Man sagt, daB der , -Operator nicht-assoziativ in Maple ist.) > 2'3'4;

syntax error: 2'3'4; >

(2'3) '4;

4096 1st ein Exponent negativ, sp mtissen ebenfalls Klammem gesetzt werden. > 2'-5;

syntax error: 2'_5; > 2' (-5) ;

1

32 Aile Maple-Operatoren sind, nach Prioritat geordnet, in einer Tabelle im hinteren Teil des Buches aufgefiihrt (Seite 365). In derselben Tabelle findet man auch die Assoziativitatsregeln ftir jeden Operator.

Genaue und genaherte Zahlen Maple unterscheidet genaue und geniiherte Werte. Ganze Zahlen, sogenannte Integers, sind genaue Zahlen. Eine ganze Zahl in Maple ist eine Zahl ohne Dezimalpunkt4. Quotienten ganzer Zahlen (Briiche) und komplexe Zahlen, deren Real- und Imaginiirteil ganz ist (GauSsche Zahlen) sind auch exakt oder genau. Genliherte Zahlen erkennt man am Dezimalpunkt. In Maple werden diese Zahlen Gleitkommazahlen (floating point numbers, floats) genannt. Die folgende Tabelle stellt einige der in Maple bekannten Typen von Zahlen zusammen. 4 Anm. d. Dbers.: In amerikanischer Schreibweise benutzt man einen Punkt, kein Komma, zur Darstellung von Gleitkommazahlen.

11

A Einfiihrung in Maple Typ integer float fraction complex

Beschreibung Ganze Zahl Gleitkommazahl Bruch ganzer Zahlen Komplexe Zahl

GenaulGenlihert Genau Genlihert Genau Genau oder Genlihert

Beispiele

3,-47 3., .2*10A5 3/4 3 + 4*1,1.7*1

Wenn man einen mathematischen Ausdruck eingibt, der nur aus genauen Werten besteht, so gibt Maple auch einen genauen Wert zuriick. >

4 + 2/4 + 24/144; 14

3 > sqrt (68) ;

> arctan(l);

1

-'/r

4 Maple druckt eine genaue Zahl auch dann aus, wenn sie nicht in eine Zeile paBt. Ein Schragstrich, \' zeigt an, daB die Ausgabe in der nachsten Zeile fortgesetzt wird. > 100!;

93326215443944152681699238856266700490715968264381621468592963895217\ 599993229915608941463976156518286253697920827223758251185210916864\ 000000000000000000000000 Enthiilt ein arithmetischer Ausdruck eine genliherte Zahl, so erhiilt man von Maple auch eine genliherte Zahl zuriick. >

4. + 2/4 + 24/144; 4.666666667

> sqrt(68.);

8.246211251 > arctan (1. );

.7853981634 Urn eine numerische Approximation eines genauen Wertes zu erhalten, benutzt man die Funktion evalf. Der Name evalf ist eine Abkiirzung fiir "evaluate using floating-point arithmetic", was soviel heiSt wie "Werte aus unter Benutzung von Gleitkommaarithmetik" . > evalf(sqrt(68»;

8.246211251

12

A.S Numerische Berechnungen Ein optionaIes zweites Argument fiir eval f gibt die gewiinschte Prazision an. Selbstverstandlich hangt die von Maple beniltigte Rechenzeit direkt von der Hohe der gewiinschten Genauigkeit abo Hier wollen wir nun V68 auf 100 DezimaIstellen genau berechnen. > evalf(sqrt(68) , 100);

8.246211251235321099642819711948154050294398450747240868797267146189\ 908692675243187175727301621368594 Will man wiihrend einer Sitzung mehrere genliherte Werte mit einer gewissen Genauigkeit berechnen, d.h. eine gewisse Anzahl signifikanter Stellen genau berechnen, so empfiehlt es sich, die globaIe Variable Digi ts gleich der Anzahl der signifikanten Stellen zu setzen. Oer voreingestellte Wert ist 10.

Digits := 30;

>

Digits

:=

30

evalf(sqrt(68));

>

8.24621125123532109964281971194 Man sollte daran denken, Dig its wieder auf den alten Wert zuriickzusetzen, wenn man Ergebnisse nieht mehr langer mit 30 Stellen Genauigkeit berechnen will. > Digits

:=

10:

Urn eine genliherte reelle Zahl in einen exakten Bruch umzuwandeln, verwendet man die Funktion

convert. Oiese vielseitig verwendbare Funktion wandelt Zahlen oder Ausdriicke von einem Format in ein anderes urn. > convert(3.1415926,

fraction); 86598 27565

Symholiscbe Konstanten Maple vergibt Namen fiir einige gangige mathematische Konstanten. Konstante

Name in Maple

7r

pi

e I

セ[o]@

i oder j 00

セ@ HRセKQI@

Wert セ@ 3.141592654

E oder exp ( 1) gamma

Beschreibung Verhiiltnis von Umfang zu Ourchmesser eines Kreises Eulersche Zahl Eulersche Konstante

Catalan

Catalansche Konstante セ@

I

Imaginlire Einheitszahl Reell oder komplex Unendlich

infinity

2.718281828 .5772156649

セ@

セ@

.9159655942

A

Zudem gibt es drei logische Konstanten: true, false und FAIL, welche imAbschnitt ,,Boolsche Werte" auf Seite 39 behandelt werden. Maple betrachtet die Symbole fiir reelle Konstanten wie pi und E aIs genaue Werte. Man kann beliebig genaue Approximationen an diese Werte durch Aufrufen von evalf berechnen.

13

A Einfiihrung in Maple > evalf (E, 40);

2.718281828459045235360287471352662497757

Genaue numerische Funktionen In Maple gibt es eine Menge Routinen, die auf genauen Zablen operieren. Unten testen wir, ob eine ganze Zabl eine Primzabl ist, zerlegen eine ganze Zabl in Primfaktoren und finden den ganzabligen Teil der Quadratwurzel einer ganzen Zabl. > isprime(27! + 1);

true

(67280421310721) (274177) > isqrt(binomial(100,

50));

317633978890112

Approximation numerischer Funktionen Zu Maple gehoren auch eine ganze Reihe von Routinen, die geniiherte Ergebisse berechnen, darunter Funktionen zur Berechnung von Nullstellen von Funktionen, Funktionen zur niiherungsweisen Berechnung von Gleichungssystemen, zur Approximation von Integralen und zur numerischen Behandlung von Differentialgleichungen. In diesem Abschnitt geben wir einige Beispiele solcher Funktionen an. Die Funktion fsolve findet die Wurzeln von Funktionen und lOst Gleichungssysteme unter Benutzung von Niiherungsmethoden. Sei eine Polynomialgleichung gegeben, dann findet f solve aile reellen Nullstellen dieses Polynoms. (Man kann die Option complex als drittes Argument angeben, urn so auch die komplexen Nullstellen zu finden.)

-.6180339887,1.,1.618033989 Wenn die Gleichung nicht polynomial ist, sucht f sol ve nach einer einzigen reellen Nullstelle. Gibt man als drittes Argument ein Intervall an, dann wird nur nach einer Nullstelle in diesem (offenen) Intervall gesucht. Kiinnen keine Nullstellen gefunden werden, so gibt Maple den fsolve-Befehl unausgewertet zurUck. > fsolve(BesselJ(O, x), x,

7 .. 8);

fsolve(BesseIJ(O, x), x, 7 .. 8) > fsolve(BesselJ(O,

x), x, 5 .. 9);

8.653727913

14

A.S Numerische Berechnungen Maple versucht immer, bestimmte Integrale mittels symbolischer Manipulationen auszuwerten. Wenn eine Funktion in einem gegebenen Intervall frei von Singularitliten ist, so versucht in t, eine inverse Ableitung auszurechnen und diese dann an den Integrationsendpunkten auszuwerten. Es kann nattlrlich vorkommen, daB eine Funktion gar keine inverse Ableitung in einfacher, geschlossener Form besitzt. In diesem Fall wird int die Antwort als spezielle Funktion, wie zum Beispiel die Fehlerfunktion ,,ed' liefem, oder das Integral wird einfach unausgewertet zuriickgegeben. > int(exp(-x 2), x=0 .. 1); A

1 2

-y'7r erf(l) > int(1/(x + In(x», x=1 .. exp(1»;

I

1

e

1 --=--dx x+ln(x)

Diese Funktionen haben in der Tat keine inversen Ableitungen, die mit Hilfe elementarer Funktionen geschlossen dargestellt werden kllnnen. Maple V Version 2 benutzt einen anspruchsvollen Integrationsalgorithmus (den Risch-Algorithmus), der nachweisen kann, ob ein Integral, welches Exponential-, logarithmische, trigonometrische und algebraische Funktionen enthlllt, eine LIIsung in geschlossener Form besitzt oder nicht. Man kann immer einen angenliherten Wert fiir das Integral linden, indem man mittels der Funktion evalf numerische Techniken anwendet. > evalf ( ", 15);

.796960924149206 Will man eine Funktion numerisch integrieren ohne es erst mit symbolischer Integration zu versuchen, so sollte man evalf zusammen mit der starren Integrationsfunktion Int benutzen. > evalf(Int(ln(ln(x», x=E .. 100»;

124.4869388 Man kann Differentialgleichungen numerisch lllsen, indem man bei dem dso1ve-Befehl die Option numeric angibt. Man erhlllt eine Prozedur zurUck, die zorn Finden angenliherter Werte auf der LIIsungskurve dienen kann, oder eine Graphik dieser Kurve erstellt. > de := (D@@2) (y) (x) + D(y) (x) - x*y(x) = 0;

de := D(2)(y)(x)

+ D(y)(x) -

xy(x) = 0

> f

.- dsolve({de, D(y) (0)=1, y(O)=O}, y(x), numeric); f := proc(rkf45_x) ... end

> f(O);

[x

= O,y(x) = 0, :xy(x) = 1.]

15

A Einfiihrung in Maple > f(3);

[x = 3, y(x) = 4.351539384924291, :x y(x) = 5.289102578946162] Diese Berechnungen wurden unter Maple V Version 3 durchgefiihrt. Unter Version 2 ist das Format der zuriickgegebenen Ausdriicke ein wenig anders. > plots[odeplot](f,

[x, y(x)L -3 .. 3); 4

3

-1

1

2

3

-2 -3

Bild A.2 Numerische LOsung einer Differentialgleichung Die odeplot-Funktion aus demplots-Paket zeichnet einen Graphen der LOsungskurve (Bild A.2). Ausfiihrlichere Informationen zum plots-Paket findet man in Abschnitt A.7, Grapbik, auf Seite 20. Maple kann wesentlich mehr numerische Berechnungen ausfiihren als bier aufgefiihrt sind. Die Genauigkeit von Maple ist nicht durch die Arcbitektur eines Computers begrenzt, ebenso ist die GroBe der Ausgabe nicht durch die MaBe des Bildschirms eingeschrllnkt. Maple gibt genaue

Ergebnisse zuriick, wenn genaue Ergebnisse eingegeben wurden und berechnet angenliherte Werte mit sehr hoher Genauigkeit, falls erwiinscht.

A.6

Symboliscbe Manipulation

In Maple findet man eine gro8e Anzahl Routinen zur symbolischen Manipulation von Ausdriicken. Wir werden in diesem Abschnitt einige dieser Funktionen untersuchen, nlimlich solche, die auf Polynomen und rationalen Funktionen operieren, die ein Gleichungssystem exakt lasen und die oft vorkommende Operationen aus der Analysis ausfiihren.

Polynome und rationale Funktionen Maple besitzt eine ganze Reihe von Funktionen zum Manipulieren von Polynomen und rationalen Funktionen. Hier entwickeln und faktorieren wir ein univariates Polynom.

> factor(");

2(x2 + 1) (x8 + 44x 6 + 166x4 + 44x 2 + 1) 16

A.6 Symbolische Manipulation Nun zerlegen wir ein bivariates Polynom in Faktoren und berechnen anschlieBend die Partialbruchzerlegung einer rationalen Funktion. > factor(x'2 + 2*x'2*y - 2*x*y'2 - y'2);

(x+2xy+y)(-y+x) > convert(l/(x'3 + 5*x'2 + x - 3), parfrac, x);

3+x - -1 -1- + -1 --::---6 x + 1 6 x 2 + 4x - 3

Das Losen von Gleichungen Maple kann die exakten Losungen von Polynomgleichungen linden, deren Grad kleiner oder gleich vier ist (und auch die einiger spezieller Polynomgleichungen von hoherem Grad). > solve(x'3 -

3*x'2 - 17*x + 51 = 0, x);

3,V17,-V17 Maple lost Simultangleichungen: > solve({5*x + 6*y = 7,

5*x + 7*y = 8}. {x, y});

Wenn das Ergebnis einer so1chen symbolischen Operation sehr lang ist, kann Maple das Ergebnis abkiirzen, indem es Spezialsymbole wie %1, %2, etc. fUr mehrmals vorkommende Ausdriicke verwendet. > solve(x'3 - x'2 - x - 1 = 0, x);

%1

1/3

4 1 1 +---+9 %1 1 / 3 3'

1 1/3 2 -1 --%1 - 2 9 %1 1 / 3

1 ;;;- ( %1 1/3 + -1 + -/v3

1 1/3 2 -1 --%1 - 2 9 %1 1 / 3

+ -1 -

19 %1:= 27

3

2

3

4 -1 - ) 9 %1 1 / 3

1 ;;;- ( %1 1/3 - 4 -1 - ) -/v3 2

9 %1 1 / 3

'

'

1 +-V33 9

Analysis Maple berechnet viele bestimrnte Integrale genau. Eine Losung kann mit Hilfe einer in Maple bekannten Konstanten wie z. B. 71', der Eulerschen Za1Il e oder der Catalanschen Konstanten ausgedriickt werden. > int(sin(x)'4, x=o .. pi);

3

-71'

8

17

A Einfiihrung in Maple >

x=O .. 1); ゥョエHクセTJ・ーIL@

ge - 24 > int(x/sin(x) , x=O .. Pi/2);

2 Catalan Maple differenziert dariiberhinaus Funktionen und berechnet auch unhestimmte Integrale. Es gibt zwei Funktionen zum Berechnen von Ableitungen. Die heiden ersten Beispiele unten verwenden di f f; bei dieser Funktion werden Ausdriicke nach einer henannten Variable oder nach mehreren benannten Variablen differenziert. 1m ersten Fall wird eine gewohnliche erste Ableitung berechnet, im zweiten Fall erhhlt man eine gemischte partielle Ableitung einer Funktion in zwei Variablen. Das letzte Beispiel benutzt den Differentialoperator D, der auf Funktionen operiert. > diff(x*ln(x) - x, x);

In(x) > diff(sin(x*y), x, y);

- sin(xy)xy + cos(xy) >D(sin); cos Die int-Funktion berechnet dann ein unbestimmtes Integral, wenn man kein Integrationsintervall angibt. 1m folgenden Beispiel berechnen wir das unbestimmte Integral einer rationalen Funktion, dann iiberpriifen wir das Resultat durch Differenzieren. Die normal-Funktion zusammen mit der expanded-Option vereinfacht den Ausdruck so, daB wir leicht iiherpriifen k6nnen, ob die Ableitung des Integrals wirklich die urspriingliche Funktion is!. >

+ ゥョエHQOクセS@

-!.Inex + 1) + セ@ 6

> diff (",

+ x - 3), x); UJクセR@

12

In (x 2

+ 4 x - 3) - セP。イ」エョィ@42

Hセ・R@

x

+ 4)0)

x);

1 1 1 2x + 4 -"6 (x + 1) + 12 x 2 + 4x -

1 1 3 - 42 ( 1 1 - 28 (2x

> normal ( ", expanded); 1

x3

+ 5x 2 + X -

1m Integranden kann durchaus ein Symbol vorkommen.

18

14

3

+ 4)2

)

A.6 Symholische Manipulation > int(exp(alpha*x)*sin(beta*x), x);

-

/3e a", cos(/3x) a2

+

/3 2

+ MZBセ@

aea", sin(/3x) a 2 + /3 2

Manchmal hlingt der Wert eines bestimmten Integrals von den Eigensehaften eines unbestimmten Symbols abo Der Wert des folgenden Integrals hlingt beispielsweise vom Vorzeiehen von r abo > int(exp(-r*x), x=O .. infinity);

lim

:c--+oo-

e(-r",)

1

r

r

---+-

In Maple V Version 2 und Version 3 erlaubt es der assume-Befehl, einer Variablen ein Attribut zu geben ohne ihr einen Wert zuzuweisen. Nehmen wir an, daB r positiv ist, so kBnnen wir das Integral bereehnen. > assume(r > 0); > ri

T'"

Die Tilde ("') soli uns daran erinnem, daB wir r mit Hilfe von as sume ein Attribut zugewiesen haben. > int{exp{-r*x), x=O .. infinity);

1 T'"

Neben Integration und Differentiation kann Maple auch Grenzwerte linden. > limit{sin{x)/x, x=O);

1 Mit Maple kennen auch Taylorreihen berechnet werden. Hier linden wir eine Taylorreihenentwicklung von 7. Ordnung des natiirlichen Logarithmus urn den Punkt x = 1. > taylor (In{x), x=l,

7);

1 - 1) 2 x-I - -(x

1 - 1) 4 1)3 - -(x 4

2

1 + -(x 3

1 + -(x 5

1 - 1)6 1) 5 - -(x 6

+0

(

(x - 1) 7)

Maple ist zudem in der Lage, viele gewehnliche Differentialgleichungen exakt zu ltisen. Die USsungen von Differentialgleichungen ohne Randbedingungen werden unter Verwendung beliebiger Konstanten dargestellt, die mit _Cl, _C2, usw. bezeichnet werden. Diese Namen beginnen mit einem Unterstrich, urn die Wahrscheinliehkeit zu verrnindem, daB der Name mit irgendwelchen vom Benutzer delinierten Namen iibereinstimmt. Wir IBsen bier die Differentialgleiehung y' (x) + y( x) tan x = sec X. > dso!ve{D{y) (x) + y{x)*tan{x) = sec{x), y{x»;

y(x) = sin(x) + cos(x) _C1 Sollte Maple eine Differentialgleiehung mit Randbedingungen nieht exakt Lesen kennen, so werden numerische Methoden verwendet, wie auf Seite 15 angegeben.

19

A Einfiihrung in Maple A.7 Graphik Maple ist sehr miichtig, was Graphik betriffi; man kann Kurven und Alichen zeichnen und Datendiagrarnrne (plots) erstellen. In diesem Abschnitt stellen wir einige der oft verwendeten Befehle zum Darstellen von Graphen und zur graphischen Wiedergabe zwei- und dreidimensionaler Daten vor. Wir diskutieren auch die Moglichkeiten zum Abspeichem von Plots zur spliteren Wiedergabe. Bei den meisten Maple-Plattformen kann man das Aussehen einer Graphik interaktiv verandem. Man kann die Achsen, die Zeichenoptionen und auch die Skalierungspararneter eines jeden Graphen verandem. Bei dreidimensionalen Graphiken kann man auch das Schattierungs- und Beleuchtungsmodell verandem, sowie die Projektion und die Orientierung der Aliche. Bei der ArbeitsblattBenutzerschnittstelle kann man einen Plot in die laufende Sitzung hineinkopieren, sobald man mit ibm zufrieden ist. Selbst wenn man nur einen simplen Textbildschirrn oder einen Computer ohne Graphikkarte besitzt, kann man moglicherweise dennoch Kurven und Aiichen zeichnen. Man muS dann iiberpriifen, ob das Terminal ein Graphikterrninal, welches von Maple unterstiitzt wird, z. B. Tektronix oder ReGIS, emulieren kann. Hat man dann einen Graphikdrucker zur Verfligung, wie zum Beispiel einen HP LaserJet odereinen PostScript-Drucker, dann sollte man im letzten Teil dieses Abschnitts nachlesen, wie man die Maple-Graphik in eine Datei mit dem erforderlichen Format umleiten kann.

Zweidimensionale Graphik Der plot-Befehi erzeugt zweidimensionale Graphiken. Dieser Abschnitt listet einige der Arten, plot aufzurufen, auf und illustriert dies durch mehrere Beispiele. Man kann plot auf zwei Arten aufrufen. Urn einen univariaten Ausdruck entlang des Intervalls [a, b] zu zeichnen, benutzt man einen Befehl der Form plot (ausdr, var = a .. b); Urn eine Funktion mit einem Argument iiber einem bestirnrnten Intervall zu zeichen benutzt man einen Befehl der folgenden Form: plot ( f, a .. b) ; Die beiden folgenden Befehle beispielsweise erzeugen denselben Plot, n!irnlich eine einzige Periode der Sinuskurve (Bild A.3). > plot(sin(x), x = O.. 2*Pi); > plot(sin, O.. 2*Pi); 1

-0.5

-1

BUd A.3 Die Sinuskurve

Man kann einen Ausdruck iiber der ganzen oder halben reellen Zahlengerade zeichnen, indem man entweder beide oder einen Endpunkt gleich Unendlich setzt (Bild A.4). > ーャッエHクセS@

- x, x=-infinity .. infinity);

Ein zweites Intervall bestirnrnt den Wertebereich in bezug auf die y-Achse, den man aufzeichnen will (Bild A.S).

20

A.7 Graphik

-infinity

x

infinity

Bild A.4 Ein Plot tiber der unendliehen Zahlengeraden > plot(tan(x), x

0 .. 10, -5 .. 5);

4

2

10 -2 -4

Bild A.S Die Tangensfunktion Mit dem folgenden Befehl erzeugt man einen parametrisehen Plot: plot([ausdrx(t), ausdry(t), t = a .. b]); Zum Beispiel (Bild A.6), > plot([cos(t), 2*sin(t), t=-pi .. pi], scaling=CONSTRAINED);

Bild A.6 Ein parametriseher Plot Indem man die scaling-Option CONSTRAINED verwendet, verhindert man ein Verzerren des Bildes; man stellt damit sieher, daB eine Einheit entlang der x-Aehse mit einer Einheit entlang der

21

A Einftihrung in Maple y-Achse iibereinstimmt. Man kann einen parametrischen Plot auch unter Benutzung von Polarkoordinaten erstellen. plot([ausdrr(t), ausdro(t), t

a .. b), coords=polar);

Zum Beispiel (Bild A.7), > plot([l + sin(5*t)/5, t, t=-pi .. Pi), > scaling=CONSTRAINED);

coords=polar,

1

0.5

-0.5

0.5

-0.5

-1

Bild A.7 Ein parametrischer Plot in Polarkoordinaten Man kann eine ganze Liste von Punkten zeichnen, indem man sie explizit benennt. 1m voreingestellten Modus werden aufeinanderfolgende Punkte durch Geradensegmente verbunden. Wiihlt man die Option style=POINT, so versieht Maple stattdessen jeden Datenpunkt mit einem kleinen Kreuz. In Maple Version 3 kann man mit der Option symbol das an einemjeden Datenpunkt gezeichnete Symbol benennen. plot([Xl, Yl, X2, Y2, X3, Y3,

... ), style=POINT);

Wir zeichnen hier zum Beispiel einige von einer Parabel stanIffiende Punkte auf (Bild A.S). > plot ([0, 0, 1/4, 1/16, 5/4, 25/16, 3/2, >

1/2, 1/4, 3/4, 9/16, 1, 1, 9/4, 7/4, 49/16, 2, 4]' style=POINT) ;

4

3

2

1

0.5

1.5

1

2

Bild A.S Das Zeichen von Punkten SchlieBlich kann man mehrere Funktionen in einen Graphen zeichnen und sogar einen Ausdruck mit einem parametrischen Plot kombinieren. plot ( {ausdrl, ausdr2,

22

... }, var

a .. b);

A.7 Graphik plot({ausdrlCs),

[ausdr.,(t), ausdry(t), t = a .. b)}, s = c .. d);

Hier zeichnen wir zwei trigonornetrische Funktionen in denselben Graphen (Bild A.9) und dann eine Gerade zusammen mit einern Kreisbogen, wobei der Kreisbogen parametrisiert ist (Bild A.t 0). Die beirn ersten Beispiel vorkommende nwnpoints-Option verbessert die Kurvenresolution und damit die Qualitlit, indern sichergestellt wird, daB die Kurve an mindestens 100 Punkten ausgewertet wird anstatt des Ublichen Minirnalwerts von 49. >

-sec(x)}, x=-2*Pi .. 2*Pi, -4 .. 4, ーャッエHサTJ」ウクIゥョセRL@

nwnpoints=100);

>

Bild A.9 Zwei Funktionen werden auf einmal dargestellt

> plot({s,

[l+cos(t), sin(t), t=Pi/2 .. Pi)}, s=O .. l, scaling=CONSTRAINED);

>

1

0.2

0.4 s 0.6

0.8

Bild A.tO Darstellen einer Funktion und einer parametrischen Kurve

Plot-Optionen Optionen bestimmen, wie ein Plot gezeichnet wird; sie bestimmen aber auch, wie gut ein Plot aussieht. Unten sind aile Optionen fUr den plot-Befehl aufgelistet. Einige dieser Optionen, namIich axes, 1inesty1e, scaling, style, symbol und thickness konnen bei den rneisten Maple-Plattformen interaktiv justiert werden.

a .. b Wertebereich der bezUglich der y-Achse dargestellt wird. (Voreingestellt: Zeige den gesamtern Graphen). axes=BOXED SchlieBe den gesamten Graphen in eine MinMax-Schachte1 ein.

23

A Einfiihrung in Maple axes=FRAME

Zeichne Achsen entlang der liuBeren Seiten des Graphen. axes=NONE

Zeichne keine Achsen. axes=NORMAL

Zeichne die Achsen durch den Graphen hindurch, wobei sie nonnalerweise den Ursprung schneiden (voreingestellt). axesfont= [family, style, size]

Zeichensatz fiir die Bezeichnungen der Unterteilungsmarken an den Achsen. Siehe font zur genaueren Beschreibung. Diese Option ist neu in Maple V Version 3. color=c

Farbe des Plots: COLOR(RGB, r, g, b), COLOR (HUE, h), aquamarine, black, blue, brown, coral, cyan, gold, gray, green, grey, khaki, magenta,maroon, navy, orange,pink,plum, red, sienna, tan, turquoise,violet,wheat, whi te oder yellow (voreingestellt: black). colour=c

Synonym fUr color. coords=polar

Zeichne einen parametrisch gegebenen Plot in Polarkoordinaten. discont=true

Zeichnet den Ausdruck Uber solchen Teilintervallen, Uber dem er stetig ist. Diese Option gilt nur fiir Ausdriicke und nicht Funktionen. Sie ist neu in Maple V Version 3 (voreingestellt: false). font= [family, style, size]

Zeichensatz fUr Textobjekte. family kann TIMES, COURIER, HELVETICA oder SYMBOL sein. FUr TIMES kann style den Wert ROMAN, BOLD, ITALIC oder BOLD ITALIC haben. FUr COURIER oder HELVETICA kann style BOLD, OBLIQUE, BOLDOBLIQUE sein oder ganz weggelassen werden. FUr SYMBOL sollte style weggelassen werden. size gibt die benutzte Gr6Be des Zeichensatzes in Punkten an. Diese Option is neu in Maple V Version 3. labelfont= [family, style, size]

Font fUr die Achsenbeschriftungen. Siehe font zur genaueren Beschreibung Diese Option ist neu in Maple V Version 3. labels= [str""

stry]

Beschriftungen an den x- und y-Achsen (Voreingestellt: der Name der freien Variablen an der x-Achse, keine Beschriftung and der y-Achse). linestyle=n

Das gestrichelte Muster, welches zum Darstellen von Geraden innerhalb der Zeichnung benutzt wird. Das voreingestellte Muster (normalerweise eine durchgezogene Gerade) wird dann gezeichnet, wenn n gleich 0 ist; FUr gr6Bere Werte von n werden verschiedene unterbrochene Muster benutzt. Diese Option ist neu in Maple V Version 3. numpoints=n

Minimale Anzahl von Punkten, an denen die Funktion ausgewertet wird (voreingestellt: 49). resolution=n

Anzahl der Pixel des graphischen Ausgabegerlits (voreingestellt: 200). Bestimmt, wie oft ein Intervall maximal unterteilt wird, urn eine Kurve zu zeichnen. scaling=CONSTRAINED

Die Skalierung ist so eingeschrankt, daB das Perspektivverhllltnis 1: 1 bleibt. scaling=UNCONSTRAINED

Die Qualitlit des gezeichneten Graphen wird maximiert, wobei die Skalierung frei verlindert werden kann; man nimmt Verzerrungen in Kauf (Voreinstellung).

24

A.7 Graphik style=LINE Die gelisteten oder durch Auswertung erhaltenen Punkte werden durch Geraden verbunden (Voreinstellung). style=PATCH Beim Zeichnen von Polygonen werden die Punkte betont. style=POINT Nur die aufgelisteteten oder ausgewerteten Punkte werden gezeichnet. symbol=BOX Zeichne einen Wiirfel umjeden Punkt, wenn style=POINT verlangt is!. Diese Option is neu in Maple V Version 3. symbol=CIRCLE Zeichne einen Kreis urn jeden Punkt, wenn sty 1 e =PO INT eingestellt is!. Diese Option ist neu in Maple V Version 3. symbol=CROSS Zeichne ein Kreuz an jedem Punkt, wenn style=POINT eingestellt is!. Diese Option ist neu in Maple V Version 3. symbol=DIAMOND Versehe jeden Punkt mit einem Diamanten, wenn style=POINT eingestellt is!. Diese Option ist neu in Maple V Version 3. symbol=POINT Versehe einen jeden Punkt mit einem kleinen Punkt, wenn style=POINT eingestellt is!. Diese Option ist neu in Maple V Version 3. thickness=n Dicke der Geraden in einer Zeichnung. n kann 0 (voreingestellt), I, 2 oder 3 sein. Diese Option ist neu in Maple V Version 3. tickrnarks= [n x , ny I Minimale Anzahl von aufgetragenen Einheiten entlang der horizontalen und der vertikalen Achsen (Voreinstellung: Systemabhangig). tit le=string Uberschrift des Graphen (voreingestellt: keine Uberschrift). titlefont= [family, style, size] Zeichensatz fiir die Uberschrift der Zeichnung. Siehe f on t zur genaueren Beschreibung. Diese Option ist neu in Maple V Version 3. vieW=[Xl . . X2, Yl· ·Y2] Begrenze den Bereich der Kurve, der dargestellt wird (voreingestellt: ganze Kurve). Diese Option ist neu in Maple V Version 3. xtickrnarks=n Minimale Anzahl der aufgetragenen Einheiten entlang der horizontalen Achse (Voreinstellung: Systemabhangig). ytickrnarks=n Minimale Anzahl der aufgetragenen Einheiten entlang der vertikalen Achse (Voreinstellung: Systemabhangig). 1m plots-Paket der Maple-Progranlffibibliotl1ek sind eine Reihe von Routinen zum Zeichnen von Kurven und Flachen enthalten. Man kann dieses Paket mit dem Befehl with (plots) einladen. Die Routinen aus dem Paket, die sich mit dem Erstellen zweidimensionaler Graphiken befassen, sind in der folgenden Tabelle aufgefiihrt. Die Bemerkung (R2) weist darauf hin, daB die entsprechende Routine neu in Maple V Version 2 is!.

25

A Einfiihrung in Maple Funktion animate

Beschreibung (R2)

conformal display fieldplot gradplot implicitplot

(R2) (R2) (R2)

loglogplot logplot odeplot

(R2) (R2) (R2)

polarplot polygonplot sparsematrixplot

(R2)

textplot

(R2)

Erzeuge eine Animation eines zweidimensionalen Funktionsplots Konfonner Plot einer komplexen Funktion (Bild A.1l) Zeige einen Plot nochmal oder spiele mehrere Plots in einen Graphen vor Zeichne ein zweidimensionales Vektorfeld Zeichne ein zweidimensionales Gradientenfeld (Bild A.12) Zeichne eine Kurve, die implizit durch eine Gleichung in zwei Variablen gegeben ist Zeichne beide Achsen mit logarithmischer Skalierung Zeichne die vertikale Achse mit logarithmischer Skalierung Zeichne die von dsol ve mit der numeric-Option (siehe Seite IS) erzeugte Ausgabe Zeichne eine in Polarkoordinaten gegebene Kurve (Bild A.13) Zeichne ein oder mehrere Polygone Plotte die von Null verschiedenen Werte einer Matrix in einem zweidimensionalen Gitter, so daB man sieht, wie diinn die Matrix ist Plaziere Text im zweidimensionalen Raum

Hier geben wir mehrere Beispiele zu einigen dieser Funktionen an. Abschnitt A.7, Wie man Graphiken abspeichert und ausdruckt, (Seite 35), beinhaltet ein Beispiel zur Funktion display. Der polarplot-Befehl unten zeichnet einen Graphen des ,,Freethschen Nephroiden" (figure A.13). > with(plots) : > animate (xAn, x=O .. l, n=1 .. 6, frames=30); > conformal (z A4, z=O .. l+I);

Bi1d A.ll Eine konfonne Abbildung (conformal)

> gradplot(sin(x)*sin(y), x=-pi .. Pi, y=-Pi .. Pi, arrows=SLIM, > axes=BOXED);

> polarplot(l + 2*sin(t/2), t=O .. 4*Pi, scaling=CONSTRAINED, > axes=FRAME);

In Maple V Version 2 und Version 3 findet man auch ein Paket DEtools, zur graphischen Darstellung von u>sungen zwei- oder dreidimensionaler gewllhnlicher oder partieller Differentialg1eichungen.

26

A,7 Graphik

2 ____

1

yO

1

//--

\

1.1'.-'_

,

"

,

'\

...... _ _ _ _ _ , - tI'

- ; / / I 1ii""" \ \ , セ@ - / " ,\" I"" - " " / / 1 \ ............ - - .... " , ,

"1 11 1 "

- , ,

// " I I / -

\

セ@

\

---."

,

\

1;1' ...... _ _ _ _ ' "

...... - -

tl' ·

'\1 , , \

\ ' / J " ...... _ _ ......

-1

-2

セ@

, / ;

-

!//_ iセ@

___

;

,/

-

-// I

-3

,

-3

,

1 ,

-2

Bild A,12 Ein Gradientenfeld (gradplot)

1

Bild A.13 Der Freethsche Nephroid (polarplot) Analog zu plot kann man auch plot3d auf zweierlei Weise aufrufen. Urn einen bivariaten Ausdruck tiber einem rechteckigen, ebenen Gebiet zu zeichnen, benutzt man einen Befehl der folgenden Form: plot3d(ausdr, varl

a .. b , var2

c .. d);

Zum Beispiel (Bild A. 14), > plot3d(sin(x*y)/(x*y), x=-pi .. pi, y=-pi .. Pi);

Bild A.14 sin(xy)jxy tiber [-7r, 7r] x [-7r,7r] Urn eine Funktion zu zeichnen, die nach zwei Argumenten verlangt, wird der Befehl in folgender Form benutzt:

27

A Einfiihrung in MapJe plot3d( f, a .. b, e .. d); Wir ktinnen zum Beispiel Maple's Beta-Funktion, die als Beta(x, y) = f(x)f(y)jf(x (Bild A.l5) definiert ist, zeichnen. > plot3d(Beta, 1 .. 2,

+ y)

1 . . 2, axes=BOXED);

0.8 0.6 0.4

2 2

Bild A.IS Die Beta-Funktion

Das Zeichnen einer parametrischen Hache wird durch einen Befehl wie der folgende ermtiglicht: plot3d([ausdr x (s, t) ,ausdry(s, t) ,ausdrz(s, t)], s=a .. b,t=e .. d); Die Schreibweise ftir einen zweidimensionalen parametrischen Plot ist nicht mit der Schreibweise ftir einen dreidimensionalen parametrischen Plot konsistent. 1m ersten Fall muG der Bereich in eckige Klammem eingeschlossen sein, im zweiten Fall mtissen die Bereiche auBerhaib der Klammem stehen. Wir ktinnen zum Beispiel eine schraubenlinienftirmige Hache folgendermaBen zeichnen (Bild A.l6): >

p1ot3d([s*cos(t), s*sin(t), t], s=l .. 3, t=o .. 4*Pi, axes=FRAME);

Bild A.I6 Eine parametrische Hache

Man kann die Htihenlinien oder Konturen einer Hache mit def Option s tyle=CONTOUR (Bild A.I?) zeichnen. > plot3d(2*x 2 + 3*y 2, x=-4 .. 4, y=-4 .. 4,

style=CONTOUR, scaling=CONSTRAINED, orientation=[O,O], axes=NORMAL); A

>

A

Hierbei verhindert die seal ing-Option eine Verzerrung der Hohenlinien und die or ien ta t ionOption wlihlt den normalen Blickwinkel ftir einen Graphen von Htihenlinien aus, nlimlich den Blick von oben direkt auf die Hache.

28

A.7 Graphik

Bild A.I7 Ein Hohenlinien- oder Konturenplot

Man kann mehrere Aachen in ein-und denselben Graphen zeichnen. Die letzten drei Optionen im nachsten Beispiel (Bild A.IS), sorgen dafilr, daB die zwei gezeichneten Aachen auch schattiert werden. Das voreingestellte Schattierungsmodell wird mittels shading=NONE auSer Kraft gesetzt, dann werden die aquamarinfarbigen Aachen mit einem schwachen weiSen Umgebungslicht und einem starken gerichteten, weiSen Lichststrahl beleuchtet. Wenn man den ganzen Befehl so nicht eintippen mochte, kann man die ersten filnf Optionen weglassen und sie dann nachher interaktiv selbst einstellen, nachdem der Graph gezeichnet wurde. > plot3d({exp(-y A2)*sin(x)

> > >

- 1, exp(-yA2)*cos(x) + 1}, x=-pi .. Pi, y=-2 .. 2,scaling=CONSTRAINED,axes=FRAME,orientation=[60,75], shading=NONE, style=PATCHNOGRID, co1or=aquamarine, ambientlight=[O . 5,O.5,O.5], light=[45,90,1,1,1]);

2

-2 -2

-1

.; 1

2 3

Bild A.IS Zwei Aachen mit yom Benutzer definierter Beleuchtung

Plot3d-Optionen Samtliche zum Befehl plot3d existierende Optionen sind unten aufgefilhrt. Einige dieser Optionen,niimlichaxes, light, linestyle, orientation, projection, scaling, shading style,symbol und thickness, konnen bei den meisten Maple-Plattformen interaktiv eingestellt werden (siehe Seite 7S). ambientlight=[r, g, b] Benutze eine ungerichtete Lichtquelle mit den angegebenen Intensitaten filr rot, griln und blau, urn die Aache zu beleuchten. Die Parameter r, g und b sind reelle Zahlen zwischen 0 und 1. (Voreinstellung: keine)

29

A Einfiihrung in Maple axes=BOXED

SchlieBe den gesamten Graphen in eine Minmax-Schachtel ein. axes=FRAME

Zeichne Achsen entlang der iiuBeren Kanten des Graphen. axes=NONE

Zeichne keine Achsen (voreingestellt). axes=NORMAL

Zeichne die Achsen durch den Graphen hindurch(nonnalerweise den Ursprung schneidend). axesfont= [family, style, size)

Zeichensatz fiir die Bezeichnungen der Achsenunterteilungen. Siehe font zur genaueren Beschreibung. Diese Option ist neu in Maple V Version 3. color=c

Farbe eines Plots: entweder eine eine Farbe zuriickliefernde Prnzedor oder Ausdruck in den Plotvariablen, oder eine konstante Farbe: COLOR (RGB, r, g, b), COLOR (HUE, h),aquamarine,black,blue,navy,coral,cyan,brown,gold,green,gray, grey, khaki, magenta, maroon, orange, pink, plum, red, sienna, tan, turquoise, violet, wheat, whi te oder yellow (voreingestellt: black). Ein Beispiel zur Option color findet man auf Seite 29. colour=c

Synonym fUr color. contours=c

Spezifiziere Konturen fUr einen Konturenplot. c ist die Anzahl der Hohenlinien (voreingestellt 10) oder eine Liste von von z-Werten, die fdr die Konturen benutzt werden sollen. Diese Option ist neu in Maple V Version 3. coords=cartesian

Benutze ein kartesisches (rechteckiges) Koordinatensystem (Voreinstellung). coords=cylindrical

Benutze ein zylindrisches Koordinatensystem. coords=spherical

Benutze ein Kugelkoordinatensystem. font= [family, style, size)

Zeichensatz fiir Textobjekte. family kann TIMES, COURIER, HELVETICA oder SYMBOL sein. FUr TIMES kann style den Wert ROMAN, BOLD, ITALIC oder BOLD ITALIC haben. FUr COURIER oder HELVETICA kann style BOLD, OBLIQUE, BOLDOBLIQUE sein oder ganz weggelassen werden. Fiir SYMBOL sollte style weggelassen werden. size gibt die benutzte GrOBe des Zeichensatzes in Punkten an. Diese Option ist neu in Maple V Version 3. grid= [n."

ny)

Benutze ein Punktgitter der Dichten., mal 25 mal 25).

ny,

zur Erzeugung der Flache. (Voreinstellung:

labelfont= [family, style, size)

Font fUr die Achsenbeschriftungen. Siehe f on t zor genaueren Beschreibung. Diese Option ist neu in Maple V Version 3. labels= [str."

stry

,

strz )

Beschriftungen an den X-, y- und z-Achsen (Voreinstellung: der Name der unabhiingigen Variablen an den x- und y-Achsen keine Beschriftungen an der z-Achse.) light=[cp, (), r, g,

b)

Benutze eine gerichtete Lichtquelle mit den gegebenen Intensitiiten fiir rot, griin und blau an der vorgeschriebenen Position (in Kugelkoordinaten), urn die Flache zu beleuchten. Die Parameter r, g und b mUssen reelle Zahlen zwischen 0 und 1 sein. (Voreinstellung: Keine)

30

A.7 Graphik linestyle=n Das gestrichelte Muster, welches zum Darstellen von Geraden innerhalb der Zeichnung benutzt wird. Das voreingestellte Muster (normalerweise eine durchgezogene Gerade) wird dann gezeichnet, wenn n gleich 0 ist; Filr grtl8ere Werte von n werden verschiedene unterbrochene Muster benutzt. Diese Option ist neu in Maple V Version 3. numpoints=n Zur Erzeugung der Aiiche soli ein rechteckiges Gitter mit insgesamt mindestens n Punkten benutzt werden (Voreinstellung: 625). orientation=[O, セャ@ Orientierung des Betrachters, genauer Punkt von dem aus der Betrachter auf die Aiiche schaut, wobei 0 und セ@ Winkel sind, angegeben in Grad in bezug auf ein Kugelkoordinatensystem. (Voreinstellung: [45, 45]) projection=p Schreibt die Art der Projektion vor. Der Parameter p stellt eine Zahl zwischen 0 und 1 dar. Der Wert 1 steht filr die orthogonale Projektion (die Voreinstellung) und 0 steht fi1r eine perspektivische Projektion mit Weitwinkel. projection=FISHEYE Benutze eine Weitwinkelperspektive, gleichbedeutend mit proj ection=O. projection=NORMAL Benutze eine normale Perspektive, gleichbedeutend mit proj ection=O . 5. projection=ORTHOGONAL Benutze die orthogonale Projektion, gleichbdeutend mitproj ection=l (Voreinstellung). scaling=CONSTRAINED Die Skalierung ist eingeschrlinkt, so daB ein Perspektivverhliltnis von 1: 1: 1 erhalten bleibt. scaling=UNCONSTRAINED Das Zeichnen des Graphen wird verbessert, wobei man in Kauf nimmt, daB das perspektivische Verhliltnis durch Skalierung verzerrt wird (voreingestellt). shading=XYZ Jede der Achsen hat eine eigene Farbskala in bezug auf die Schattierung. Die Voreinstellung ist systemabhiingig. shading=XY Schattiere die Aliche mit einer Farbskala entlang der x-Achse und mit einer anderen Farbskala entlang der y-Achse. shading=Z Schattiere die Aiiche in Abhiingigkeit von der Htlhe oder dem z-Wert. shading=ZHUE Schattiere die Aliche gemiiB der Htlhe oder dem z-Wert, wobei ein Regenbogenspektrum von Farben entlang der z-Achse benutzt wird. shading=ZGRAYSCALE Schattiere die Aliche in Abhiingigkeit von der Htlhe oder dem z-Wert entlang der z-Achse unter Benutzung einer Grautonskala. shading=NONE Kein Schattierungsmodell. style=CONTOUR Konturenplot, d.h. Plot von Htlhenlinien einer Aiiche. style=HIDDEN Zeichne ein Drahtmodell, wobei alle Geradensegmente, die von Teilen der Aliche verdeckt sind, nicht gezeichnet werden (Voreinstellung). style=LINE Genauso wie WIRE FRAME.

31

A Einfiihrung in Maple style=PATCH Zeichne die Flliche mittels schattierter rechteckiger Pilaster iiber einem Drahtgitter. style=PATCHCONTOUR Kombination der Zeichenoptionen PATCH und CONTOUR. style=PATCHNOGRID Zeichne die Fliiche mittels schattierter rechteckiger Pilaster ohne ein Drahtgitter. style=POINT Zeichne nur die abgetasteten Punkte. style=WIREFRAME Zeichne ein Drahtmodell einer Fliiche, indem benachbarte abgetastete Punkte durch Geradensegmente verbunden werden. symbol=BOX Zeichne einen Wiirfel umjeden Punkt, wenn style=POINT verlangt ist. Diese Option is neu in Maple V Version 3. symbol=CIRCLE Zeichne einen Kreis umjeden Punkt, wenn style=POINTeingestellt ist. Diese Option ist neu in Maple V Version 3. symbol=CROSS Zeichne ein Kreuz an jedem Punkt, wenn style=POINT eingestellt ist. Diese Option ist neu in Maple V Version 3. symbol=DIAMOND Versehe jeden Punkt mit einem Diamanten, wenn style=POINT eingestellt ist. Diese Option ist neu in Maple V Version 3. symbol=POINT Versehe einenjeden Punkt mit einem kleinen Punkt, wenn style=POINTeingestellt ist. Diese Option ist neu in Maple V Version 3. thickness=n Dicke der Geraden in einer Zeichnung. n kann 0 (voreingestellt), 1,2 oder 3 sein. Diese Option ist neu in Maple V Version 3. tickmarks= [n"" ny, n z ] Minimale Anzahl der aufgetragenen Einheiten entlang der X-, y- und z- Achsen. Jede Komponente sollte eine nichtnegative ganze Zahl oder der Name default flir einen voreingestellten Wert sein. ti tle=string Uberschrift eines Graphen (Voreinstellung: keine). ti tlefont= [family, style, size] Zeichensatz fiir die Uberschrift einer Zeichnung. Siehe font zur genaueren Beschreibung. Diese Option ist neu in Maple V Version 3. vieW=Zl . . Z2 Begrenze den sichtbaren Teil der Flliche, auf das Gebiet mit z-Werten innerhalb von Zl .. Z2 (Voreingestellt: gesamte Flliche). vieW=[Xl .. X2, Yl •• Y2, Zl •• Z2] Schriinke das sichtbare Gebiet der Flliche entsprechend ein (voreingestellt: gesamte Flliche). Die folgenden drei Beispiele illustrieren einige weitere dieser Optionen: Eine Kugel, die in Kugelkoordinaten gegeben ist (Bild A.19), eine in kartesischen Koordinaten gegebene Satteilliiche, die mit einer Kombination von patch- und contour-Option gezeichnet wird (Bild A.20), und ein geneigter Doppelkegel, der in zylindrischen Koordinaten gegeben ist (Bild A.21). (Sollte der Leser i1ber einen SchwarzweiBmonitor verftlgen, sollte er versuchen shading=ZGRAYSCALE anstelle von Z oder ZHUE zu benutzen.)

32

A.7 Graphik > plot3d{1, theta=O .. 2*Pi, phi=O .. pi, > scaling=CONSTRAINED);

coords=spherical,

Bild A.19 Kugelkoordinaten

> plot3d{x'2 - y'2, x=-7 . . 7, y=-5 .. 5, style=PATCHCONTOUR, > orientation=[80,45] , shading=ZHUE, axes=BOXED);

Bild A.20 Eine schattierte Sattelflache mit Hohenlinien

> plot3d{z*sin{theta), theta=O . . pi, z=-4 .. 4, style=HIDDEN, > coords=cylindrical, scaling=CONSTRAINED, shading=Z,

>

orientation=[45,75], axes=BOXED);

Das plots-Paket enthaIt zudem auch eine Reihe von Routinen zum Zeichnen dreidimensionaler Graphen. Diese sind in der folgenden Tabelle aufgefiihrt. Der Zusatz (R2) soli darauf hinweisen, daB die entsprechende Routine neu zu Maple V Version 2 hinzugekomrnen ist. Man sollte daran denken, dieses Paket erst mit Hilfe von wi th (plots) einzuladen.

33

A Einfiihrung in Maple

-2 -4

-4

-2 42

1 0 -1- 2

Bild A.21 Zylindrische Koordinaten

Funktion animate3d

Beschreibung Erzeuge eine Animation eines dreidimensionalen Plots von Funktionen Konturenplot einer Flache Zeichne eine in zylindrischen Koordinaten gegebene Flache Zeichne die Dichte einer Flache Spiele einen Plot wiederholt vor oder zeichne mehrere Plots in einen Graphen Zeichne ein dreidimensionales Vektorfeld Zeichne ein dreidimensionales Gradientenfeld Zeichne eine Flache, die durch eine Gleichung in drei Variablen implizit gegeben ist (Bild A.22) Zeichne eine Flache, deren Hohen oder z-Werte in einer Matrix gegeben sind Zeichne die von dso1ve erzeugte Ausgabe mit Hilfe der numer ie-Option Zeichne dreidimensionale Punkte Zeichne ein oder mehrere Polygone im Dreidimensionalen Zeichne einen oder mehrere Polyeder (Bild A.23) Zeichne eine dreidimensionale, parametrisierte Kurve (Bild A.24) Zeichne eine in Kugelkoordinaten gegebene Flache Erzeuge eine Flache aus einer Liste von Daten Positioniere Text im Dreidimensionalen Zeichne Schlauche urn Kurven herum Bild A.25)

(R2)

contourp1ot cy1inderp1ot densityp10t disp1ay3d

(R2)

fie1dp1ot3d gradp1ot3d implicitp1ot3d

(R2) (R2) (R2)

(R2)

matrixp10t odep1ot

(R2)

pointplot po1ygonp1ot3d po1yhedrap1ot space curve

(R2) (R2)

sphereplot surfdata textp1ot3d tubeplot

(R2) (R2)

Wir geben hier einige Beispiele zu diesen Funktionen. > with(p1ots) : > imp1icitp1ot3d(x'2 + y'2 + z'2/2 = 1, > x=-l .. l, y=-l .. l, z=-l.S .. l.S, grid=[B,B,B), axes=FRAME, > sca1ing=CONSTRAINED, sty1e=PATCH, shading=ZHUE);

> po1yhedrap1ot([O,O,O), po1ytype=dodecahedron, sty1e=WIREFRAME, > orientation=[40,BO), sca1ing=CONSTRAINED); > spacecurve ( [ (s in (2 >

>

°

°

* t) + 3 ) *cos ( t) , (s in (2 * t) + 3) * s in ( t) , cos (20 * t) ) , t=O .. 2*Pi, numpoints=300, sca1ing=CONSTRAINED, shading=XY, axes=FRAME);

> tubeplot([cos(t), > axes=FRAME);

sin(t), t], t=O .. 4*Pi, radius=.3, tubepoints=lS,

Betreffend weiterer Beispiele von in Maple erzeugbarer Flachen sei man auf die in Kapite\ H auf Seite 354 beginnenden Literaturhinweise verwiesen.

34

A.7 Graphik

Bild A.22 Ein Plot einer irnplizit gegebenen Flache irn Dreidirnensionalen (impl i c i tp lot 3 d)

Bild A.23 Ein Dodekaeder (polyhedraplot)

Bild A.24 Eine parametrische Kurve irn Dreidirnensionalen (spacecurve)

Wie man Graphiken ahspeichert nnd ansdruckt Bei jedern Plotten einer Kurve oder Flache erzeugt Maple intern eine spezielle Datenstruktur. Maple benutzt diese Struktur zurn schnellen Neuzeichnen einer Graphik, sobald einige der das Erscheinungsbild der Graphik verandernden Attribute rnodifiziert wurden; zurn Beispiel wenn das Farbscherna oder das Aussehen der Achsen verandert wurde. Man kann diese Datenstruktur in einer Variablen speichern und sie spater dazu benutzen, die Graphik seiber neu zu zeichnen. Wir erzeugen nun drei Plots und speichern ihre entsprechende Datenstruktur in drei Variablen. Der plot-Befehl wird mit dern Sernikolon beendet, urn das sofortige Zeichnen der Plots zu verhindern. > midcurve .- plot(exp(-xA2)*cos(12*x), x=-2 . . 2): > topcurve .- plot(exp(-x A2), x=-2 .. 2):

35

A Einfiihrung in Maple

12 10 8 6 4 2 -1

-0.5

Bild A.2S Ein Schlauchplot

>

botcurve : = plot(-exp(-x'2), x=-2 .. 2):

Das Auswerten einer dieser Variablen hat zur Folge, daB der Plot gezeichnet wird (Bild A.26): > midcurve;

o. o.

o. O. -2

2

O.

-

.4

Bild A.26 midcurve

Die display-Funktion des pI 0 ts-Pakets zeichnet mehrere Kurven im selben Graphen (Bild A.27). Das Setzen kosmetischer Optionen (solche Optionen, die das Bild des Graphen verlindem) wie zum Beispiel axes oder scaling zur Funktion display setzt die in den einzelnen Plots voreingestellten Optionen auBer Kraft. > wi th (plots) : > >

display([topcurve, botcurve, midcurve], axes=NONE, scaling=CONSTRAINED);

Mtichte man diese Kurven in einer anderen Maple-Sitzung nochmal zeichnen, so speichert man die Variablen in einer Datei. >

save topcurve, midcurve, botcurve,

'myfile . m';

Der read-Befehl Iiest diese Datei in eine andere Maple-Sitzung ein. Dieselben Variablen sind dann wieder verfiigbar, urn die Kurven zu zeichnen. > read 'myfile.m'; > wi th (plots) : > display([topcurve, botcurve, midcurve], axes=NONE, >

scaling=CONSTRAINED);

Man beachte, daB die Argumente von save und read nicht in Klammem stehen miissen. In Abschnitt A.l3, Eingabe und Ausgabe auf Seite 62 findet man genauere Informationen zum Abspeichem von Resultaten in Dateien und zu deren Rekonstruktion wiihrend anderer Sitzungen.

36

A.8 Datentypen

Bild A.27 Das Zeichnen mehrerer Plots Die Plot-Datenstruktur ist nur Maples inteme Darstellung eines Plot. Man kann sie nieht an einen Drucker senden, um ein Bild zu erzeugen. Um einen Plot zu drucken, muB man Maple erst den Typ des vorhandenen Druckers mitteilen. Bei vielen Systemen kann dies interaktiv gemacht werden, nachdem der Graph auf den Bildschirm gezeichnet wurde. Arbeitet man mit der ArbeitsblattSchnittstelle, sollte man ins Dateimenu im Graphikfenster schauen. Der in diesem Menu vorhandene Print- oder Printer-Setup-Befehl erlaubt als Eingabe ein Graphikformat, einen Dateinamen um den Plot abzuspeiehern und manchmal auch einen Druckernamen zum unmittelbaren Ausdrucken des Plots. Bei anderen Systemen, zum Beispiel der Schnittstelle mit Befehlszeilen wie UNIX-Systemen, muB man den plotsetup- oder den interface-Befehl benutzen, um Graphiken in eine speziell formatierte Datei umzuleiten, aus der heraus dann gedruckt wird. Die interface-Option plotdevice erlaubt es, das Graphikformat oder den Druckertyp zu benennen; mit der Option plotoutput gibt man den Dateinamen vor. Mit dem Hilfsbefehl ?plot [device] kann man die Namen aller von Maple untersttitzten Druckformate auflisten lassen. Die folgenden Befehle veranlassen Maple, Graphik in der Datei myp lot. ps im PostScript-Format abzuspeichern. > interface{plotdevice=postscript); > interface{plotoutput='myplot.ps');

Der nlichste Plot wird in der Datei myplot . ps abgespeichert und erscheint nieht auf dem Bildschirm. > plot{sin{x)*cos{2*x), x=-2*Pi .. 2*Pi);

Die nachfolgenden Plots werden ebenso in dieser Datei abgespeichert, allerdings wird vor jedem erneuten Abspeiehern der bisherige Inhalt der Datei geloscht, so daB nur der letzte aktuelle Graph dort gespeiehert ist. Man soUte deswegen plotoutput nach jedem Bild, das man behalten mochte, umsetzen. Nachdem man Maple verlassen hat, kann man die Datei myplot . ps auf dem PostScript-Drucker ausdrucken.

A.S

Datentypen

1m Gegensatz zu den meisten Programmiersprachen, braucht man nicht den Typ einer jeden in Maple benutzten Variablen oder Funktion zu definieren. Dennoch bestimmt Maple den Typ eines jeden eingegebenen Ausdrucks. Man kann auf diesen Typ testen und auch zwischen verschiedenen Typen konvertieren. Die folgende TabeUe gibt eine Ubersicht tiber einige der in Maple vorhandenen grundlegenden Datentypen.

37

A Einfiihrung in Maple Beschreibung Ein beliebiger numerischer Typ Ganze Zahl Positive ganze Zahl Negative ganze Zahl Bruch zweier ganzer Zahlen Ganze Zahl oder Bruch Gleitkommazahl Beliebige komplexe Zahl Ganze GauBsche Zahl Logischer Wert Zeichenfolge Polynom Potenzreihe Rationaler Ausdruck

Typ numeric integer posint negint fraction rational float complex complex (integer) boolean string polynom series ratpoly

Beispiele 3.7,4,8*1 0,14 14 -4 -417,1/3 -15,3/11 31.7,-0.05 4.1 + I 5 - 3*1 true,false,FA1L 'This is a string.' x'8 + 3.9*x - 17 1 + x + x'2/2 + O(x'3) (1 + x'2)/(x - 4)

Man kann den Typ eines jeden Ausdrucks mit Hilfe des Befehls type erfragen. > type(3.,

integer);

false > type(3.,

float);

true > type(3,

posint);

true > type (x+5, polynom};

true Oer convert-Befehl erIaubt es, Ausdriicke von einem Typ in einen anderen umzuwandeln. > convert(355/113,

float); 3.141592920

> series (exp(x) , x,

5);

1+x

1 1 1 2 + _x 3 + _x4 +0 + _x 2

6

24

(x 5 )

> convert ( ", polynom);

1+ x

1 1 1 2 + _x 3 + _x 4 + _x 2

6

24

Einige der numerischen Typen sind bereits in Abschnitt A.S, Numerische Berechnungen, auf Seite 9 behandelt worden. In den folgenden Abschnitten werden wir zwei weitere sehr wichtige Typen kennenlernen, nlimlich boolean und string.

38

A.8 Datentypen

Boolsche Konstanten Eine Boolsche Konstante stellt einen logischen Wert dar. In Maple gibt es drei Boolsche Konstanten: true, false und FAIL. Wohldefinierte Abfragen geben entweder true (wahr) oder false (falsch) zurilck; inkorrekt formulierte Abfragen oder unbestimmte Ergebnisse geben FAIL zurilck. Bei den Tests kann es sich urn einfache oder zusarnmengesetzte Tests hande1n. Bei einem einfachen Test benutzt man einen Vergleiehsoperator wie (=,, , =), urn auf Gleichheit bzw. Ungleichheit zu testen, oder man ruft eine Funktion auf, die einen Boolschen Wert zurilckIiefert. Beispiele solcher in Maple vorhandenen Funktionen sind type zum Testen des Typs einer Funktion und isprime, urn zu prilfen, ob eine ganze Zahl eine Primzahl ist. Ein zusammengesetzter Test besteht aus einem oder mehreren einfachen Tests, die durch die logischen Operatoren and, or und not verkntipft sind. Der not-Operator hat die hOchste Prioritat, gefolgt von and und schlieBlich or. Der folgende zusammengesetzte Test zum Beispiel gibt als Resultat true zurilck: > not (1=2 or isprime(6)) and 34; true

Maple benutzt das short-circuit-Prinzip zur Auswertung Boolscher Ausdrilcke: Das bedeutet, daB die Auswertung eines Boolschen Ausdruckes dann abgebrochen wird, sobald sein Wert mit Sieherheit bekannt ist. Man betrachte zum Beispiel einen Ausdruck der Form Bedingung-1 or Bedingung-2 or Bedingung-3 Falls Bedingung-l schon true ergibt, so ist der gesamte Ausdruck true und die anderen Bedingungen brauchen gar nicht erst ausgewertet zu werden. Gibt man eine einfache Relation nach der Eingabeauforderung ein, so passiert nichts, der Ausdruck wird nicht ausgewertet. Man muB evalb, "Werte Boolschen Ausdruck aus", aufrufen, urn zu entscheiden, ob der Ausdruck wahr oder falsch ist. > 1 < 2;

1

evalb("); true

Maple wertet einen solchen Ausdruck nieht aus, da viele Befehle, wie zum Beispiel die Funktion solve, eine symbolische Relation als Argument erwarten.

Zeichenketten Es gibt zwei Arten von Strings 5 in Maple. Ein simple string, eine einfache Zeichenkette also, besteht aus einer Kombination von Buchstaben, Ziffem und unterstrichenenen Zeiehen (_), solchen die mit einem Buchstaben oder einem Unterstrich beginnen. Ein quoted string, eine in Anftihrungszeichen gesetzte Zeiehenkette, ist eine be1iebige Kombination von Zeichen, die in einfache, schrage Hochkommata ( , ,) eingeschlossen ist. Eine Zeichenkette vom Typ quoted string kann Leerzeichen, Sonderzeichen wie + und [ und sogar Steuerzeiehen, wie Zeilenumbruch enthalten. In Maple V Version 2 ist die maximale Lange einer jeden Zeichenkette auf 499 Zeiehen beschrankt, in Version 3 gibt es diese Einschrankung nicht mehr. Die leere Zeiehenkette wird durch zwei aufeinanderfolgende, schraggestellte Hochkommata ' , gekennzeichnet. Jeder String oder Zeichenkette ist ein gtiltiger Name ftir eine Funktion oder eine Variable. Einfache Zeichenketten werden gewohnlich fUr Namen verwendet, aber man konnnte genausogut in Hochkommata gesetzte Zeichenketten benutzen. Man sollte allerdings solche einfachen Zeiehenketten vermeiden, die mit einem Unterstrich beginnen, da diese von Maple selbst zur Bezeichnung globaler Variablen benutzt werden. 1m folgenden Beispiel weisen wir einer einfachen und einer in Hochkommata stehenden Zeichenkette Werte zu. Man beachte, daB man ein schraggestelltes Hochkomma dadurch in eine in 5 Anm.

d. Obers.: Ein "String" ist eine ,,Zeiehenkette" .

39

A Einfiihrung in Maple Hochkornrnata gesetzte Zeichenkette einfiigt, indem man zwei aufeinanderfolgende Hochkommata innerhalb der Zeichenkette eingibt. > simple := 10;

simple:= 10

'strange +/"

>

quoted-string.' := 20; strange +/' quoted-string. := 20

> simple + 'strange +/"

quoted-string.';

30 Urn zwei Zeichenketten aneinanderzufiigen, benutzt man den Verkettungsoperator ( .). Der linke Operand muS dabei eine Zeichenkette, der rechte Operand kann ein beliebiger Maple-Ausdruck sein. 1st der rechte Operand von . eine ganze Zahl, so wird diese automatisch in die entsprechende Zeichenkette umgewandelt und an den linken Operanden angehangt. Dieser Operator wird zur Erzeugung von Meldungen, die von einem Prograrnrn ausgegeben werden, benutzt und auch zur Erzeugung neuer Symbole. > student.

53;

student53 >

>

z := 1000: 'The value of z is

z; The value of z is 1000

>

"

.

z . ' is the value of z.'; 1000 is the value of z.

Man beachte, daB wir im letzten Beispiel mit einer leeren Zeichenkette beginnen. Dies ist nOtig, da ja das erste Argument einer Verkettung ein Name sein muS. Das linke Argument einer Verkettung wird nicht ausgewertet, ohne die leere Zeichenkette wiirden wir dernnach folgendes erhalten: > z

. ' is the value of z.';

z is the value of z. Der Verkettungsoperator wirkt auch auf Foigen von Ausdriicken (Seite 44) und auf Bereiche (Seite 45).

A.9

Anweisungen

In diesem Abschnitt werden Maple-Anweisungen zur Zuweisung und Freigabe von Variablen, zum Testen der Werte von Ausdriicken und zum Ausfiihren einer Foige von Anweisungen in einer Schleife beschrieben. Die Syntax dieser Anweisungen ii1melt der der Programmiersprache ALGOL 68 und - da Pascal von ALGOL abstammt - erinnert sie auch an Pascal. Diese Anweisungen sind in interaktiven Sitzungen niitzlich; sie sind aber besonders wichtig zur Programmierung.

40

A.9 Anweisungen

Wie mao Variableo zuweist uod freigibt Man kann einer Variablen einen Maple-Ausdruck zuweisen, indem man den Zuweisungsoperator : =benutzt. Zuweisungsanweisungen haben die Form

name := expression; Jede Zeichenkette stellt einen giiltigen Variablennamen in Maple dar. Die meisten Variablennamen sind einfache Zeichenketten, die mit einem Buchstaben beginnen; aber in Hochkommata eingesehlossene Zeiehenketten ktinnen aueh niltzlich sein, wie wir schon im Absehnit ilber Zeiehenketten auf Seite 39 gesehen haben. Es folgen nun einige Beispielszuweisungen. 1m zweiten Beispiel benutzen wir die starre Form des Integrationsbefehls, sodaB das Integral nieht ausgewertet wird. > a

:=

3.17 + 5;

a:= 8.17 > easylntegral .- Int(x 3, xl; A

easylntegra/ :=

J

x3 dx

Tritt eine Variable mit zugewiesenem Wert in einem nachfolgenden Ausdruek auf, so wird der entspreehende Wert bei Auswertung des Ausdrucks eingesetzt.

66.7489

Wird ein Ausdruek in einfache Hoehkommata eingesehlossen, so verhindert dies, daB der Ausdruek ausgewertet wird. (es ktinnen allerdings triviale Vereinfachungen vorgenomrnen werden). 1m folgenden Beispiel werden rechte Hoehkomrnata benutzt, urn eine Substitution der Variablen a zu verhindem. > 'a A2 - 2 - 4';

Nun lassen wir die Hochkomrnata weg und, indem wir das letzte Resultat noeh mal anfordem, wird der Ausdruek mit dem obigen Operator komplett ausgewertet. > ";

60.7489

Man kann eine Variable freigeben, d. h. sie von ihrem zugewiesenen Wert trennen, indem man der Variablen ihren eigenen Namen zuweist. Man muB dabei die reehte Seite in einfache Hoehkomrnata einschlieBen, urn eine Auswertung von a zu verhindem. > a := 'a';

a :=a > ai

a

41

A Einfiihrung in Maple Die Funktion unassign gibt mehrere Variablen auf einmal frei. Man muB diese Funktion aus der Bibliothek einladen, bevor man sie benutzen kann. (siehe Abschnitt A.II, Seite 53 zur Struktur der Maple-Programmbibliothek). Wiederum muB jede Variable in Hochkommata eingeschlossen sein, urn eine Auswertung bei der Freigabe zu verhindem. 1m folgenden Beispiel geben wir easylntegral frei, dazu auch simple und z aus dem letzten Abschnitt. > readlib(unassign) : > unassign('easylntegral',

'simple',

'z');

Der restart-Befehl gibt jede Variable sofort frei. Die Maple-Sitzung wird effektiv neu gestartet, jede gemachte Zuweisung ist gel6scht und jede eingelesene Definition ist vergessen. Dieser Befehl ist neu in Maple V Version 2. Man kann sich aile in der aktuellen Sitzung definierten Symbole mit dem Befehl anames ( ) anzeigen lassen.

Anweisungstrenner und die leere Anweisung Das Semikolon und der Doppelpunkt werden in Maple als Anweisungs-Trennzeichen benutzt. Sie werden dazu gebraucht, aufeinanderfolgende Anweisungen abzutrennen, lihnlich dem Semikolon bei der Programrniersprache Pascal. Nach der letzten Anweisung einer Foige von Anweisungen ist also kein Satzzeichen notwendig. Dies erkllirt, warum man nach dem qui t-Befehl kein Satzzeichen braucht. In den folgenden Abschnitten werden uns eine Menge Beispiele von Foigen von Anweisungen begegnen, innerhalb von if -Bl6cken, do-Schleifen und proc-Definitionen, wobei der letzten Anweisung kein Satzzeichen folgt. Man kann ein Semikolon oder einen Doppelpunkt dahln setzen, wo es nicht erforderlich ist, ohne Probleme zu bekommen. Ein zuslitzliches Satzzeichen wird als ,Jeere Anweisung" interpretiert und hat deshalb keine Funktion.

Bedingungen Die if -Anweisung erlaubt es, den Wert eines Maple-Ausdrucks zu testen. Sie ist ein sehr wichtiger Bestandteil der Maple-Programrniersprache. if bedingungl then anweisungsfolgel elif bedingung2 then anweisungsfolge2 elif bedingung3 then anweisungsfolge3 else anweisung

fi; Hier wird bedingungl zuerst gestestet. Ergibt sie true, so wird anweisungsfolgel ausgefUhrt. Sonst wird bedingung2 getestet und so weiter. Falls keine der Bedingungen true ergibt, wird anweisung ausgefUhrt. Man beachte, daB Maple bei der Auswertung Booischer Ausdriicke eine dreiwertige Logik benutzt. Eine wohldefinierte Bedingung ergibt true oder false; eine falsch formulierte Bedingung kann FAIL ergeben. Sowohl die elif-Teile als auch der else-Teil sind optional. Jede if-Anweisung muB mit dem SchlUsselwort f i enden (i f ruckwlirts gelesen). Eine Bedingung kann ein beliebiger Booischer Ausdruck sein, beispielweise ein Test auf Gleichheit. Die Bedingung in einer if-Anweisung wird autornatisch ausgewertet; man braucht also nicht evalb zu benutzen. Wegen Maples abgekUrzter Bearbeitung zusammengesetzter Tests, kann man eine Anweisung wie die folgende formulieren, Ohne befUrchten zu mUssen, daB durch Null geteilt wird. > if a 0 and b/a > c then c := 2*c fi;

42

A.9 Anweisungen Iteration Man kann eine Folge von Maple-Anweisungen wiederholt ausfiihren, indem man sie in eine doSchleife einschlieBt. Es gibt mehrere Arten von do-Schleifen in Maple. Alle verlangen nach dem Schliisselwort do unmittelbar vor dem Block der zu wiederholenden Anweisungen und alle miissen mit dem Schliisselwort od enden (do riickwarts gelesen). Die erste Version der do-Anweisung ist die for-Schleife. Es gibt zwei verschiedene forSchleifen. Die erste benutzt eine Indexvariable wiihrend die Schleife ausgefiihrt wird. Diese Variable nimmt sukzessive Werte einer Folge an, die durch die from, by und to-Klauseln der Anweisung gegeben ist. Die folgende Schleife gibt zum Beispiel die ersten vier Primzahlen in umgekehrter Reihenfolge aus. Die Indexvariable i nimmt die aufeinanderfolgenden Werte 4, 3, 2, lund O. Die Schleife endet, sobald i den Wert 0 annimmt. > for i

from 4 by -1 to 1 do

> ithprime{i) > od;

7 5 3

2 Die from, by und to-Klauseln sind samtlich optional. Ihre voreingestellten Werte sind I, lund Unendlich. Unter Maple V Version 2 und Version 3 konnen diese Klauseln in beliebiger Reihenfolge auftreten. Die andere Arteiner f or-Schleife operiert auf aufeinanderfolgenden Teilen eines Maple-Ausdrucks. Sie wird normalerweise dazu benutzt, eine Operation auf ein jedes Element einer Menge oder einer Liste anzuwenden. for var in ausdr do anweisungsfolge od; Auf Seite 47 findet man ein Beispiel zu dieser Form einer f or-Schleife. Die zweite Variante der do-Anweisung ist die while-Schleife. Hierbei wird eine Folge von Anweisungen ausgefiihrt, so\ange eine gegebene Bedingung erftillt ist. while bedingung do anweisungsfolge od; Wir konnen beispielsweise das urspriinglich zur for-Schleife gegebene Beispiel als whileSchleife schreiben: > i := 4: > while i > 0 do > ithprime{i); > i . - i-1 > od;

7 i:= 3 5

i:= 2

43

A Einfiihrung in Maple 3 i:= 1 2

i:= 0 Bei dieser Konstruktion erhalten wir mehr Ausgabezeilen, da der Schleifenkorper zwei Anweisungen umfaSt. Wenn nichts anderes vorgeschrieben ist, wird das Ergebnis einer jeden Anweisung in Maple - sei sie direkt eingegeben oder in einer zusammengesetzten Anweisung wie z. B. do oder if einfach verschachtelt - ausgegeben. Resultate, die zwei oder mehr Ebenen tief verschachtelt sind, werden allerdings nicht ausgegeben. Dies gilt zum Beispiel fiir Anweisungen innerhalb einer if-Anweisung, die sich ihrerseits selbst wieder in einer do-Schleife befindet. Die Interface-Variable printlevellegt fest, bis zu welcher Schachtelungstiefe Ergebnisse ausgedruckt werden; siehe Abschnitt A.12, Fehlersuche (Seite 60). Die for und while-Klauseln konnen zusammen in einer einzigen Schleife auftauchen. Beispielsweise wird in der folgenden Schleife die kleinste Primzahl gesucht, die mit den Ziffem 21 endet und in der Variablen n gespeichert. > for n from 21 by 100 while not isprime(n) do od; > ni

421 Wir geben i und n frei, sodaS sie spiller emeut benutzt werden konnen. > i

:=

'i':

n:= 'n':

A.10 Datenstrukturen In diesem Abschnitt werden die grundlegenden in Maple vorkommenden Datenstrukturen vorgestellt: Foigen von Ausdriicken, Bereiche, Listen, Mengen, Felder, Matrizen, Vektoren und Tabellen. Wir zeigen, wie man diese Strukturen erzeugt und benutzt und weisen auf spezielle Funktionen hin, die dazu dienen, auf den entsprechenden Datenstrukturen zu operieren.

Folge von Ausdriicken Die expression sequence, Foige von Ausdriicken, ist eine der grundlegenden Datenstrukturen in Maple. Eine Foige ist eine Sammlung von Maple-Ausdriicken, die durch ein Komma getrennt sind. Die spezielle Folge, die keine Elemente enthlilt wird, mit NULL bezeichnet. Einige Funktionen Hefem eine Foige von Ausdriicken zuriick. > solve(x 2 - x + 1 A

= 0,

x);

1

1

1

1

-2 + -1../3 - - -1../3 2 '2 2 Die Argumente eines jeden Funktionsaufrufs bilden ebenso eine Foige von Ausdriicken. 1m folgenden Beispiel weisen wir einer Variablen eine Foige von Unbestimmten zu und berechnen dann eine gemischte partielle Ableitung dritter Ordnung beziiglich dieser Unbestimmten. > vars := x, y, z: > diff(x A2 * (y+z)A3, vars);

12x(y + z) Der Auswabloperator, [ I erlaubt es, auf bestimmte Teile einer solchen Foige zuzugreifen. Wir wollen bier auf das zweite Element der Foige vars zugreifen.

44

A.IO Datenstrukturen > vars[2];

y Die Foigenfunktion seq in Maple erzeugt eine Folge nach einer bestimmten Vorschrift. Sie iihnelt der for-Schleife, kann aber eine Foige in effizienterer Weise erzeugen. Wir erzeugen eine Folge von Monomen in x, deren Exponenten von der 20. Primzahl zur 27. Primzahl variieren, durch Benutzen der seq-Anweisung. > seq(x A ithprime(n), n=20 .. 27);

Man soUte sichersteUen, daB der Iterationsvariablen der seq-Anweisung (n im obigen Beispiel) nicht schon ein Wert zugewiesen wurde. Hat sie schon einen Wert, so soUte man n in einfache Hochkommata einschlieBen, urn eine Auswertung zu verhindem. Der Foigenoperator $, steUt eine angenehme Verkilrzung des seq-Befehls dar. Wir erzeugen nun dieselbe Foige von Monomen mit diesem Operator. Zuerst milssen wir die Definition von n loschen, da der seq-Befehl die Indexvariable nicht freigibt. > n := 'n': > x A ithprime(n) $ n=20 .. 27; X71,X73,X79,X83,X89,X97,XlOl,Xl03

Der $-Operator wird meist bei der diff-Funktion benutzt, urn eine Ableitung hoher Ordnung zu berechnen. Dereinfache Ausdmck x$8 ergibt eine Foige von acht x, somit berechnet derfolgende Befehl eine Ableitung achter Ordnung. > diff(xAIO, x$8);

1814400x 2 In Maple V Version 2 und Vesrsion 3 kann man den Verkettungsoperator fur Zeichenketten dazu benutzen, neue Symbole zu erzeugen. > t.

(seq(binomial(k, 2), k=2 .. 10)); tl, t3, t6, tlD, t15, t21, t28, t36, t45

Wir geben k zur spliteren Verwendung frei. > k := 'k':

Bereich Ein range (Bereich) in Maple ist ein Ausdruck der Form a . . b, wobei a und b beliebige MapleAusdrilcke sein konnen. Der Bereich steht fUr eine Menge von Zahlen zwischen a und b, wobei die exakte Bedeutung vom Kontext abhlingt. Wir haben schon mehrere Beispiele filr Ausdrilcke, die einen Bereich definieren, kennengelemt. In seq und sum steht a . . b filr die Zahlen a, a I, a 2, ... , a k, wobei a k gleich b ist, oder, allgemeiner gesprochen, a + kist so nahe wie moglich an b, ohne b zu ilberschreiten. Unten summieren wir die ersten zehn Quadrate auf, wobei der Befehl sum benutzt wird. Der Summand und die Summationsvariable sind beide in einzelne Hochkommata eingeschlossen; dies ist filr den Fall, daB i schon ein Wert zugewiesen wurde.

+

> sum('i A2',

+

+

+

'i'=l .. lO);

385 In plot und int, wird das reelle Intervall

la, b] durch a . . b reprl1sentiert. 45

A Einfiihrung in Maple > int(4*x*ln(x), x=l .. E);

Manchrnal schlieBt Maple Ergebnisse in Klammern ein, obwohl das nicht notwendig wlire; ein Beispiel dafUr ist obiges Ergebnis. In iscont, einern Befehl, der die Stetigkeit von Funktionen testet, steht der Bereich a . . b fUr das offene reeUe Intervall (a, b), wenn nichts anderes verabredet wurde. > readlib(iscont) : > iscont(tan(x), x=-pi/2 .. Pi/2);

true Wir mUssen iscont erst aus der Bibliothek mittels readlib einlesen. Ein Bereich kann sogar komplexe Werte umfassen. Die Funktion conformal im plots-Paket verlangt nach einem Bereich, wo a und b komplexe Zahlen sind. Diese geben ein Rechteck in der komplexen Ebene an, Uber dem eine komplexwertige Funktion konfonn abgebildet wird. > with(plots) : > conformal(z 4, z=O .. l+I); A

Weitere Infonnationen tiber Pakete und Bibliotheksfunktionen findet man in Abschnitt A.II auf Seite 53. Einige Maple-Funktionen ktlnnen auch einen Bereich zurtickliefern. > limit(sin(l/x), x=O);

-1 .. 1 Der Folgenoperator $ wandelt einen Bereich in eine Folge urn. > $1..5;

1,2,3,4,5 > $3.7 .. 9.2;

3.7,4.7,5.7,6.7,7.7,8.7 Der Verkettungsoperator fUr Zeichenketten kann auf einen Bereich verteilt angewandt werden und gibt dann eine Reihe von Symbolen zurtick. >t.(1..5);

tl, t2, tS, t4, tS

Liste Eine Liste, list in Maple, ist eine in rechteckige Klammern [ 1 eingeschlossene Folge von AusdrUcken. SoUte die Tastator tiber keine rechteckigen Klarnmern verftigen, so kann man wahlweise auch ronde Klammern mit einem vertikalen Strich (I I) benutzen. Eine Liste kann eine beliebige Kombination von Maple-AusdrUcken enthalten, darunter auch andere Listen. Derselbe Ausdruck kann in einer Liste auch mehnnals auftreten. Die Elemente einer Liste sind geordnet: Maple ordnet die Elemente einer Liste nor urn, wenn dies explizit gefordert wird. Die leere Liste wird mit [ 1 gekennzeichnet.

46

A.t 0 Datenstrukturen Der Auswahloperator wiihlt bestimmte Elemente aus einer Liste aus, genauso wie bei Folgen von AusdrUcken. Das ite Element einer Liste L z. B. ist L [i). Der op-Befehl kann auch dazu benutzt werden, Teile einer Liste auszuwlihlen. In der Tat Illst die op-Funktion jeden Maple-Ausdruck auf, mit Ausnahme von Ausdrucksfolgen. Der Befehl: op(ausdr) ; gibt eine Folge aller im gegebenen Ausdruck vorkommenden Komponenten oder Operanden zuriick. Falls ausdr eine Liste ist, so Iiefert dieser Befehl die Foige aller in der Liste vorkommender Elemente. Der op-Befehl versehen mit zwei Argumenten: op(index, ausdr); oder op(bereich, ausdr); wlihlt ein besonderes Element oder einen besonderen Bereich von Elementen aus einem Ausdruck aus. Man kann also auf das ite Element einer Liste Lauch mit dem Befehl op (i, L) zugreifen. Ein verwandter Befehl ist nops. Er liefert die Anzahl der in einem Ausdruck vorkommenden Operanden zuriick. nops (ausdr) ; Falls ausdr eine Liste ist, so handelt es sich urn die Lange der Liste. Die folgenden Beispie1e illustrieren mehrere Anwendungen des Auswahloperators sowie der opund nops-Funktionen auf Listen. > listl := [Pi, exp(l), Catalan): > list2 := [Pi, rou, epsilon): > op(listl);

71",

> op(l,

e, Catalan

listl); 71"

>

biglist .- [op(listl), op(list2)]; biglist :=

[71",

e, Catalan, 71", 1', f]

> nops (biglist) ;

6 > biglist [3 .. 5);

Catalan, 71", I' > op(3 .. 5, biglist);

Catalan, 71", I'

Man beachte, daB der Auswahloperator auch einen Indexbereich akzeptiert.

47

A Einftihrung in Maple Eine Version der do-Schleife wird oft in Zusamrnenhang mit Listen benutzt. Die for-Anweisung zusammen mit dem Schliisselwort in erlaubt es,jedes Element einer Liste sukzessive zu bearbeiten. Die folgende Schleife zum Beispiel berechnet die erste, vierte, 26. und 440. Primzahl. > for i

in [1, 4, 26, 440] do ithprime(i) od;

2 7

101 3079 Der select-Befehl wiihlt solche Listenelemente aus, die einem bestimmten Kriterium geniigen und erzeugt eine neue Liste bestehend aus diesen Elementen. Das Kriterium sollte eine Prozedur sein, die einen Booischen Wert zuriickgibt. Unter Benutzung des Kriteriums isprime greifen wir aIle Primzahlen aus einer Liste von ganzen Zahlen zwischen 3000 und 3100 heraus, ebenso aIle Quadratzahlen der selben Liste mit Hilfe eines type-Tests. > select(isprime,

[$3000 .. 3100]);

[3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089] > select (type,

[$3000 .. 3100], square);

[3025] Der member-Befehl priift, ob ein bestimmter Ausdruck in einer Liste enthaIten ist. Das Ergebnis ist true oder faIse. > member (a,

[a, b, c]);

true Der map-Befehl wendet eine gegebene Funktion auf jedes Element einer Liste an. Zuriickgegeben wird eine neue Liste, deren Elemente die Bildelemente der urspriinglichen Liste unterder gegebenen Funktion sind. > map(sin,

[0, pi/6, Pi/3, Pi/2, 2*pi/3, 5*Pi/6, Pi]);

Die Funktion convert besitzt Unterbefehle zur Verarbeitung von Listen. Man kann aIle Elemente einer Liste aufaddieren, indem man convert (1ist, '+') benutzt. 1m folgenden Beispiel berechnen wir das arithmetische Mittel einer Liste von Zahlen. > grades := [73, 85, 69, 99, 58, 78, 84]: > convert (grades, '+') / nops(grades);

78 AufanaIoge Weise berechnet man mit convert (list, '*') das Produkt von Listene1ementen.

48

A.IO Datenstrukturen

Menge Eine Menge, set in Maple, ist eine Folge voneinander verschiedener Ausdriicke, die in geschweifte Klammem { } eingeschlossen sind. Sollte die Tastatur nicht iiber geschweifte Klammem verfilgen, kann man auch runde Klammem gefolgt von einem Stem benutzen: (* * ) . 1m Gegensatz zur Liste, sind die Elemente einer Menge ungeordnet: Maple kann die Elemente zu bestimmten Zwecken umordnen. Duplikate innerhalb einer Menge werden automatisch eliminiert. Die leere Menge ist durch {} gegeben. Der Auswahloperator, die for/in Schleife und die Befehle op, nops, select, member, map, convert/' +' und convert/' *', welche siimtlich im letzten Abschnitt behandelt wurden, wirken auch auf Mengen und zwar ganz analog. Maple verfligt aber auch tiber die speziellen Mengenoperatoren intersect, union und minus. > setl := {O, Pi, 2*Pi, 3*Pi}: > set2 := {Pi, exp(l) , Catalan}: > setl union set2;

{a, Catalan, 7r, e, 27r, 3 n"} o

> setl intersect set2;

> setl minus set2;

> map(sin, setl);

{a} > member(gamma, set2);

false > evalf(convert(set2,

'*'»; 7.822102731

Die symmdif f -Funktion berechnet die symmetrische Differenz zweier Mengen; symmdif f (A, B) ist also lIquivalent zu (A minus B) uni on (B minus A) . 1m Gegensatz zu den anderen Mengenoperatoren ist symmdi f f kein Infixoperator. Diese Funktion ist neu in Maple V Version 2. Man muB sie aus der Bibliothek einlesen, bevor man sie benutzen kann. In Abschnitt A.II (Seite 53) findet man genaueres zum Aufbau der Maple-Bibliothek. > readlib(symmdiff) : > symmdiff(setl, set2);

{a, Catalan, e, 37r, 27r} Eine Menge kann in eine Liste umgewandelt werden, indem man die Befehle [op (menge) 1 oder convert (menge, 1 i s t) verwendet; eine Folge kann in eine Menge durch {fo/ge} umgeformt werden; eine Liste in eine Menge durch {op (/iste) } oder convert (liste, set).

49

A Einfiihrung in Maple Feld, Matrix oDd Vektor Ein Feld, array, ist eine mehrdimensionale Datenstruktur, die durch Bereiche ganzer Zahlen indiziert wird. Wir definieren hier zum Beispiel ein zweidimensionales Feld bestehend aus drei Reihen und zwei Spalten; die Reihen sind numeriert mit 0, I, 2 und die Spalten mit -3, - 2. Dies geschieht durch den Befehl: > a := array(0 .. 2, -3 .. -2):

Wir weisen nun einigen Elementen des Feldes Werte zu, indem wir den Auswahloperator benutzen: > a[O, -3] > a[O, -2]

.- 10: .- 11:

Zur Ausgabe a1ler Werte eines Feldes sollte man print benutzen. > print (a) ;

array(O .. 2, -3 .. -2, [ (0, -3) = 10 (0, -2) = 11 0, -3) al,-3

=

0, -2) = al,-2

(2, -3) = a2,-3 (2, -2) a2,-2

=

])

Der array-Befehl akzeptiert auch zusatzliche Parameter: Eine Indexfunktion und eine Liste von Anfangswerten. Eine Indexfunktion schrlinkt die Werte eines Feldes in gewisser Weise ein und erlaubt es, gewisse Arten von Feldem effizient zu speichem. Es gibt runf vordefinierte Indexfunktionen, die zur Definition von Matrizen nfitzlich sind. Unter einer Matrix in Maple versteht man ein zweidimensionales Feld, wobei der Index in beiden Dimensionen bei 1 beginnt. Die folgende Tabelle Iistet die ffinf in Maple definierten Indexfunktionen auf und erlautert wie sie Matrizen einschrlinken. Ihr Effekt auf Felder hOherer Dimensionen ist entsprechend.

Funktion symmetric antisymmetric diagonal identity sparse

Beschriinkung A[i, i] == A[j, i] A[i,i] == -A[j,i] Elemente, die nicht auf der Diagonalen Iiegen, sind 0 Diagonalelemente sind 1, die anderen 0 Aile nicht explizit initialisierten Eintrlige werden alS 0 vorausgesetzt

Wir definieren eine 2 x 2 Matrix mit gewissen Anfangswerten. > m := array (1. .2, 1. .2,

[[x, 10],

[10, y]]);

Da diese Matrix symmetrisch ist, k6nnten wir die Matrix effizienter ahspeichem, wenn wir nach der Indexfunktion symmetric verlangen. In dem Fall ist es dann besser, eine andere Syntax zur Vorgabe der Anfangswerte zu benutzen. Sie verhindert, daB die Nebendiagonalelemente zweimal initialisiert werden. > m := array (symmetric, 1..2, 1..2,

[(l,l)=x,

Hier ist die 3 x 3 Einheitsmatrix. > id3 := array(identity, 1 .. 3, 1 .. 3): > print(id3);

50

(2,2)=y,

(1,2)=10]);

A.IO Datenstrukturen

Man kann auch den Befehl "Werte iiber Matrizen aus" , eva 1m, benutzen, urn eine Matrix auszudrucken. Dieser Befehl dient femer dazu, einige Elernentaroperationen auf Matrizen ausuzfiihren - Addition, Multiplikation, Invertierung. Man beachte dazu die Tabelle am Ende diese Abschnitts auf Seite 52. Die matrix-Funktion im Paket lina1g zur linearen Algebra stellt eine einfachere Art Matrizen zu definieren zur Verftigung. Ebenso erleichtert die vector-Funktion aus diesem Paket die Erzeugung von Vektoren, vectors, eindimensionalen Feldem, deren Index bei 1 beginnt. Urn diese Funktionen, sowie einige andere aus diesem Paket, die in den folgenden Beispielen vorkommen, benutzen zu kCinnen, muB man das entsprechende Paket erst mit folgendem Befehl einladen: > with(lina1g) :

Nun definieren wir einige Vektoren und eine Matrix. > > > >

v1 v2 v3 m

.:=

..-

vector( [1, 1, 1]) : vector ( [1, 2, 4]) : vector( [1, 3, 9]) : matrix( [v1, v2, v3]) ;

Da wir das Paket zur !inearen Algebra bereits geladen haben, stehen uns nun einige Befehle zur Manipulation von Vektoren und Matrizen zur Verfiigung. > det (m);

2 > dotprod(v2, v3);

43 >

transpose (m) ;

Viele Funktionen interpretieren einen Vektor als Spaltenvektor auch wenn er horizontal ausgedruckt wird. > mu1tip1y(m, v1);

[3 7 13]

Die folgende Tabelle !istet einige der in Maple definierten Operationen fUr Matrizen und Vektoren auf. Die eva1m-Funktion und der Operator zur Matrizenmultiplikation & * sind jederzeit in einer Maple-Sitzung verfilgbar; die anderen in der Tabelle aufgefilhrten Funktionen sind im Paket lina1g definiert.

51

A Einfiihrnng in Maple Mathematik

A+B il+ii AB Aii cA cii A-I

At A* adjA Tr(A)

IAI

per(A) AX=b

ilt Aii il·ii ilxii

Eigenwerte Eigenvektoren Nullraum Rang

Maple add (A, B) oder evalm(A + B) add(u, v) oder evalm(u + v) multiply (A, B) oder evalm(A &* multiply(A, v) oder evalm(A &* scalarmul (A, c) oder evalm(c * scalarmul(v, c) oder evalm(c * inverse (A) oder ・カ。ャュHaセ@ (-1)) transpose (A) htranspose(A) adjoint (A) trace (A) det(A) permanent (A) linsolve(A, b) innerprod(u, A, v) dotprod(u, v) crossprod(u, v) eigenvals(A) eigenvects(A) kernel (A) oder nullspace (A) rank (A)

B) v) A) v)

TabeUe Unter einer Tabelle, table, versteht man in Maple eine Datenstruktur, deren slimtliche Eintrage durch beliebige Maple-Ausdriieke indiziert werden kilnnen. 1m Gegensatz zu Feldem braueht man flir Tabellen keine spezielle InitiaIisierung. Der AuswalIloperator erzeugt neue Eintriige in der Tabelle nach Bedarf. > days [Jan] >

.- 31: days[Febl .- 28: .- 31: days[FirstQuarter]

> days[Mar] >

:=

days[Jan] + days[Feb] + days[Mar]; days FirstQuarter := 90

Der Befehl indices listet aIle diejenigen Ausdriieke auf, die Werte in einer Tabelle indizieren. Der Befehl entries listet aIle in einer Tabelle gespeieherten Werte auf. Die komplette Tabelle kann mit print ausgdruekt werden. > indices (days) ; [FirstQuarter], [Jan], [Mar], [Feb]

> entries (days);

[90], [31], [31], [28]

Die Indizes und Eintrage werden immer in derselben Reihenfolge ausgedruekt, aIlerdings kann man diese Reihenfolge nieht vorhersagen. > print (days) ;

52

A.II Funktionen in Maple table([

Mar=31 FirstQuarter = 90 Jan = 31 Feb=28 ])

Man kann genauso leieht hOherdimensionale Tabellen definieren. Wir definieren unten days [Feb] urn, so daB dies eine neue Tabelle ist, dabei wird days zu einer zweidimensionalen Tabelle. (Dadureh wird der alte Wert von days [Feb] geloseht. > days [Feb] [Leap] := 29: > days [Feb] [NonLeap] := 28: > print(days);

table([

Mar=31 FirstQuarter = 90 Jan =31 Feb = table([ Leap =29 NonLeap =28 ]) ])

A.ll

Funktionen in Maple

Startet man eine Maple-Sitzung, so steben nieht direkt alle Befehle und Funktionen zur Verfiigung. Einige werden automatiseh geladen, sobald sie benotigt werden; andere muB der Benutzer selbst laden, bevor er sie benutzen kann. In diesem Absehnitt werden die vier grundlegenden Typen von Maple-Funktionen behandelt. Fiir jede Kategorie machen wir deutlieh, ob Funktionen dieses Typs beim Start einer Sitzung zur Verfiigung stehen, wie man sie liidt wenn notig, und ob man den Quelleode dieser Funktionen inspizieren kann.

Spracheigene Funktionen Eine kleine Teilmenge der Maple-Funktionen wird direkt in den Kernel hineiniibersetzt. Diese Funktionen stehen immer zur Verfiigung. Da sie mit dem Hauptprogramm iibersetzt werden, kann man sieh den Quelleode dieser Funktionen nieht ansehen. Die grundlegenden Funktionen wie op, type und evalf, sind spracheigene Funktionen, dazu kommen noeh einige verbreitete mathematisehe Befehle, wie z. B. max und ditf. Man kann immer versuehen, sieh den Quellcode einer Maple-Funktion anzeigen zu lassen, indem man die interface-Variable verboseproc gleieh 2 setzt und dann print aufruft. Will man sich eine spraeheigene Funktion ansehauen, erhiilt man in etwa die folgende Antwort: > interface(verboseproc=2); > print (op) ;

proc() options builtin; 117 end Wir sehen nur einen sehr kurzen Kopf. Die ganze Zahl 117 stellt eine interne Identifizierung fiir die op-Funktion dar. Der Satz options builtin besagt, daB die op-Funktion eine spracheigene Funktion ist. Man sollte daran denken, verboseproc auf den urspriingliehen Wert 1 zuriiekzusetzen, wenn man nieht mehr daran interessiert ist, sieh die Implementation von Funktionen anzusehauen.

53

A Einfiihrung in Maple > interface(verboseproc=l);

Standard-Bibliotheksfunktionen Standard-Bibliotheksfunktionen werden automatisch geladen, sobald sie zum ersten Mal in einer Sitzung aufgemfen werden. Die meisten der gebrauchlichen mathematischen Befehle in Maple, darunter int, solve, plot und exp, sind Standard-Bibliotheksfunktionen. Die Strategie von Maple, Funktionsdefinitionen nur dann zu laden, wenn sie wirklich gebraucht werden, dient dazu, Speicherplatz flir Maple-Programme zu verringem. Ftir den einfachen Maple-Benutzer ist der Vnterschied zwischen spracheigenen Funktionen und Standard-Bibliotheksfunktionen nicht ersichtlich, da der Benutzer keine zusatzlichen Befehle zum Laden von Definitionen eingeben muS. Es gibt allerdings einen bedeutenden Vnterschied: Man kann sich den Quellcode von Standard-Bibliotheksfunktionen anschauen. Wir schauen uns hier den Quellcode ftir die Funktion i thpr ime an. Die im Prograrnrn vorkornrnende gro6e ganze Zahl ist das Produkt der ersten neunzehn Primzahlen. > interface(verboseproc=2); > print(ithprime);

proc(i) local j,k; options remember, 'Copyright 199333y Waterloo Maple Software'; if type(i,integer) and 0 < i then i f i < 20 then op(i, [2,3,5,7,11,13,17,19,23,29, 31,37,41,43,47,53,59,61,67]) elif i < 30000 then for j from ithprime(i-1)+2 by 2 do if igcd(j,7858321551080267055879090) 1 and isprime(j) then RETURN(j) fi od else k := 29999; for j from 350353 by 2 do if igcd(j,7858321551080267055879090) = 1 and isprime(j) then k := k+l; if k = i then RETURN(j) fi fi od fi elif type(i,numeric) then ERROR('argument must be a positive integer') else 'ithprime(i) , fi end > interface(verboseproc=l);

Diese Funktion ist, wie alle anderen Funktionen der Maple-Bibliothek, in Maple's eigener Prograrnrniersprache geschrieben. Es ist ratsarn, sich die Beispiele dieses Abschnitts noch mal anzusehen, wenn man Abschnitt A.l2, Das Schreiben eigener Funktionen, liest.

Pakete Vnter einem Paket, package in Maple, versteht man eine Sarnmlung verwandter Funktionen, die in der Maple-Bibliothek zusarnrnen abgespeichert sind. Maple V Version 2 und Version 3 enthalten jeweils mehr als zwei Dutzend Pakete, die Hunderte von Operationen und Algorithmen in linearer Algebra, Kombinatorik, Zahlentheorie, Statistik, Graphik und mehr umfassen. Ein Paket ist eigentlich eine Liste von Funktionen, Prozeduren innerhalb eines Pakets werden direkt durch die Syntax zurn Auffinden von Listeneintragen aufgemfen. Folgender Befehl zum Beispiel mft die fibonacci-Funktion im Kombinatorik-Paket combinat auf, urn die 73. Fibonacci-Zahl zu finden:

54

A.II Funktionen in Maple > combinat[fibonacci] (73);

806515533049393 Der wi th-Befehl liidt Funktionen aus Paketen in die aktuelle Maple-Sitzung. sodaS diese sich anschlieBend genauso wie Standardfunktionen verhaIten. 1m niichsten Beispiel laden wir eine einzige Funktion aus dem combinat-Paket und rufen sie anschlieBend auf. ohne die spezielle Syntax zum Auffinden von Listeneintriigen zu benutzen. > with (combinat , fibonacci):

> fibonacci(73);

806515533049393 Wird der wi th-BefehI ohne das zweite Argument gegeben. so werden aIle Funktionen des entsprechenden PakelS auf einmaI geladen. Dies ist dann von Vorteil. wenn man eine Reihe von Funktionen eines PakelS innerhaIb einer Sitzung brauch!. > with(combinat) : > fibonacc i ( 73) ;

806515533049393 > stirling2(20, 10);

5917584964655 Die Funktion stirling2 befindet sich ebenfaIls im combinat package. Sie berechnet die sogenannten Stirlingschen Zahlen der zweiten Art. Zu zwei gegebenen ganzen Zahlen n und m gibt die Stirlingsche Zahl {::.} die Anzahl verschiedener Aufteilungen von n Elementen in m nichtleere Teilmengen an. Sie wird unter Verwendung von BinomiaIkoeffizienten berechnet: l (_I)m-k(m)kn. { mn} = . m! L..tk=O k Wir drucken unten den Quellcode flir stirling2 aus. Man kann sich den Quellcode einer jeden Funktion eines Pakets anzeigen lassen.

"m

> interface (verboseproc=2), > print(combinat[stirling2)),

proc(n,m) local k; options remember, 'Copyright 1993 by Waterloo Maple Software', if type(n,integer) and type(m,integer) then if m < 1 or n < m then 0 else iquo(convert([seq«-l)A(m-k)*binomial(m,k)*kAn, k = 0 " m)), '+'),m!) fi elif m 0 then 0 elif n m or m = 1 then 1 elif n m+1 then binomial (n,2) elif type(n,constant) and type(m,constant) then ERROR('invalid arguments') else 'procname(n,m), fi

end > interface(verboseproc=l);

55

A Einfiihrung in Maple

Unterpakete Ein Paket, welches innerhalb eines anderen Pakets definiert ist, wird subpackage (Unterpaket) genannt. Unterpakete sind neu in Maple V Version 3. Das stats-Paket in Version 3 gruppiert fast alle seine Funktionen in sechs Unterpakete. Eines dieser Unterpakete ist describe, welches Funktionen zur Berechnung verschiedener beschreibender Statistiken enthiilt. Wie bei Paketen kann man eine Funktion eines Unterpakets mit der langen Suchsyntax aufrufen: > stats[describe, mean] ([2,4,9]);

5 Nachdem das Paket geladen wurde, muB man irnrner noch die Suchsyntax benutzen, urn auf Funktionen eines Unterpakets zugreifen zu konnen. > with(stats) :

> describe [mean] ([2,4,9]);

5 1st das Paket eingeladen, kann man ausgewahlte Funktionen eines Unterpakets oder das gesarnte Unterpaket auf einmal einladen unter Benutzung von wi th, genauso wie bei Paketen. > with(describe) : > mean([2,4,9]), median([2,4,9]);

5,4

Soostige Bibliotheksfunktionen Einige Maple-Funktionen miissen mit Hilfe des Befehls readlib explizit eingelesen werden, bevor man sie benutzen kann. Dies sind die Bibliotheksfunktionen, die man als Sonstige bezeichnet. Eine dieser Funktionen ist c, welche Ausdriicke so umforrnatiert, daB sie in einem C-Prograrnrn benutzt werden konnen. Ware diese Funktion Teil der Standardbibliothek, konnte man C nicht als Symbol in mathematischen Ausdriicken benutzen. Ein Beispiel fllr solch eine Ubersetzung in C findet man in Abschnitt A.l3, Ubersetzen von Ausdriicken. Eine andere Bibliotheksfunktion aus der Rubrik "Sonstige" ist iscont, welche priift, ob ein gegebener Ausdruck iiber einem gegebenenen Intervall stetig ist. Diese Funktion wird folgenderrna&n aufgerufen: > readlib(iscont) : > iscont(tan(x), x=O .. pi); false

Der Quellcode von beliebigen Funktionen dieser Rubrik kann inspiziert werden. Die Funktion readlib druckt den Quellcode aus, falls verboseproc gleich 2 gesetzt worden ist.

Maple-lnitiaiisierungsdateien Wenn man erwarten kann, daB man ein bestimmtes Paket oder eine bestirnrnte der Sonstigen Bibliotheksfunktionen in Zukunft regelmiUlig brauchen wird, kann es niitzlich sein, den entsprechenden wi th- oder oder readlib-Befehl in eine personliches Maple-Initialisierungsdatei einzufiigen. Man kann sogar jede beliebige Folge von Maple-Anweisungen in eine solche spezielle Datei schreiben. Zum Beispiel ziehen es viele Benutzer vor, die Sonstige Bibliotheksfunktion his tory aufzurufen, urn die Ausgabezeilen innerhalb einer jeden Maple-Sitzung durchzunumerieren. In der folgenden Tabelle listen wir fIIr mehrere Computersysteme den Narnen der Maple-Initialisierungsdatei auf, sowie die Stelle im Dateiverzeichnis, an der sie angelegt werden muB.

56

A.12 Das Schreiben eigener Funktionen Computer DOS Macintosh Unix VMS

Ort

Persiinliche Initialisierungsdatei MAPLE.INI MapieInit .mapieinit MAPLE.INI

Aktuelles Dateiverzeichnis Systemmappe Heimatdateiverzeichnis Aktuelles Dateiverzeichnis

Bei den meisten Computern gibt es auch eine System-Initialisierungsdatei, die Befehle enthlilt, die immer dann ausgefiihrt werden, wenn Maple auf dem System gestartet wird. Diese befindet sich in der Regel im InstaIlationsdateiverzeichnis, oft aber auch im lib-Unterverzeichnis. Computer DOS Macintosh Unix VMS

System.Initialisierungsdatei MAPLE.INI Maplelnit init MAPLE.INI

Ort Maple LIB-Unterverzeichnis Maple-Mappe Maple Iib/src-Unterverzeichnis Maple LIB-Unterverzeichnis

A.12 Das Schreiben eigener Funktionen Das Schreiben einer Funktion zur Berechnung einer einfachen Formel ist in Maple leicht zu bewerkstelligen. Es ist aber mtiglich, komplizierte Programme in Maples mlichtiger Programmiersprache zu schreiben. Maples eigene Bibliothek ist in dieser Sprache geschrieben. Wir diskutieren hier zwei grundlegende Anslitze zum Schreiben eigener Funktionen. Wir werden femer einige Techniken zum Finden und Beheben von Programmierfehlern behandeln, sowie zum Testen und Verbessern der Effizienz des geschriebenen Maple-Programms. 1m letzten Abschnitt weisen wir auf einige fortgeschrittene Themen hin, die in diesem Buch an anderer Stelle behandelt werden.

Pfeilfunktionen und Funktionen mit spitzen Klammern Am einfachstem definiert man neue Funktionen mit Hilfe des Pfeiloperators - >. Es ist wirklich leicht, mathematische Funktionen mit Hilfe dieses Operators zu definieren.

f

:= x -> x 3

+X + 1

Hiermit definieren wir eine Funktion f mit einem Argument, die das Bild unter einem gegebenen Polynom berechnet. Man kann nun f wie jede andere Maple-Funktion benutzen. > f (3) ;

31 > fsolve(f(z)=O,

z, complex);

-.6823278038, .3411639019 - 1.1615414001, .3411639019

+ 1.1615414001

> int(f(x), x=O .. 1);

7 4 > O(f);

57

A Einfiihrung in Maple Man beachte, daB der Differentialoperator D angewandt auf f eine neue Funktion definiert, die ihrerseits die Ableitung von f darstellt. Man kann natiirlich aueh eine Funktion zweier oder mehrerer Variablen mit Hilfe des Pfeil operators definieren. > g

:= (s, t) -> sqrt(s'2 + t'2);

9 := (8, t)

> g(105,

-t

sqrt (8 2 + t 2 )

208); 233

Die Funktion unapply, angewandt auf einen mathematisehen Ausdruck, gibt eine Pfeilfunktion zuriick, die diesen Ausdruck berechnet. Zum Beispiel > unapply(sin(2*Pi*x)

+ 5*x'3 - 3, x);

X

-t

sin(27rx)

> unapply(sqrt(r'2 + s'2 + t'2),

(r,

8,

t)

-t

+ 5x 3 -

3

r, s, t);

vr2

+ 8 2 + t2

Man kann auch eine Sehreibweise mit spitzen Klammem benutzen, urn soIche Funktionen zu definieren. Unsere Funktionen fund g aus diesem Abschnitt konnten auch folgendermaBen definiert werden: f . - < x'3 + x + 1 I x >: g:= < sqrt(s'2 + t'2) I s, t >:

>

>

Wendet man den Differentialoperator auf eine Funktion in spitze Klammem an, so erhaIt man eine Funktion in derselben Schreibweise zuriick. > D(f);

< 3x 2 + 11 x>

Prozeduren Man kann kompliziertere Prozeduren sehreiben, indem man die Syntax proc . .. end benutzt. Die Definition einer Prozedur in Maple sieht im aIlgemeinen so aus: proc(formal-parameters) local local-variable-names; global global-variable-names; options options; statement-sequence end; Die statement-sequence bildet den Prozedurkorper. Die local-,global- und options-Teile konnen aile wegggelassen werden. Die local- und global-Zeilen dienen zur Deklaration lokaler und globaler Variablen. Eine lokale Variable ist nur innerhalb des Prozedurenrumpfes bekannt. Ihr Wert hangt nieht von einer Variablen gleichen Namens ab, die moglicherweise irgendwo auBerhaib der Prozedur definiert ist. Eine globale Variable ist wlihrend der gesamten Maple-Sitzung bekannt. Die global-Deklaration is neu in Maple V Version 3. In Version 2 wurde vorausgesetzt, daB aIle undeklarierten Variablen global sind.

58

A.12 Das Schreiben eigener Funktionen 1m Rest dieses Abschnitts geben wir eine kurze Einflihrung ins Programmieren mit Prozeduren in Maple und zwar anhand mehrerer Beispiele. Weitere Beispiele findet man in Form des MapleQuellcodes, der in Abschnitt A.ll auf Seite 53 ausgedruckt ist, oder auch in Kapitel F (Seite 331). Zuerst schreiben wir eine Prozedur zur Definition des Polynoms des vorigen Abschnitts. > f : = proc (x) > x 3 + x + 1 > end: A

Hier wird f als Funktion einer Variablen definiert. Die Variable x ist der Formalparameter fiir die Prozedur f: sie ist ein Platzhalter flir das aktuelle Argument, mit dem f dann aufgerufen wird. Der Wert des Polynoms fiir diesen Argumentwert ist der Wert, der von f zuriickgeliefert wird. Hinter dem Polynom ist kein Semikolon vonnoten, da dies die letzte (und gleichzeitig einzige) Anweisung im Prozedurenkorper ist. Man kann nun f wie jede andere Maple-Funktion benutzen. Als nachstes schreiben wir eine Prozedur, die ein Element an eine Liste anhangt. Sie verlangt nach zwei Argumenten: der urspriinglichen Liste und dem anzuhangenden Element. > append := proc(l:list, e) > [op (1), el > end:

Hierbei muB das erste Argument, I, eine Liste sein (diese Flihigkeit, Typen zu priifen ist neu in Maple V Version 2). Zuriickgegeben wird eine neue Liste, die alle Operanden der Liste 1 enthlilt, gefolgt vom neuen Element e. Der Wert von 1 kann innerhalb der Prozedur nieht verandert werden; der Grund dafiir liegt in der Art, wie Maple Parameter weiterreicht. Wird eine Prozedur aufgerufen, wertet Maple die gegebenen Aktualparameter aus und ersetzt jedes Vorkommen des Formalparameters im Prozedurenkorper durch den Wert des Aktualparameters. Wenn append aufgerufen wird, wird also 1 durch eine Liste ersetzt und wir konnen 1 dann keinen neuen Wert mehr zuweisen. > append ( [1,

Pi, xl, y 3); A

> append ( 13, 4);

Error, append expects the 1st argument, 1, to be of type list, but received 13 Wir geben schlieBlich ein etwas komplizierteres Beispiel, welches eine Verallgemeinerung des letzten Beispiels aus dem Abschnitt iiber do-Schleifen (Seite 44) ist. Gegeben seien zwei teilerfremde ganze Zahlen n und m, gesucht ist die kleinste Primzahl p die kongruent n modulo mist. Das heiBt, daB wir Rest n erhalten, wenn wir p durch m teilen. Driicken wir das friihere Beispiel in dieser Sprechweise aus, so heiBt dies, daB 421 die kleinste Zahl ist, welehe 21 modulo I ()() ist. Der Satz von Dirichlet besagt, daB es immer eine Primzahl gibt, die soleh einer Kongruenz geniigt, > # Finde die kleinste Primzahl, die kongruent n mod mist. > dirichlet := proc(n:posint, m:posint) > local p; > if gcd(n, m) > I then > ERROR ( , , n . ' and ' . m . ' have a common factor.') > else > for p from (n mod m) by m while not isprime(p) do od; > RETURN(p) fi > > end:

Die erste Programmzeile ist ein Kommentar. Maple ignoriert alles, was hinter dem Zeichen # in einer Zeile steht. Man macht Programme verstandlicher und lesbarer, wenn man Kommentare hinzufiigt. Wir benutzen eine Variable p innerhalb des Prozedurenkorpers. Sie ist local erkUirt, sodaB sie keinen EinftuB auf ein moglicherweise auBerhalb der Prozedur definiertes Symbol p hat. Wir benutzen femer die ERROR-Anweisung, urn die Ausfiihrung des Programms abzubrechen, sollte ein Fehler auftreten. Die vorgespielte Fehlermeldung wird mit Hilfe des Verkettungsoperators in

59

A Einfiihrung in Maple Maple zusammengebaut. Eine RETURN-Anweisung gibt den Riickgabewert der Prozedur explizit an. Man sollte diese Prozedur an einigen Beispielseingabedatensatzen testen. Der erste Satz von Daten unten erzeugt noch einmaI das Beispiel aus dem Abschnitt iiber do-Schleifen. > dirichlet(21, 100);

421 > dirichlet(215, 1000);

Error,

(in dirichlet) 215 and 1000 have a common factor. 99999);

> dirichlet(1024,

501019 Weitere Beispiele zu Maple-Programmen findet man in Kapitel Fund zwar auf Seite 331 beginnend. Man kann auch weiteren Code der Maple-Bibliothek inspizieren oder in eines der in Kapitel H (Seite 354) aufgefiihrten Maple-Biicher schauen.

Fehlersuche Sollte der Maple-Code nicht die erwarteten Ergebnisse liefem, hilft es meist, sich folgende Fragen zu stellen, urn den Fehler einzukreisen. • Hat man einer der Variablen etwa friiher in der Sitzung schon einen Wert zugewiesen? • Hat man versehentlich einer Maple-Funktion oder einer globaIen Variablen einen Wert zugewiesen? • Hat man aile erforderlichen Pakete und Sonstige Bibliotheksfunktionen geladen? • Besitzen aIle Funktionsaufrufe die korrekte Anzahl von Argumenten und die korrekten Argumenttypen? • Sind aIle Indexvariablen voneinander verschieden? • Hat man irgendein Satzzeichen vergessen? • Haben aile runden, geschweiften und eckigen Klammem entsprechende iiffnende und schlieBende Gegenstiicke? • Sind aile Befehle korrekt buchstabiert, auch in bezug auf GroB-Kleinschreibung? • Tutjede Anweisung das, was sie soli? Das Program Mint, welches mit den meisten Maple-Versionen geliefert wird, ist dazu bestimmt, die Fehlersuche in Maple-Programmen zu unterstiitzen. Es ahnelt dem Unix-Programm lint zum Aufdecken von Syntaxfehlem in C-Programmen. Wendet man das Programm Mint auf die das Mapleprogramm enthaItende Datei an, so meldet es Syntaxfehler und spricht Warnungen unterschiedlicher Gewichtigkeit aus, darunter: • Geschachtelte Schleifen, die dieselben Indexvariablen benutzen. • Lokale Variablen, die definiert aber nie benutzt wurden. • Variablen, die benutzt werden, aber nie 10kaI definiert wurden. • FaIsche Anzahl von Argumenten bei einem Funktionsaufruf. • Ein vom System definierter Name ist von einem vom Benutzer definierten Namen verschattet. • Gleichheitszeichen (=) benutzt, wo hiichstwahrscheinlich ein Zuweisungszeichen (: =) beabsichtigt war. Mint ist auch in der Lage, Statistiken zu erzeugen, die zeigen, wie aIle Variablen im Programm benutzt wurden. Der debug-Befehl verfolgt schrittweise die Ausfiihrung bestimmter Prozeduren. Nachdem der Befehl debug (procedure-name) eingegeben wurde, werden aIle von der Prozedur procedurename berechneten Zwischenresultate auf dem Bildschirm angezeigt, sobaId die Prozedur aufgerufen wurde. Man kann diese Verfolgung wieder abschaIten, indem man undebug (procedure-name) eingibt. In Maple V heiBen diese Befehle trace bzw. un trace. Man muBte diese Namen lindem, da die Funktion trace aus dem Paket linalg zur linearen Algebra von dem Fehlersuchbefehl trace verschattet wurde, sobaId man das linalg-Paket geladen hatte. Die globaIe Variable printlevel bestimmt, bis zu welcher Schachtelungstiefe Zwischenresultate auf dem Bildschirm angezeigt werden. Anweisungen, die direkt in eine Maple-Sitzung eingegeben werden, haben Tiefe O. Eine Prozedur vergriiBert die Schachtelungstiefe urn 5; ein do oder if-Block bewirkt eine VergriiBerung urn 1. Der voreingestellte Wert fiir printlevel ist 1, das heiBt, daB nur Ergebnisse der obersten Anweisungen und von Anweisungen innerhaIb eines

60

A.12 Das Schreiben eigener Funktionen einzigen do oder if-Blocks gedruckt werden. Zur Fehlersuche sollte man diese Variable auf einen groBen Wert setzen, sodaB man die Zwischenresuitate von jeder gerufenen Prozedur bis zu einer groBen Tiefe angezeigt bekomrnt. Es ist zum Beispiel nieht ungewohnlich, printlevel gleich 1000 zu setzen. Setzt man andererseits printlevel gleieh 0, so werden nur die Ergebnisse der obersten Anweisungen ausgedruckt. Hat printlevel den Wert -1, so ist die Ausgabe aller Ergebnisse unterdriickt. Die globale Variable infolevel erlaubt es, in Maple kodierte, beschreibende Meldungen mit Hilfe der userinfo-Anweisungen ausdrucken zu lassen. Diese Meldungen liefem verschieden detaillierte Informationen zu den aufgerufenen Funktionen und angewandten Algorithmen. Urn die Meldungen fiir die Funktion fen zu sehen, setze man infolevel [fen) auf einen Wert zwischen 1 und 5. Je groBer die Zahl, desto detaillierter ist die Information. Urn Meldungen fiir alle aufgerufenen Funktionen zu bekommen, setzt man infolevel [all) . Hier ist ein Beispiel dieser Funktionalitat in Maple V Version 2 (Version 2 hat wesentlich mehr in der Bibliothek kodierte userinfo-Anweisungen als Maple V): > infolevel[factor) := 2: > factor(x'2 + 2*x + 1);

factor/polynom: factor/quadfact:

polynomial factorization: number of terms applying the quadratic formula in x

3

Man kann userinfo-Anweisungen auch in eigene Programme hineinkodieren. Ein Beispiel findet man auf Seite 331 in Kapitel F. Man kann einen Fehler auch leichter finden, wenn man in ein Programm explizite printAnweisungen einfiigt. Genaueres zu den Print-Befehlen findet man im Abschnitt ,,Zur Ausgabe von Ausdtiicken" auf Seite 62.

ZeitDahme ODd OptimieruDg Urn die benutzte Zeit sowie den benutzten Speicherplatz eines jeden eingegebenen Maple-Befehls zu sehen, benutzt man die Funktion showtime. Genauso wie history, speiehert showtime die Ergebnisse in aufeinanderfolgend durchnumerierten Variablen. Diese Funktion gehort zu den Sonstigen Bibliotheksfunktionen, muB also zuerst eingeladen werden. > readlib(showtime) : > showtime(); 01 := ifactor(20! + 1);

(117876683047)(20639383) time 02 :=

7.00

words

356635

Mit dem Befehl 0 f f kann man dies wieder auBer Kraft setzen. Man kann Maple-Prozeduren profilieren, urn diejenigen Prozeduren zu tinden, die die meisten Resourcen verbrauchen. Mit Hilfe dieser Information kann man die am meisten Speicherplatz und Rechenzeit verbrauchenden Prozeduren optimieren. Man benutze den Befehl pro f i 1 e, urn Daten ausgewlihlter Prozeduren zu sammeln. Nachdem man diese Prozeduren mit mehreren beispielhaften Eingaben aufgerufen hat, schaut man sich die gesammeiten Daten mit dem Befehl showpro f i 1 e an. Der Befehl unpro f i 1 e setzt das Profilieren wieder auBer Kraft. Bevor man diese Funktionen benutzen kann, muB man sie mit dem Befehl readlib (profile) einladen. Man kann die Effizienz einer Prozedur manchmal erheblich verbessem, indem man die Option remember hinzufiigt. Mit dieser Option "erinnert" die Prozedur sieh an ihren Wert beziiglich jeder vorgenommenen Eingabe. Nachfolgende Aufrufe der Prozedur mit derselben Eingabe brauchen deshalb nieht nochmal berechnet zu werden. Sie miissen nur aus einer Tabelle vergangener Ergebnisse zuriickgeholt werden. EnthaIt eine Prozedur myprog beispielsweise die Deklaration options remember und haben wirmyprog (10) schon berechnet, so wird bei einer emeuten Ausfiihrung von myprog ( 10) einfach die vorher berechnete Antwort nochmal ausgegeben. Die Einsparung ist dann besonders gravierend, wenn es sich urn eine rekursive Prozedur handelt, wenn

61

A Einfiihrung in Maple also die Berechnung von myprog ( 11) vom Wert von myprog (10) abhiingt. Diese Einsparung zieht natiirlich einen groBeren Speicherplatzbedarf nach sich. Eine ganze Reihe der MapleFunktionen, darunter die beiden, deren Quellcode wir vorher ausgegeben haben (i thprime, Seite 54 und combinat [stirling2), Seite 55), benutzen die remember-Option.

Weiterfiihrende Themen Einige weiterfiihrende, die Maple-Programmierung betreffende Themen, werden in Kapite1 F, Oft gestellte Fragen, angesprochen. Eine Beschreibung der Rege1n zum Giiltigkeitsbereich von Variablen in Maple findet man auf Seite 329. Wie man Hilfstext fiir eigene Prozeduren erstellt, ist auf Seite 335 beschrieben. Hinweise zum Erzeugen eigener Pakete von Funktionen und eigener Bibliotheken von Maple-Routinen findet man auf Seite 331.

A.13

Eingabe und Ausgabe

In diesem Abschnitt werden die verschiedenen Moglichkeiten geschildert, Maple-Ausdriicke zu formatieren. Ferner wird gezeigt, wie man Befehle aus Dateien liest und Ergebnisse in einer Datei abspeichert, wie man Daten in ein Maple-Programm einliest und wie man Maple-Ausdriicke in ein solches Format iibersetzt, welches von anderen Anwendungen verstanden werden kann.

Zur Ausgabe von Ausdriicken Es gibt drei grundlegend verschiedene Arten von Maple-Ausgaben. Die voreingestellte Art der Ausgabeistdurchden Wertder interface-Variablenprettyprint bestimmt. Istprettyprint gieich 0 gesetzt, so wird die Maple-Ausgabe in einem linearen Format ausgegeben. Man kann Ergebnisse in diesem Format abspeichern und sie dann spater als Maple-Eingabe weiterverwenden. > interface(prettyprint = 0): > Int(x 7 / 7 + x (a 3), x=sqrt(2) .. pi); A

A

A

Int(1/7*x 7+x (a 3),x = 2 (1/2) A

A

A

A

.. Pi)

Hat die Variable prettyprint den Wert 1, so wird die Maple-Ausgabe in einem Mehrzeiienformat ausgedruckt. Exponenten stehen in einer gesonderten Zeile, und Symbole wie z. B. Integralzeichen und Matrixklammern werden durch Textzeichen angenahert. > interface(prettyprint = 1): > Int(x 7 /7 + x (a 3), x=sqrt(2) .. Pi); A

A

A

pi /

I I I

3 (a

7

1/7 x

+ x

)

dx

/ 1/2 2

Besitzt prettyprint den Wert 2, welcher der voreingestellte Wert ist, so wird die MapleAusgabe in der iiblichen mathematischen Schreibweise ausgedruckt; also mit Integral- und Summenzeichen, echten Matrixklammern, griechischen Buchstaben und Quadratwurzelzeichen. > interface(prettyprint = 2): > Int(x 7 / 7 + x (a 3), x=sqrt(2) .. pi); A

62

A

A

A.13 Eingabe und Ausgabe Es gibt drei Funktionen zur expliziten Ausgabe von Maple-Ausdriicken. Die Funktion zur Iinearen Ausgabe, lprint, gibt einen Ausdruck im Iinearen Format aus, welches zur Eingabe in Maple geeignet ist. Die Funktion pr int gibt eineD Ausdruck in dem durch den Wert von pret typr int angezeigten Format aus. Die Funktion printf gibt formatierte Ausgabe aus und iihnelt der printf-Anweisung in C-Programmen. Diese Funktion ist neu in Maple V Version 2. Diese Funktionen werden oft aus Maple-Programmen heraus aufgerufen, urn Informationen ilber den aktuellen Status von Berechnungen auszugeben.

Zum Abspeichern in Dateien Der save-Befehl dient dazu, Variablennamen in eine Datei in Form einer Zuweisung abzuspeichern. Werte werden so abgespeichert, daB man sie wieder in Maple als Eingabe verwenden kann. Man kann entweder Variablen benennen, die gespeichert werden sollen, oder man kann aile die Variablen abspeichem, denen im Laufe der Maple-Sitzung ein Wert zugewiesen wurde. Die Syntax sowohl des save-Befehls als auch der anderen in diesem Abschnitt behandelten Befehle ist in der Tabelle unten angegeben. In Abschnitt A.7 auf Seite 35 findet man ein Beispiel zum save-Befehl; er diente dazu, die Beschreibung eines Graphen in einer Datei abzuspeichem. Man sollte Dateinamen immer in schraggestellte Hochkommata einschlieBen, urn zu verhindem, daB Maple sie als Ausdrilcke interpretiert. Das ist besonders dann wichtig, wenn der Dateiname spezielle Zeichen wie Schragstrich (I), Punkt ( .) oder Bindestrich (-) enthiilt. Endet der Dateiname mit einem ... rrI', so speichert Maple die Daten in einem speziellen binliren Format abo Dateien in diesem Format konnen nicht wie Klarschrift gelesen werden, aber Maple kann Dateien dieses Formats schneller als gewohnliche Textdateien einlesen. Es gibt auch Maple-Befehle zum Abspeichem einzelner Ausdrilcke. Der Befehl open offnet eine Datei zur Ausgabe. Die Befehle wri te und wr i teln schreiben Ausdriicke in eine Datei. Die Ergebnisse werden im Maple-Eingabeformat abgespeichert. Der Befehl close schlie6t die Ausgabedatei. Diese Funktionen gehoren zu den Sonstigen Bibliotheksfunktionen und milssen deshalb mit readlib (wri tel eingelesen werden, bevor man sie benutzen kann. Die Funktionen wri teto und appendto geben aile nachfolgenden Eingabebefehle wieder und schreiben slimtliche folgenden Ausgaben in eine Datei. Mit Hilfe dieser Befehle ist es moglich, ein Protokoll einer Maple-Sitzung zu erstellen. Man benutze den besonderen Dateinamen terminal urn alles wieder auf dem Bildschirm auszugeben. Die Arbeitsblatt-Schnittstelle enthiilt einen Save-Befehl imFile-Menu, welcherdas gesamte MapleArbeitsblatt abspeichert. Siehe Kapitel B, Seite 72. Alle Befehle sind in folgender Tabelle zusammengefaBt. Funktion save 'file' save 'file.m' save x, 'file' save varseq, 'file' open ( 'file') write (expr) writeln(expr) closet ) appendto('file') writeto ( 'file') writeto(terminal) Save (im File-Menu)

Beschreibung Speichere aile zugewiesenen Variablen in der Datei file Speichere alle zugewiesenen Variablen in der Binlirdatei file. m Speichere den x zugewiesenen Wert in file Speichere die Werte der in varseq aufgefilhrten Variablen in file Offne file zur Ausgabe Schreibe expr in die Ausgabedatei Schreibe expr plus Zeilenumbruch in die Ausgabedatei SchlieBe die Ausgabedatei Hlinge aile nachfolgenden Ergebnisse an den Inhalt von file an Schreibe aile nachfolgenden Ergebnisse in file Gib aile nachfolgenden Ergebnisse wieder auf dem Schirm aus Speichere das gesamte Arbeitsblatt ab

Zum Einlesen von Dateien Mit dem Befehl read liest man Maple-Definitionen und -Anweisungen aus einer DateL Man kann ein Maple-Programm in einer Datei abspeichem und es anschlieBend mit diesem Befehl wieder einlesen. Endet der Dateiname mit ... m", so nimmt Maple an, daB es sich urn binlires Format handelt. Es gibt mehrere Befehle zum Einlesen von Daten oder einem Programm in eine Maple-Sitzung. Der readstat-Befehl gibt eine Eingabeaufforderung aus und wertet anschlieBend die vom Benutzer eingegebene Maple-Anweisung aus. Der Wert der Anweisung wird zurilckgegeben. Der Befehl readl ine liest eine Textzeile entweder aus einer Datei oder vom Bildschirm. Bei diesem Text mu6 es sich nicht urn eine Maple-Anweisung handeln. Zum Auswiihlen einzelner Felderin einervon readl ine zUrilckgelieferten Zeichenkette, benutzt man die Funktion s scanf.

63

A Einfiihrung in Maple Urn die Zeichenkette aIs Maple-Ausdruck auszuwerten, benutzt man die parse-Anweisung. Diese drei Befehle sind neu in Maple V Version 2. Der Befehl readda ta liest ZahienspaIten aus einer Datei und gibt eine Liste von Listen zUriick, die diese Daten enthaIten. Man kann angeben, ob die Zahlen ganze Zahlen oder Gleitkommazahlen sein sollen. Angenommen die Datei datafile enthiilt vier SpaIten von Zahlen: 1 1 1 1

1 1 1 1

2 3 4 5

3 6 10 15

4 10 20 35

Mit dem folgenden Befehllesen wir diese Zahlen aIs ganze Zahlen in eine Liste von Listen: > read1ib(readdata) : > readdata('datafile', integer, 4);

[[1,1,1,1]' [1, 2, 3, 4], [1,3,6,10]' [1,4,10,20], [1, 5,15,35]] Oboe das Argument integer oder mit float anstatt, werden die Zahlen aIs Gleitkommazahlen einge1esen: > readdata('datafile', 4);

[[1.,1.,1.,1.]' [1., 2., 3., 4.], [1.,3.,6.,10.]' [1.,4.,10.,20.], [1.,5.,15.,35.]] Die Funktion readda ta ist neu in Maple V Version 2. Sie gehBrt zu den Sonstigen Bibliotheksfunktionen. SchlieBlich gibt es unter der Arbeitsblatt-Schnittstelle in Maple V Version 2 den Open-Befehl; dieser befindet sich im File-Menu und dient dazu ein vorher abgespeichertes Maple-Arbeitsblatt einzulesen. Siehe Kapitel B, Seite 72. Die hier vorgestellten Befehle sind in der folgenden Tabelle zusammengefaBt. Funktion read 'file' read 'file.m' reads tat (string)

read line ( , file' ) readline(terminal) sscanf(string) parse (string) parse (string, statement) readdata('file', type, c) Open (im File-Menu)

Beschreibung Liest den InhaIt der Datei file Liest den InhaIt der Binlirdatei file. m Fordert den Benutzer mit string zur Eingabe auf und gibt das Ergebnis der vom Benutzer eingegeben Maple-Anweisung zuriick Liest die niichste Zeile aus der Datei file und gibt diese Zeile aus Liest die niichste Zeile von der Standardeingabe und gibt diese Zeile aus Wiihlt Felder aus string aus Wandelt string in einen Maple-Ausdruck urn Wandelt string in einen Maple-Ausdruck urn und wertet diesen aus Liest c Datenspaiten vom Typ type aus der Datei file ein und gibt eine Liste von Listen zuriick Liest ein Arbeitsblatt ein

Zum Ubersetzen von Ausdriicken Maple kann Ausdriicke in bestimmte andere Formate Ubersetzen. Man kann einen Maple-Ausdruck in eine Form Ubersetzen, die zur Verabeitung in C- oder FORTRAN-Programmen oder auch in einem IMsX oder troff-Dokument geeignet ist. Befehl C(ausdr) fortran (ausdr) latex (ausdr) eqn(ausdr)

64

Ubersetzung Prograrnmiersprache C Programmiersprache FORTRAN Eingabe zur IbTsX Texverabeitung und Schriftsatz eqn-Bezeichnung fUr troff-Dokumente

A.14 Ubungen Unten iibersetzen wir einen Maple-Ausdruck in C, FORTRAN, Jb.TJ3X und eqn. Dieser Ausdruck l/n. liefert eine sehr gute Annaherung an den Wert der harmonischen Reihe 1/1 1/2

+

+ ... +

h := n -> In(n) + gamma + 1/(2*n) - 1/(12*n'2) + 1/(120*n'4);

>

h:= n

-+

In(n)

1 1 + 'Y + -2n1 - - +-12n 2 120n 4

Die Funktion C ist eine der Sonstigen Bibliotheksfunktionen und muS deshalb erst eingeladen werden. > readlib(C) : > C(h(n));

to

=

log(n)+0.5772156649015329+1/n/2-1/(n*n)/12+1/pow(n,4.0)/120;

Die Voreinstellung ist so, daB die Routine fortran Ausdriicke in FORTRAN-Anweisungen in einfach genaue Arithmetik iibersetzt. Setzt man die globale Variable precision auf double, so verlangt der entsprechende FORTRAN-Code nach doppeJt genauer Arithmetik. >

precision

:=

double:

> fortran (h (n) ) ;

to

= dlog(n)+0.5772156649015329DO+1/n/2-1/n**2/12+1/n**4/120

>

latex(h(n)); \In (n)+\gamma+{\frac {1}{2n}}-{\frac {1}{12n'(2}}}+ {\frac {1}{120n'{4}}}

>

eqn(h(n)); {{In ( "n") }'+'gamma'+'{ 1 over {2 ' "n" }}'-'{ 1 over {12 '{ "n" sup 2 }}}'+'{ 1 over {120 '{ "n" sup 4 }}}}

A.14

Ubungen

Wir hoffen, daB der Leser nun soweit mit Maple vertraut ist, daB er numerische und symbolische Berechnungen ausfiihren, Ausdriicke manipulieren, Funktions- und Datendiagramme erzeugen, sowie einfache Funktionen schreiben kann. Wir empfehlen, die folgenden Ubungen durchzuarbeiten, urn den Umgang mit Maple in der Praxis zu erlemen.

1. Man benutze die direkt aufrufbare Hilfe (On-Line), urn folgendes zu tinden. (a) Man liste alle Befehle, die mit dem Buchstaben a beginnen, auf. (b) Man tinde die Namen aller der mit Maple zusammen ausgelieferten Pakete. (c) Man tinde die Namen der im Paket linalg vorhandenen Funktionen.

2. Man berechne 262537412640768744 - e1l'v'I63 bis auf eine Genauigkeit von 10,20,30, 35 und 40 Stellen. 3. Welcher Ausdruck ist groBer,

'Ire

oder e"?

4. Man veritiziere die folgenden Identitaten:

(a) 27 5 + 84 5 + 110 5 + 133 5 = 144 5 (b) 2682440 4 + 15365639 4 + 18796760 4 = 20615673 4 (c) 95800 4 + 217519 4 + 414560 4 = 422481 4 Diese Identitiiten verwerfen eine von Leonhard Euler gemachte Annahme aus dem Jahre 1769. Die erste Identitat wurde von L. J. Lander und T. R. Parkin 1966 entdeckt, die zweite von N. D. Elkies 1988 und die dritte von R. Frye ebenfalls 1988.

65

A Einfiihrung in Maple 5. Man finde die reelle, zwischen 1 und 21iegende Nullstelle des Polynoms

f(x)

= x 10 + x 9 -

x7

_

x6

-

x5

-

x4 - x 3

+X +1

Man finde aile reelle Nullstellen. Man finde aile zehn Nullstellen im Komplexen. Man stelle die Nullstellen in einer Liste zusammen und wende mittels map die Betragsfunktion abs aufjedes Element an. Was ist allen komplexen Wurzeln gemein? 6. Man betrachte die Funktion

2x =eX - e- X

f(x) (a) Wie lautet der Iimx _o f(x)?

(b) Man versuche, das bestimmte Integral f01 f(x) dx zu berechnen. Dabei setze man zuerst in f 0 1 eve 1 [ in t) aufl, urn zu sehen, wie die Integrationsfunktion arbeitet. (c) Man berechne eine Taylorreihe fiir f(x) urn x

= 0 bis zur Ordnung 10.

(d) Man integriere diese Reihe nach x. (e) Man wandIe diesen Ausdruck in ein Polynom urn. (f) Man ersetze in diesem Polynom x durch 1. Wir haben soeben eine Approximation an das Integral mit Hilfe der Taylorreihe von f (x) berechnet.

(g) Man benutze eval f sowie die starre Funktion Int, urn die numerische Auswertung von f01 f(x) dx zu erzwingen. Man vergleiche dieses Ergebnis mit dem Ergebnis aus Teil6f. (h) Man benutze int urn das Integral

1 1

_X_dx o sinhx

zu berechnen. Man beachte, daB der Integrand mit f(x) iibereinstimmt. Bekommt man eine andere Antwort? Ruft int nun irgendwelche Routinen auf, die beim erstenmal nicht aufgerufen wurden? 7.

(a) Man lOse die Differentialgleichung y"

+ y'

- 6y

= 20e'"

mit den Anfangsbedingungen

y(O)

= 5, y' (0) =

10

(b) Man zeichne die Lasung iiber dem Intervall [-1,1]. Wo ungefahr nimmt diese Funktion ihr Minimum an? (c) Man zeichne die Kurve iiber einem kleineren Intervall, etwa [-0.5,0]' urn eine bessere Idee zu bekommen, wo das Minimum sich befindet. (d) Man finde den angenaherten x-Wert des Minimums, indem man die Ableitung der Funktion gleich Null setzt und dann nach x auRast. Man benutze fsolve, wobei man ein Intervall angibt, in dem das Minimum sich waIrrscheinlich befindet. (e) Man setze diesen Wert dann in die urspriingliche Funktion ein, urn das Minimum von y( x) zu finden. 8. Man lade das Paket zur linearen Algebra linalg in die Maple-Sitzung ein.

G=

(a) Man definiere M als 5 x 5-Matrix mit dem Binomialkoeffizienten i) als Eintrag fiir die ite Reihe undjte Spalte. Man benutze den Befehl: > M := matrix(5, 5, (i,j) -> binomial(i-l,j-l)); (b) Man stelle die Eintrlige von M graphisch dar mit dem Befehl: > plots [matrixplot) (M, heights=histogram, gap=O.3, > orientation=[-150,60));

66

A.14 Ubungen (c) Man definiere eine andere Matrix S aIs Produkt von M mit der Transponierten von M. S M Mt. (S ist eine Pascalsche Matrix.)

=

(d) Wie lautet die Determinante von S? Man berechne die Inverse von S. Man priife unter Benutzung der Funktion def ini teo ob S positiv definit ist. (e) Man berechne die Eigenwerte und Eigenvektoren von M. Man benutze die Funktionen eigenva1s und eigenvects aus dem 1ina1g-Paket. (t) Man berechne das charakteristische Polynom von S mit der Funktion charpo1y. Man berechne die Wurzeln dieses Polynoms. urn die Eigenwerte von S zu finden.

(g) Man definiere einen aus ftinf ganzen Zahlen bestehenden Vektor V. Man benutze linso1ve. urn den Vektor ex) zu finden. derderMatrixgleichung SX = vgentigt. (h) Man berechne die Permanente von S mit der Funktion permanent. Die Perrnanente einer Matrix ist iihnlich wie die Determinante definiert. aIlerdings kommt in den Entwicklungen der Minoren kein aIternierendes Vorzeichen vor. (a) Man zeichne die Funktion sin(21l'x)

9.

+ x ftir x im Bereich [0,47].

(b) Man erzeuge denselben Graphen. wobei die Option nurnpoints auf 60 gesetzt ist. wiederhole dies mit nurnpoints gleich 29. 10. Man gebe die Zuweisungen > x := 1: > y := 2: ein. Nun gebe man ein >

'X

+ y';

Welcher Wert wird zuriickgegeben? Warum? Man gebe nun > "; ein. Was passiert? Warum? SchlieBlich gebe man > 'x + y'; gefolgt von > II;

ein. Was passiert nun? Warum? 11. In einer Stadt gibt es genau drei Spielwarengeschiifte. die aIle fiinf sehr gefragte Spielzeuge verkaufen. Geschiift A verkauft die Spielzeuge zum Preis von 15 DM, 17 DM. 18 DM. 32 DM und 29 DM. Geschiift B verkauft dieselben fiinf Spielzeuge zum Preis von 14 DM, 18 DM, 22 DM. 29 DM und 26 DM. Geschiift C verkauft die Spielzeuge immer zum besten Preis in der Stadt, das heiSt das billigste Angebot der anderen beiden Geschiifte wird Ubemommen. Man schreibe einen Maple-Ausdruck zur Bestimmung des Verkaufspreises von Geschiift C rUr die flinf Spielzeuge. Man versuche es zuerst mit einer for-Schleife und schlage dann den Befehl zip nach.) 12. Man lade die Sonstige Bibliotheksfunktion finance. (a) Man berechne die monatliche Rate zur Abzahlung eines dreijahrigen 12000-DMKredits mit einer jlihrlichen Zinsrate von 8%, die monatlich erhoben wird: > finance (amount=12000, interest=.08/12, periods=36); (b) Man berechne einen Plan, wann der Kredit sich amortisiert hat. Dazu benutze man die Funktion amorti zation. Sie stehtzur VerfUgung, sobald finance geladen ist. > amortization(12000, .08/12, payment); Hierbei ist payment die erforderliche Rate, die in Teil 12a berechnet wurde. 13. Warum kann op keine Foige von Ausdriicken abarbeiten? 14. Man schreibe eine Funktion first, die das erste Element einer Liste zuriickgibt. IS. Es gibt fiinf verschiedene Moglichkeiten, die Zahl4 als Summe ganzer Zahlen zu schreiben; wenn man die Reihenfolge derTerme au6er acht Hill!: 1 + 1 + 1 + 1,1 + 1 + 2,1 +3, 2+2 and 4. Die Funktion partition im Paket combinat gibt eine Liste aller moglichen Darstellungen einer ganzen Zahl zuriick.

67

A Einftihrung in Maple (a) Man lade das combinat-Paket und teste die Funktion dann anhand der Eingabe von: > partition{4}; (b) Man finde aIle moglichen Unterteilungen fiir die Zahl 8. Wieviele gibt es? Sollte man sich an mehrere Dutzend Ausgabezeilen nicht storen, sollte man 16 versuchen. (c) Die nurnbpart-Funktion im selben Paket berechnet die Anzahl der Unterteilungen einer ganzen Zahl. Man benutze diese Funktion, urn die Anzahl der Unterteilungen von 16, 32 und 64 zu berechnen. (d) Es ist bekannt, daB fiir groBe n der folgende Ausdruck die Anzahl der Unterteilungen approximiert:

・Bセ@ 4nV3 Man definiere eine Funktion p( n), die diesen Wert berechnet. (e) Wie gut ist die Approximation fiir n

= 64? Wie sieht es fiir n = 128 aus?

(f) Manbenutzeplots [logplot 1, ump(n) iiberdemIntervaI1[l, 128) zuzeichnen, wobei man die senkrechte Achse logarithmisch skaIiert.

A.IS

Ausgaben fiir Studenten und akademische Ausgaben

Maple gibt es in zwei Versionen: Die Version fiir Studenten und die akademische Version. Beide Versionen enthaIten die komplette Maple-Bibliothek in Maple V Version 2 und Version 3, wobei aIle Pakete spezieller mathematischer Funktionen eingeschlossen sind. In der studentschen Version ist die Bibliothek in einer komprimierten Version abgespeichert, urn Plattenplatz zu speichern. Die studentische Version ist aber genauso schnell wie die akademische Version. Die akademische Version ist fiir eine Vielzahl von Computern erhaItlich, darunter Personal computer (PC), Arbeitsplatzrechner (Workstations), GroBrechner (Mainframes) und Superrechner. Die studentische Version ist zur Zeit nur fiir unter DOS laufende Personalcomputer (mit oder ohne Microsoft Windows) und Apple Macintosh PersonaIcomputer erhaItlich. Die studentische Version ist preis wert, hat aber einige Beschrlinkungen, die dennoch den studentischen Bediirfnissen angepaBt sind. Die Einschrlinkungen sind in der Tabelle unten aufgefiihrt.

Beschriinkungen der Maple V Version 2 Studentenversion Speicherplatzbedarf 4 megabytes Gleitkommapriizision 100 Stellen Dimensionen von Feldern 3 GesamtgroBe FeldlMatrix 5120 Eintrage GroBe einer Foige 16382 Terme GroBe einer Summe oder eines Produkts 8191 Terme Die studentische Version enthaIt auch weniger beigesteuerte Programme aus der gemeinsamen Maple-Bibliothek. Diese Programme sind jedoch auf elektronischem Wege frei erhaItIich (siehe Kapitel E, Seite 308). Die akademische Version ist teurer, ist aber wesentIich weniger restriktiv.

Einschriinkungen der akademischen Version von Maple V Version 2 Speicherplatz Keine Einschrlinkung Gleitkommagenauigkeit 500000 Stellen Dimension von Feldern Keine Einschrlinkung GesamtgroBe eines Felds/einer Matrix Keine Einschrlinkung GroBe einer Foige 131070 Terme GroBe einer Summe oder eines Produkts 65535 Terme

A.16

Wie man Maple erwirbt

Urn mehr Informationen iiber Maple zu erhaIten oder urn Maple zu bestellen, sollte man sich an den nachsten Softwarehlindler oder an den Vertreiber wenden. Waterloo Maple Software ist der Hauptvertreiber von Maple. Brooks/Cole ist der aIleinige Vertreiber der Studentenversion von Maple

68

A.16 Wie man Maple erwirbt innerhalb der Vereinigten Staaten. AuBerhaib der Vereinigten Staaten wird die Studentenversion von mehreren Unternehmen vertrieben, darunter Waterloo Maple Software, Springer-Verlag und Brooks/Cole's International Thomson Affiliates. Die akademische Version ist von allen diesen Anbietem iiberall auf der Welt erhiiltlich. MathSoft vertreibt Maple hauptslichlich fUr Untemehmen. Waterloo Maple Software 450 Phillip Street Waterloo, Ontario Canada N2L 5J2 Email: [email protected] Fax: +1-519-747-5284 Telefon: +1-519-747-2373 Telefon: +1-800267-6583

Brooks/Cole Publishing Company 511 Forest Lodge Road Pacific Grove, CA 93950-5098 Email: [email protected] Fax: +1-408-375-6414 Telefon: +1-408-373-0728

MathSoft, Inc. 201 Broadway Cambridge, MA 02139 Telefon: +1-800-MathCAD Telefon: +1-617-577-1017

Springer-Verlag 175 Fifth Avenue New York, NY 10010 Fax: +1-212-473-6272 Telefon: +1-212-460-1500

69

B

Die BenutzeroberfUiche

In diesem Kapitel werden die beiden grundlegenden Versionen von Maples Benutzerschnittstelle behandelt: die Arbeitsblatt-Schnittstelle und die Befehlszeilen-Schnittstelle. In Maple V Version 2 und Version 3 ist die Arbeitsblatt-Oberftiiche auf allen mit genligend Graphikfiihigkeiten versehenen Rechnern vorhanden. Damnter sind Arbeitsplatzrechner oder auch Graphikbildschirme, die unter dem X-WIndow-System laufen, Personalcomputer die MS-Windows unterstlitzen, sowie NeXT- und Macintosh-Maschinen. Die Befehlszeilenoberftiiche wird bei einfacheren textorientierten Bildschirmen verwandt oder bei DOS-Rechnern, die nicht liber MS-Windows verfligen.

B.t Die Arbeitsblatt-Schnittstelle Ein Maple-Arbeitsblatt erlaubt es, Maple-Befehle und -Resultate mit ErkIiirungstext und Graphiken zu einem gemeinsamen Dokument zusammenzustellen. Mit Arbeitsbliittern kann man interaktive mathematische Lernprogramme erstellen, sowie hochwertige Ausdrucke einer Maple-Sitzung erzeugen, ohne vorher in ein Drucksetzungsprogramm wie TsX zu libersetzen. Tatsiichlich sind viele der im Maple Technical Newsletter erschienenen Artikel mit Maple-Arbeitsbliittern produziert worden. Die Arbeitsblatt-Benutzeroberftiiche weicht bei verschiedenen Rechnerplattformen in manchen Details voneinander abo Dies liegt zum Teil daran, daB die Arbeitsbliitter den Standards und Konventionen der entsprechenden Rechner angepaBt sind. Das X-Arbeitsblatt folgt zum Beispiel den Konventionen der Motif-Schnittstelle, wiihrend die MS-Windows Version wie andere unter Windows laufende AnwendefProgramme aussieht. Eine Tastaturabklirzung zur Auswahl einer Menuoption kann zudem die icomandセt。ウエ・@ bei einem Macintosh- oder NeXT-Rechner, die ICONTROL セ@ oderl ALT セ@ Taste bei einem X-Arbeitsplatzrechner oder eine Funktionstaste bei einem PC verwenden. Dieser Abschnitt beschreibt die Arbeitsblatt-Benutzerschnittstelle so wie sie bei X-WindowSystemen vorkommt. Einige andere schllne, in anderen Versionen - meist MS- Windows - vorkommende Eigenschaften werden aber auch erwiihnt. In den ersten Paragraphen dieses Abschnitts werden die Hauptbestandteile der Arbeitsblatt-Schnittstelle beschrieben: das Arbeitsblatt-Fenster, Graphikfenster und Hilfsfenster. 1m letzten Abschnitt werden einige der X-Resourcen beschrieben, die man iindern kann, urn das Erscheinungsbild, Verhalten und die Voreinstellung gewisser Optionen der X-Arbeitsblatt-Schnittstelle zu veriindem.

Das Arbeitsblatt-Fenster Sobald man eine Maple-Sitzung in einem Arbeitsblatt startet, erhiilt man einen Eingabe-Prompt vorgespielt und kann dann sofort anfangen, Maple-Befehle einzugeben. Die Ergebnisse erscheinen in einer sauberen mathematischen Schreibweise unter dem entsprechenden eingegebenen Befehl. Mit Hilfe der Maus oder der Pfeiltasten ist es einfach, Fehler zu berichtigen und Teile eines friiheren Befehls in neue Befehle hineinzukopieren. Bild B.l zeigt eine Beispielsitzung unter dem X-Window-System. Ein Arbeitsblatt ist in eine Anzahl von Regionen aufgeteilt. Es gibt fiinf verschiedene Regionen: Eingabe-, Ausgabe-, Text-, Graphik- und Trennregion. Eingaberegionen enthalten Maple-Befehle. Die Eingabe eines Befehls in einer Eingaberegion zieht die Erzeugung einer Ausgaberegion nach sich, die das berechnete Ergebnis festhiilt. Textregionen beinhalten Erkllirungstext und Kommentare, Graphikregionen beinhalten Graphiken und Diagramme. Eine Trennregion ist eine diinne Linie, die eine Ausgaberegion von der niichsten Eingaberegion abgrenzt. Vm Erkllirungstext zu einem Arbeitsblatt hinzuzufiigen, geht man folgendermaBen vor: Bei der niichsten Eingabeaufforderung wechselt man von der Eingaberegion zur Textregion als aktuelle Region. Vnter X klickt man das linke Feld in der Menuleiste an und wiihlt somit Text aus. Vnter MS-Windows driickt ュ。ョセL@ oder man wiihlt den Befehl Text Region aus dem Fonnat-Menu aus. Vm eine Textregion zu beenden und wieder in den reguliiren Eingabemodus zuriickzukehren, finde man den Befehl Insert Prompt im Edit-Menu oder auch Insert New Region im FonnatMenu (MS-Windows) und iindere dann, falls ntltig, die neue Region so, daB es sich urn eine Eingaberegion handelt.

B.1 Die Arbeitsblatt-Schnittstelle

I

!:lIe IText

VIIIW

Edit t:I

I

I

セエャッョウ@

!:!elp

II

Interrupt

I

Pause

> Limit(arctan(x), x=infinity) = limit(arctan(x), x=infinity);

lim arctan( x) xセッ@

セ@

1t

> Int(xA2 * cos(x)"2, x=O .. Pi) = int(xA2 * cos(x)A2, x=O .. Pi);

f o

1 3 x2 cos( X)2 dx - -1 1t + -1t 4 6

> taylor(sec(x), x=O, 8);

1 1

2

5

4

61 x6 o(

+ 2 x + 24 x + 720

+

x8)

> factor(x A24 - 1); (x - 1) (x 2+ X + 1) (x + 1) (1 - x + X2) (x 2 + 1) (x4

- x2 + 1)

(X 4 +1)(X8 -x4+1) > fsolve(xA4 - 4g*x A3 + 150*XA2 - 4g*x + 1 = 0, x);

.02186064250, .3463190740, 2.887510608, 45.74430968 > plots[polarplot](1 + 3*sin(tl3), t=O .. S*Pi, numpoints= 121, scaling=CONSTRAINED, axes=BOXED); > > plot3d(sin(x)*sin(y), x=-Pi .. Pi, y=-Pi .. Pi); !Haple Moo...... セi@ IMapie CPU 11 ... o.o! !lnt..-face Iiooo,". RTNセA@

Bild B.t Die Arbeitsblatt-Schnittstelle

Bei der Arbeitsblatt-Schnittstelle erscheint die graphische Ausgabe in einem eigenen Fenster. Urn Graphik zu einem Arbeitsblatt hinzuzufiigen, wahle man den Copy-Befehl im Edit-Menu des Graphikfensters. AnschlieBend wahle man Paste im Arbeitsblatt-Fenster, urn die Graphik genau unter der gegenwlirtigen Kursorposition im Arbeitsblatt einzusetzen. In den folgenden Abschnitten beschreiben wir die verschiedenen Menus und Knopfe der ArbeitsblattSchnittstelle, so wie sie beim X-Window-System vorkommen. Einige in anderen Versionen (meist MS-Windows) vorkommenden Befehle werden hier auch aufgefiihrt. Die Schnittstelle des Lesers kann von der hier beschriebenen Version etwas abweichen. Man sollte dann in das mit dem System gelieferte Handbuch "Getting Started" schauen oder sich durch die On-Line-Hilfe arbeiten, urn speziellere Informationen zur vorliegenden Schnittstelle zu erhalten.

Knopfe Direkt unter der Menuleiste im Haupt-Arbeitsblatt-Fenster tindet man drei Knopfe (eng!. buttons). Der erste zeigt an, von welcher Art die gerade aktive Region ist. Indem man diesen Knopf "drUckt", kann man den Typ der Region veriindern. Man kann z. B. eine Maple-Ausgabe in einfachen Text verwandeln oder auch einfachen Text in eine Maple-Eingabe konvertieren. Der zweite Knopf, Interrupt, unterbricht die gerade ablaufende Rechnung. Man kann dies aIs Alternative zur Unterbrechungstaste benutzen. Mit dem dritten Knopf, Pause, kann man das Vorspie1en mehrerer Zeilen von einer Schleife oder von Ausgabe, die von einer Folge von Anweisungen stammen, anhalten. Klickt man Pause nochmal an, wird mit der Ausgabe der Ergebnisse auf dem Bildschirm fortgefahren.

71

B Die Benutzeroberflache

File-Menu Das File-Menu steuert das Einladen und Abspeichern von Arbeitsblattern, deren Ausgabe und auch das Verlassen. New Erzeuge ein neues Arbeitsblatt, IOsche dabei das aktuelle kornplett. Maple ersucht urn Bestatigung bevor es diesen Befehl ausfiihrt. Open Offne ein vorher abgespeichertes Arbeitsblatt oder eine ".ms"Datei. Man hat die Moglichkeit, zur gleichen Zeit auch den Kernel zu laden. Es wird angenommen, daB dieser sich in einer ".m" Datei mit demselben Namen wie die geladene ".ms" Datei befindet. Save Speichere das Arbeitsblatt abo Sollte das Arbeitsblatt neu sein und noch keinen Namen besitzen, so wird stattdessen Save As ausgefiihrt. Save As Verlangt Eingabe eines Namens und speichert das Arbeitsblatt unter diesem Namen abo Dies sollte eine ".ms" Datei sein. Man hat dabei auch die Moglichkeit, den Kernel a\s ".m" Datei abzuspeichern. Unter MS-Windows kann man in Arbeitsblatt-Format abspeichern, indem man eine Datei mit Zusatz ".ms" angibt; gibt man einen beliebigen Dateinamen ohne diesen Zusatz an, wird im einfachen Textformat abgespeichert. Der Status des Kernels kann abgespeichert werden, indem man die Option Save Session State im Option-Menu spezifiert. Export As LaTeX Speichere das Arbeitsblatt in einer Form ab, die von IbTEXverarbeitet werden kann. Spezielle Umgebungen formatieren Eingaberegionen, hochauflosende (hi-res) Ausgaberegionen und auf Zeichen basierende Ausgaberegionen. Textregionen werden a\s Paragraphen forrnatiert. Graphikregionen werden ignoriert, aber es gibt ein IbTEXMacro zum Einfiigen von Postscript-Dateien. Die Style-Dateien befinden sich im Unterverzeichnis etc des Hauptverzeichnisses von Maple und entha\ten Definitionen filr die benutzten Umgebungen und Macros. Dieser Befehl ist neu in Maple V Version 3. Unter MS-Windows ist dieser Befehl eine Option in der Save As Dialogbox.

Export As Text Speichere das Arbeitsblatt a\s Textdatei abo Unter MS-Windows ist dieser Befehl eine Option in der Save As Dialogbox. Import Text Importiere eine Textdatei in ein Arbeitsblatt. Sollte es sich bei der Datei urn ein a\s einfacher Text abgespeichertes Maple-Arbeitsblatt handeln, muB man sich vergewissern, daB der Indikator "Use Maple prompts to identify input" aktiv ist. 1st die Datei eine Foige von Maple-Befehlen, die vom Benutzer selbst erzeugt wurden, so muB man diesen Indikator abstellen. Include Einlesen einer Textdatei in eine Region des Arbeitsblatts. Handelt es sich bei der Region urn eine Textregion, so wird die Information a\s Text formatiert; handelt es sich urn eine Eingaberegion, so wird sie a\s Foige von Maple-Befehlen behandelt. 1m zweiten Fa\1 kann man nach Einladen der Datei die iENTERtTaste driicken und die gerade eingelesenen Befehle werden ausgewertet. Print Abspeichern des Arbeitsblatts in einem zum Ausdrucken geeigneten Format, z. B. PostScript. Man kann die GroBe der Seite sowie der Freiraume angeben. Unter MS-Windows kann man rnittels Print das Arbeitsblatt direkt ausdrucken, Printer Setup wahlt die GroBe des Papiers und seine Orientierung aus und Page Margins stellt die Freiraume auf den Seiten zum Ausdruck ein. Exit Verlasse die Sitzung, wobei samtliche Information, die nicht abgespeichert wurde, zerstOrt wird. Maple verlangt nach Bestatigung, bevor dieser Befehl ausgefiihrt wird.

72

B.l Die Arbeitsblatt-Schnittstelle

Edit-Menu Viele der Befehle aus dem Edit-Menu operieren auf Text, der vorber mit Hi!fe der Maus oder spezieller Tasten ausgewlihlt wurde. Urn einen gewissen Tei! eines Arbeitsblatts auszuwlihlen, k1icke man mit der (Iinken) Maustaste an den Anfang des auszuwlihlenden Gebietes, dann ziehe man die Maus zum Ende des Gebietes und gebe dann die Maustaste frei. Das ausgewlihlte Gebiet ist herausgehoben. Man kann einen beliebigen Tei! einer Eingaberegion oder einer Textregion auswlihlen, aber man kann nur eine komplette Graphik- oder ,,hi-res"-Region 1 auswlihlen. Urn einen Tei! einer Ausgaberegion darzusteIlen, muB das Format erst auf den Textstil ..pretty print' eingestellt werden. Man kann Regionen auch mit der Tastatur auswlihlen. Unter X geschieht dies dorchl CONTROLl-G; die gesamte Region, in der der Kursor gerade positioniert ist, wird ausgewlihlt. Cut LOsche a1les aus dem Arbeitsblatt, was zor Zeit ausgewlihlt ist und speichere es in einem speziellen, Clipboard genannten Puffer abo Das Clipboard wird nieht auf dem Bi!dschirm angezeigt. Copy Kopiere a1les aus dem Arbeitsblatt, was zor Zeit ausgewlihlt ist in den Puffer Clipboard hinein. Das ursprUngliche Material verbleibt im Arbeitsblatt. Paste Kopiere den gesamten Inhalt des Puffers Clipboard in das Arbeitsblatt und zwar an die Stelle, wo der Kursor sich gerade befindet. Das kopierte Material verbleibt im Clipboard, sodaS man dieselbe Information mehrmals einkopieren kann, ohne das Clipboard neu zu laden. Delete Selection LOsche das ausgewlihIte Material des Arbeitsblatts ohne es in den Puffer zu kopieren. Delete Cursor Region LOsche die gesamte Region, in der der Kursor sich gerade befindet. Das Material wird nicht in den Puffer Clipboard einkopiert. Delete By Type Spiel ein Untermenu vor, mit dem man jede Region eines bestimmten Typs im Arbeitsblatt loschen kann: Eingabe-, Ausgabe-, Text-, Graphik-, oder Trennregionen. Diese Regionen werden nicht in den Puffer kopiert. Unter MS-Windows heiSt dieser BefehI Remove All und er befindet sich im Format-Menu. Delete to End of Session Losche jede Region unterhalb der aktuellen Kursorposition. Wiederum wird dieses Material nieht im Puffer Clipboard abgespeiehert. Insert Prompt Fiige einen Prompt genau unterhalb der aktuellen Kursorposition ein. Man kann diesen Befehl dazu benutzen, eine Textregion abzusehIieBen und wieder mit der Eingabe von Maple-Befehlen zu beginnen. MS-Windows besitzt einen Befehl Insert New Region im Format-Menu, urn eine neue Region entweder oberhalb oder unterhalb der aktuellen Region anzufiigen. Insert Text Fiige eine Textregion unterhalb der Region ein, auf die der Kursor gerade zeigt. Insert Separator Fiige eine Trennregion unterhalb der Region ein, auf die der Kursor gerade zeigt. Split Region at Cursor Splitte eine Eingabe- oder Textregion auf in zwei Regionen und zwar an der gegenwiirtigen Kursorposition. Unter MS-Windows befindet sieh dieser Befehl im Format-Menu. 1 Anm. d. OIlers.: Der Begriff ,,hi-res" leitet sieh von ,.high resolution" ab, was ,.hoehaufiosend" bedeutet. Es bezieht sieh auf die Bildsehirmaufiosung, die notig ist, urn dies darzustellen.

73

B Die Benutzeroberfliiche Join Region at Cursor Fasse zwei benachbarte Eingabe- oder Textregionen zu einer Region zusammen: die gerade aktive Region und die, die sich unmittelbar darunter befindet. Unter MS-Windows befindet sich dieser Befehl im Format-Menu.

View-Menu Reformat Cursor Region Formatiere die den Kursor enthaltende Ausgaberegion gemii6 den gegenwartig im OptionsMenu gesetzten Formatoptionen urn. Reformat Session Formatiere aile Ausgaberegionen gemii6 den gegenwartig im Options-Menu gesetzten Formatoptionen urn. Show Regions Das Einschalten dieses Schalters hat zur Folge, daB diinne oder gestriche1te Linien die Grenzen der einzelnen Regionen des Arbeitsblatts anzeigen. Beim Ausschalten dieser Option verschwinden diese Linien. Execute Worksheet Fiihre jeden Befehl des Arbeitsblatts aus. Dieser Befehl ist neu in Maple V Version 3. In MS-Windows befindet sich dieser Befehl im Format-Menu.

Options-Menu Output Mode Bestimmt das Format der Maple-Ausgabe im Arbeitsblatt. Mit einem Untermenu kann man aus den folgenden Optionen auswiihlen: Line Print, Pretty Print, oder Hi-res Print. Diese Einstellungen entsprechen einem Wert der Variablen prettyprint von D, 1 bzw. 2. Beispielsweise erzeugt die Eingabe des folgenden Maple-Befebls im Hi-Res-Modus die Ausgabe in druckgesetzter Form: + beta*Diff(f(x) ,x) + Int(c[O]/sqrt(t), > 。ャーィJクセS@ t=exp(l) .. Pi);

1m Pretty-Print-Modus erzeugt dasse1be Kommando eine zwei-dimensionale Ausgabe als einfachen Text: pi 1 c[O] 3 1 d \ 1 alpha x + beta 1---- fIx) 1 + dt I 1/2 \ dx 1 1 t 1 exp(l) 1m Line-Print-Modus wird das Ergebnis in einer Zeile ausgegeben: 。ャーィJクセSK「・エdゥヲHILiョ」{o}OQR]@

.. pi)

Der voreingestellte Modus ist Hi-res Print. Hat man den Modus geandert, bleibt das Arbeitsblatt solange unverandert, bis man einen der Umformatierungsbefehle aus dem View-Menu aufruft. Output Fontsize Bestimmt die Zeichengr6Be filr ,.Hi-Res"-Ausgabe. Zur Auswahl stehen Large, Medium oder Small. Voreingestellt ist Medium. Unter MS-Windows wird dies mit Hilfe des Befehls Math Style des Format-Menus, sowie durch die Funktion Output Mode realisiert. 1m Gegensatz zu X wird bei MS-Windows automatisch neu formatiert, sobald der Ausgabemodus oder die Gr6Be des Zeichensatzes modifiziert wurde.

74

B.1 Die Arbeitsblatt-Schnittstelle Change Fonts Verlindert einen der Zeichenslitze des Arbeitsblatts. Spezifiert man diesen Befehl, so erscheint ein Untermenu bestehend aus flinf Befehlen. Mit den ersten drei kann man den Zeichensatz verlindern, der bei jeder Eingaberegion, Ausgaberegion oder Textregion benutzt wird. Mit der vierten Option verlindert man nur den Zeichensatz der Region, in die der Kursor gerade zeigt. Mit der fiinften Wahl kann man den Zeichensatz der aktiven Region auf den Standardzeichensatz zUriicksetzen, der gewohnlich in dieser Region Verwendung findet. Verlindert man einen Zeichensatz, so hat man immer auch die Gelegenheit, den zur Ausgabe des Arbeitsblatts auf einem Postscript-Drucker benutzten Zeichensatz zu verlindern. Die meisten dieser Funktionen sind auch unter MS-Windows vorhanden - man findet sie unter dem Befehl Fonts im Format-Fenster. Show Status Bar Ein Schalter, der die Anzeige von Statusinformation im unteren Teil des ArbeitsblattFensters steuert. Die Leiste enthlilt Statistiken zum benutzten Speicherplatz und zur verbrauchten CPU-Zeit; die Voreinstellung ist so, daB diese Leiste sichtbar ist. Unter MS-Windows erscheint die Status-Information in einem eigenen Fenster und die Voreinstellung ist die, daB dieses Fenster nicht sichtbar ist. Der Menu-Befehl urn dieses Fenster wechselseitig sichtbar zu machen und wiederverschwinden zu lassen lautet Status Window. Automatic Separators Ein Schalter, der steuert, ob ein Trenner nach jeder Ausgaberegion ausgegeben wird oder nicht. In der Voreinstellung ist dieser Schalter aktiv. Das Ausschalten dieser Option hat keinen Effekt auf bereits vorhandene Trenner. Urn diese zu IOschen, muS man den Befehl Delete By Type im Edit-Menu benutzen. Replace Mode Mit diesem Schalter steuert man die Positionierung der Ausgabe bei wiederholter Ausfiihrung eines Befehls. 1st dieser Schalter eingestellt, das ist die Voreinstellung, so ersetzt die neue Ausgabe die alte. 1st der Schalter aus, so wird die neue Ausgabe in eine neue Region eingefiigt, die sich unmittelbar iiber der alten Ausgabe befindet. Die MS-Windows-Schnittstelle enthlilt mehrere zuslitzliche Befehle im Options-Menu, die wir bis jetzt noch nicht erwahnt haben. Der Befehl Show Prompts schaltet die Anzeige eines Prompts am Anfang einer jeden Eingaberegion wechselseitig an oder aus. Der Befehl Confirmation Checks erlaubt es, die Bestlitigung von Befehlen wie New und Exit zu unterdriicken. Show Tool Bar (neu in Maple V Version 3) schaltet die Anzeige der Leiste von Piktogrammen am oberen Rand des Arbeitsblatts wechselseitig an und aus. Mit dem Befehl Fast Graphics Redraw kann man

dreidimensionale Graphiken im Hauptspeicher halten, urn sie schneller neu zeichnen zu konnen; das hat allerdings einen erhohten Speicherplatzbedarf zur Folge. Automatic Save Settings bewirkt, daB die Einstellung aller Optionen automatisch mit abgespeichert wird, sobald man eine Sitzung verlliBt. Save Settings (im File-Menu) speichert die Einstellungen der Optionen direkt abo Obwohl diese Befehle nicht zur Schnittstelle unter X gehoren, kann man doch einige dieser Befehle imitieren, indem man die X-Resourcen geeignet setzt (siehe Seite 80).

Help-Menu Das Hilfsmenu dient zum Starten des Programms, welches Hilfsinformation zu eingegebenen Stichworten direkt anzeigt, dem sogenannten Browser. Ferner erlaubt das Hilfsmenu, auf Informationen zur Benutzerschnittstelle und zur aktuellen Version von Maple zuzugreifen. Help Browser Startet das Programm zum Anzeigen von Hilfsinformation (Browser) in einem eigenen Fenster. Der Browser ordnet aile Maple-Befehle gemliB Funktion und erlaubt schnellen Zugriff auf Hilfsinformation zu einem gewissen Befeh!. Zur obersten Ebene des Browsers gehoren vier Hauptstichworte; diese sind in der ganz links stehenden Spalte aufgefiihrt: Graphik, Mathematik, Programmierung und System. Ein Stichwort gefolgt von drei Punkten besitzt Unterstichworte. Wahlt man eines dieser Stichworte aus, so wird die nlichste Spalte mit den Unterstichworten aufgeflillt und so weiter his man schlieBlich einen Maple-Befeh! ausgewahlt hat. Eine kurze zusammenfassende Erkllirung des Befehls erscheint dann in einem Kasten im unteren Teil des Fensters und der Help-Knopf ist dann aktiv. Drlickt man

75

B Die Benutzeroberftache Help, so wird der Hilfstext zu diesem Stichwort in einem gesonderten Fenster angezeigt. Durch Betatigen des Close-Knopfes (oder Cancel bei einigen Systemen) verlaBt man den Browser. In Bild B.2 ist ein Beispiel dargestellt. SoAIt r:-op -,I interface{indentamount=2); > interface (indentamount) ;

2 Die allen Maple-Plattformen gelaufigen Sehnittstellenvariablen werden in diesem Absehnitt besehrieben. Die Variablen, die die Erzeugung von Graphiken betreffen, sind in einer Gruppe zusammengefaBt. echo Legt fest, wann Eingabebefehle an die Ausgabe weitergegeben werden, d. h. die Eingabe erseheint als Ausgabe noehmal auf dem Schirm. Fiir interaktive Sitzungen ist dies nur von begrenztem Wert, aber wenn man die Ausgabe in eine Datei sehreiben will, z. B. mit der Funktion writeto oder wenn man Maple als Stapelverarbeitung laufen lassen will, so erweist sieh dies oft als niitzlieh. Die Variable echo wird von quiet iiberstimmt: 1st quiet gesetzt, so erseheint die Eingabe nieht noehmal als Ausgabe. Man kann dieser Variablen fiinf versehiedene Werte zuweisen: ODie Eingabe erseheint niemals noehmals. Gib die Eingabe als Ausgabe aus nur dann, wenn die Ausgabe nieht an den Bildsehirm geht, oder wenn die Eingabe nieht von der Tastatur stammt. Gib die Eingabe nieht aus, wenn Eingabe mit read gelesen wird. Dies ist die Voreinstellung. 2 Gib die Eingabe als Ausgabe aus nur dann, wenn die Ausgabe nieht an den Bildsehirm geht, oder wenn die Eingabe nieht von der Tastatur stammt. 3 Gib die Eingabe als Ausgabe aus nur dann, wenn die Eingabe mit read gelesen wird. 4 Gib die Eingabe immer aueh als Ausgabe aus. endcolon Zeigt an, ob die letzte Eingabeanweisung mit einem Doppelpunkt beendet wurde oder nieht. Gibt entweder True oder False zuriiek. Diese Variable kann mit dem interface-Befehl nur abgefragt, aber nieht gesetzt werden. errorbreak Legt fest, wie Maple sieh verhiilt, wenn in der Eingabedatei ein Fehler gefunden wird. Diese Variable ist neu in Maple V Version 2.

o

Fahre mit dem Einlesen der Datei fort, aueh wenn ein Fehler auftrat. Dies entsprieht dem Verhalten von Maple V. Beende das Einlesen der Datei, sobald ein Fehler auftrat. Damit verhindert man das Auflisten aller Foigefehier. Dies ist die Voreinstellung fiir Version 2 und Version 3.

2 Beende das Einlesen der Datei sobald ein Fehler auftritt; einsehlieBlieh eines Fehlers bei der Befehlsausfiihrung. Bei einigen Systemen kann man diese Variable mit einer Option des Befehls setzen, mit dem man Maple aufruft. Bei Unix ist dies die -e-Option, gefolgt vom gewiinsehten Wert. indentamount Die Anzahl der Zeichen, urn die naehfolgende Zeilen eingeriiekt werden, wenn ein Befehl mehrere Ausgabezeilen erzeugt. Dies ist aueh die Anzahl von Einriickungszeiehen beim Formatieren einer Prozedur, sowie die Entfemung zweier aufeinanderfolgender Tabulatorenstopps bei Maple-Eingabe. Voreingestellt ist der Wert 4. iris Der Name und die Versionsnummer der Benutzersehnittstelle. Diese Variable kann mit dem Befehl interface nur gelesen, nieht aber gesetzt werden. Dies ist neu in Maple V Version 3. labeling oder labelling Ermoglieht oder verhindert den Gebraueh von Bezeiehnungen (%1, %2, etc.) zum Ersetzen von Teilausdriicken bei langen Ausgabeausdriicken. Mogliche Werte sind True oder False. Voreingestellt ist True.

89

B Die Benutzeroberfliiche labelwidth Die minimale Llinge, die ein Teilausdrucks in einem langen Ausdruck haben muS, urn durch eine Bezeichnung wie % I ersetzt werden zu konnen. Der voreingestellte Wert lautet 20. prettyprint Stellt ein, wie Maple-Ausgabe dargestellt wird. Die moglichen Werte unter Maple V Version 2 sind:

o Benutze Iprint urn Ergebnisse linear auszudrucken. Auf diese Weise ausgedruckte Ergebnisse konnen als Maple-Eingabe verwendet werden. Benutze zweidimensionale, auf Text basierende Form, urn Ergebnisse auszudrucken. Dies ist die Voreinstellung bei der Befehlszeilenschnittstelle. 2 Benutze das ,.hi-res" Format, die gewohnliche mathematische Schreibweise fUr Graphikgeriite. Dies ist die Voreinstellung bei der Arbeitsblattschnittstelle. Man kann diese Variable auf einen groSeren Wert setzen, aber die Ausgabemethode bleibt die fUr das jeweilige Germ bestmogliche. Unter Maple V kann diese Variable die Werte True oder False haben. Aus KompatibilitlitsgrUnden sind diese Werte auch noch fiir spiitere Versionen zuUissig. False entspricht dem Wert Null, lineare Ausgabe und True entspricht dem Wert Eins, also textgestUtzte Ausgabe.

printfile . Zeigt die Datei mit dem entsprechenden Namen. Eventuell wird ein Programm zum schnellen Anzeigen benutzt, das der Benutzerschnittstelle zur Verfiigung steht. Dies wird fUr die Hilfsfunktionen benutzt. prompt Die Zeichenkette, die dann erscheint, wenn Eingabe yom Benutzer erwartet wird. Bei der Befehlszeilenschnittstelle wird diese Variable zusammen mit der Variablen screenwidth inspiziert, urn zu entscheiden, wieviel Platz auf der Befehlszeile zur VerfUgung steht, bevor der Bildschirrn nach rechts verschoben wird. Die Voreinstellung bei der Befehlszeilenschnittstelle ist normalerweise '> quiet 1st dieser Schalter gesetzt, so werden aile Start- und Statusmeldungen unterdrUckt (Logo, Speicherplatz -und CPU-Verbrauch, Prompt). Diese Einstellung ist fUr Maple-Programme in Stapelverarbeitung nUtzlich. Die Voreinstellung ist False. Bei einigen Systemen kann man diese Variable mit einer Option zum Startbefehl setzen. In Unix ist dies die Option -q. screenheight Die Anzahl der Textzeilen auf dem Bildschirm. screenwidth Die Anzahl der Zeichen, die auf eine Bildschirrnzeile passen. Bei der Befehlszeilenschnittstelle wird diese Variable benutzt, urn zu bestimmen, wie lang eine Ausgabezeile maximal sein kann, sowie (zusammen mit der prompt- Variablen) urn zu entscheiden, wieviel Platz auf der Befehlszeile zur Verfligung steht, bevor der Bildschirm nach rechts verschoben wird. Der Minimalwert dieser Variablen ist 10. verboseproc Legt fest, ob Prozedurenkorper beim Einlesen in die Maple-Sitzung mit read oder readl ib oder bei der expliziten Ausgabe mit pr in t mit ausgedruckt werden. Die moglichen Werte sind:

o Drucke den Korper einer beliebigen Prozedur niemals aus. Drucke stattdessen eine AbkUrzung der Form:

proc (f)

...

end

Drucke yom Benutzer definierte Prozeduren aus, wenn sie eingelesen oder expJizit ausgedruckt werden, aber drucke keine der Maple-Bibliotheksroutinen aus. Dies ist die Voreinstellung. 2 Drucke aile Prozeduren aus, wenn sie eingelesen oder explizit ausgedruckt werden.

90

B.2 Die Befehlszeilenoberflache version In Maple V Version 3 gibt dies die gerade laufende Version von Maple an. In Version 2 ist es der Name und die Versionsnummer der Benutzerschnittstelle. Diese Variable kann nieht mit dem interface-Befehl gesetzt, sondem nur abgefragt werden. warnlevel In Maple V Version 3 wird angenommen, daB eine in einer Prozedur benutzte, undeklarierte Variable lokal ist, wenn sie auf der linken Seite einer Zuweisung auftaucht oder wenn sie die Indexvariable einer f or-Schleife oder einer seq-Anweisung is!. Diese Schnittstellenvariable bestimmt, ob Wammeldungen ausgegeben werden, sobald Prozeduren definiert werden, bei denen undeklarierte Variablen vorkommen, die dann implizit als lokal definiert sind. Wammeldungen werden ausgedruckt, wenn der Wert 1 ist (die Voreinstellung); nichts wird ausgegeben, wenn der Wert 0 is!. Diese Variable ist neu in Maple V Version 3. wordsize Die GroBe eines Maschinenworts. Diese Variable ist neu in Maple V Version 3. Sie kann mit dem interface-Befehl nur gelesen, nicht aber gesetzt werden.

Graphik Die folgenden Schnittstellenvariablen legen fest, wie Graphiken dargestellt und in Dateien abgespeichert werden. plotdevice Die Art des Graphikmediums, fiir das die Graphiken erzeugt werden; dies bezieht sich sowohl auf interaktives Darstellen von Graphiken als auch auf Abspeiehem in Dateien. Wenn man die Befehlszeilenschnittstelle benutzt und das Sichtgeriit einen Graphikmodus wie ReGIS oder Tektronix unterstiitzt, so kann man diese Variable eventuell so einstellen, daB man sich die Graphiken interaktiv anschauen an. Steht ein graphikf bewirkt, daB das Sichtgeriit in TektronixEmulationsmodus umschaltet, so sollte man die Sitzung so konfigurieren, daB in diesen Modus nur nach einer Verzogerung von zwei Sekunden umgeschaltet wird sobald Graphik mit angefordert wird. Dies kann man mit dem folgenden Befehl erreichen: >

interface(preplot = [-2, 27, 126, 62]);

Siehe Hilfsinformation zu plot[setup] zur Beschreibung einiger oft vorkommender Folgen. postplot Eine Liste von Zeichenkodierungen, die das Sichtgeriit von Graphikmodus zurUck in den Textmodus umschalten, nachdem 1RETURN 1im Graphikschirm eingegeben wurde. Die Zeichenkodierungen sind ganzahlige Werte des auf dem Rechner vorhandenen Zeichensatzes. Wie bei preplot, gibt ein negativer Wert eine Verzogerung gemessen in Sekunden an. Siehe Hilfsinformation zu plot[setup] zur Beschreibung einiger oft vorkommender Folgen.

91

B Die Benutzeroberftache terminal Setzt die Schnittstellenvariablen so, daB Graphik auf jedem der gangigsten Bildschirme erzeugt werden kann. Setzt man diese Variable auf einige der bekannten Schirmtypen (gewohnlich HP2393A, kd500g, vt240 und xtek), so werden die richtigen Werte auch filr plotdevice, preplot und postplot eingestellt. Die bekannten Schirmtypen sind unter dem "terminal" -Verzeichnis in der Bibliothek aufgelistet. Der Befehl plotsetup stellt eine bequeme Moglichkeit dar, Schnittstellenvariablen zur Kontrolle von Graphik in den meisten Hillen zu setzen.

Andere Schnittstellenbefehle Wir listen hier einige zusatzliche Befehle zur Steuerung der Haufigkeit von Statusmeldungen und zum Zeichnen von Graphiken unter der Befehlszeilenschnittstelle.

Statusmeldungen Unter der Befehlszeilenschnittstelle gibt Maple manchmal Statusmeldungen aus, die angeben, wieviel Speicherplatz insgesamt in der Sitzung verbraucht wurde (in Bytes), wieviel Speicherplatz insgesamt der Sitzung zugewiesen wurde (ebenfalls in Bytes) und wieviel CPU-Zeit insgesamt von der Sitzung verbraucht wurde. (Unter der Arbeitsblattschnittstelle erscheint diese Information in einem abgetrennten Statusbereich, manchmal auch in einem eigenen Fenster.) Eine Statusmeldung sieht folgendermaBen aus: bytes used=5001188, alloc=851812, time=14.78 Maple gibt normalerweise eine Statusmeldung aus, sobald eines der folgenden Ereignisse auftritt: 1. Es wurden zusatzliche n Worte an Speicherplatz von der Maple-Sitzung verbraucht, wobei n der Wert von status [4] ist. 2. Eine Sammlung unbenutzter Speicherplatzfragmente (garbage collection) wird durchgeftihrt, dabei wird nicht mehr benutzter Speicherplatz freigegeben. 3. Man verHillt die Maple-Sitzung. Man erhaIt dieselbe Information (und sogar etwas mehr), wenn man den Wert der statusVariablen abfragt. Man kann die Haufigkeit der Meldungen, die von QueUe Nummer 1 stammen, mit Hilfe des Befehls words lindem. Der Befehl words (n) bewirkt, daB eine Statusmeldung immer dann erscheint, wenn wieder n zusatzliche Speieherplatzworte von der gegenwlirtigen Sitzung verbraueht wurden, wobei ein Wort normalerweise vier Byte entspricht. Ein Spezialfall istwords (0) ; damit verhindert man das Erseheinen von Statusmeldungen aus dieser Quelle. Bei vielen Plattformen ist dies die Voreinstellung. Man kann die Haufigkeit der von Quelle Nummer 2 stammenden Meldungen auf lihnliehe Weise lindem und zwar mit dem Befehl gc. Der Befehl gc (n) bewirkt ein Einsammeln unbenutzten Speieherplatzes immer dann, wenn die gegenwlirtige Sitzung n zusatzliche Speicherplatzworte verbraucht hat. Der besondere Befehl gc ( 0) verhindert die Ausgabe von Statusmeldungen wlihrend des Einsammeln unbenutzten Speicherplatzes, andert aber nieht die Haufigkeit des Einsammelns. Die folgende Zeile verhindert demnach den Ausdruek von Statusmeldungen wlihrend einer Sitzung voll und ganz: > words (0) : gc(O):

plotsetup Der Befehl plotsetup setzt die folgenden sehr oft die Graphikausgabe steuemden Schnittstellenvariablen: plotdevice, plotoptions, plotoutput, preplot und postplot. Will man zum Beispiel Graphiken in eine PostScript-Datei abspeichem, so werden die Plotvariablen durch den folgenden Befehl entspreehend geandert: > plotsetup(postscript);

Warning, plotoutput set to postscript.out by default

> interface(plotdevice);

ps

92

B.2 Die Befehlszeilenoberflache Wenn man ein Sichtgeriit vom Typ VT240 benutzt und zum Darstellen von Graphiken eine Tektronix-Emulation verwenden will, sollte man diesen Befehl ausprobieren: > plotsetup(tek, vt240); > interface(preplot);

[27,91,63,51,56,104] Eine Liste der vom System unterstiitzten Geriite- und Bildschirmtypen findet man auf der Hilfsseite zu plotsetup.

Stapelverarbeitung Auch bei Rechnern, bei denen die Arbeitsblattschnittstelle zur Verfiigung steht, ist die Befehlszeilenversion dann sehr niitzlich, wenn man Maple-Programme im Stapelverarbeitungsmodus laufen lassen will. Dabei werden aile Befehle vorher aufgeschrieben und in eine Datei abgespeichert. Die Befehle werden dann nacheinander in einer Foige abgearbeitet. Urn Maple im StapeIverarbeitungsmodus ablaufen zu lassen, muG man die Foige von Befehlen zuerst in eine Datei schreiben. Man kann nach Syntaxfehlern fahnden, indem man die Parameter im Programm auf k1eine Werte veriindert und die Datei dann in eine interaktive Maple-Sitzung einliidt. 1st dies ohne Probleme moglich, sollte man einige Zeilen hinzufiigen, urn das Programm dann ohne Intervention vom Benutzer laufen zu lassen. • Man sollte Ausgabe explizit behandeIn. Dies kann auf mehrere Arten geschehen. Die einfachste Methode ist, writeln einmaI am Anfang der Datei auszufiihren, urn somit siirntliche Ausgaben in die benannte Datei umzuleiten. Man kann aber ebenso am Anfang der Liste von Befehlen eine Ausgabedatei mit open Offnen und dann mittels wri te ausgewiihlte Ergebnisse dort hineinschreiben. Bei einigen Systemen, z.B. Unix-Rechnern, kann man die Ausgabe auf einfachem Wege steuern, indem man aile Ergebnisse, die normaIerweise auf dem Schirm erscheinen wiirden, in eine Datei umleitet. • Man setze die Schnittstellenvariable quiet auf true. Damit verhindert man die Ausgabe von Information, die normaIerweise nur im Eingabemodus von Nutzen is!: das Logo, Eingabeaufforderungen und Statusmeldungen. Bei manchen Systemen kann man die quietVariable direkt beim Aufruf von Maple mittels einer Option setzen. In Unix ist dies die Option -q. • Man setze die Schnittstellenvariable echo, urn die Ausgabe von Eingabezeilen zu kontrollieren. In der Voreinstellung erscheinen bei Stapelverarbeitung alle Eingabezeilen nochmaIs aIs Ausgabe. • Man sollte eine qui t-Anweisung ans Ende des Programms anhiingen. Ohne eine solche Anweisung schaItet Maple moglicherweise in interaktiven Modus urn, nachdem die Befehle abgearbeitet wurden. Man kann bei manchen Systemen Maple auch aIs Filter laufenlassen, sodaB bei Erreichen des Dateiendes das Programm automatisch terminiert. Unter Unix speziefiert man den Filtermodus durch die Option - f beim Aufruf von Maple. Bei vieIen Systemen lautet der Befehl zum Aufruf der Befehlszeilenversion von Maple einfach maple. Unter Unix kann man ein Maple-Program in Stapelverarbeitung mit dem folgenden Befehl aufrufen: maple -q -f < inputfile & Will man die Ausgabe umleiten, sieht der Befehl folgenderma&n aus: maple -q -f < inputfile > outputfile & Hierbei zeigt das nachfolgende & an, daB Unix das Programm im Hintergrund ablaufen lassen soli, so daB der Benutzer andere Dinge tun kann, wiihrend das Programm lliuft.

93

C

Liste der Sachgebiete

In diesem Kapitel listen wir aile Maple-Befehle, -Optionen und -Hilfsinformationen nach Sachgebiet geordnet auf. Die vier Hauptkategorien sind Graphik, Mathematik, Programmierung und System. Jede dieser Kategorien ist weiter in Teilkategorien unterteilt, we1che manchrnaI noch weiter untergliedert sind. Maple-Befehle sind in der Grundschrift dargestellt. Ein Befehl, der in einem Paket definiert ist, wird mit dem Paketnamen vorangestellt aufgelistet, gefolgt yom Befehlsnamen in eckigen Klammem, z. B. ,JinaIg[det]". Ein in einem Unterpaket definierter Befehl wird iihnlich behandelt, z. B. "stats[fit, 1eastsquare]". Sonstige Bibliotheksfunktionen, die man explizit einladen muB, 「・yセイ@ man sie aufrufen kann (siehe Seite 56) sind durch einen nachgestellten Stem (*) gekennnzeichnet, z. B. "C *". Die meisten dieser Funktionen werden geladen, indem man den Funktionsnamen aIs Argument zum readlib-Befehl benutzt, etwa readl ib (C) . Einige der Sonstigen Bibliotheksfunktionen sind aIlerdings unter einem anderen Namen definiert. Urn den Befehl minpoly zu benuzten, muB man bespielsweise readlib ( la t t ice) aufrufen. Dieser Fail ist mit "minpoly *lattice" in diesem Kapitel gekennzeichnet. Die zu Befehlen gehorenden Optionen sind auch aufgelistet. In den meisten Hillen stehen die Optionen hinter dem Befehlsnamen, wobei Befehlsname und Optionsname mit einem Schragstrich (I) abgetrennt sind, z. B. ,,normal/expanded", ,JinaIg[detlsparse]" und "C/optimized *". Die Graphikoptionen sind ein SpeziaIfaIl; sie sind in einem gesonderten Abschnitt Graphik aufgelistet, da sie zu sehr vielen verschiedenen Befehlen gehoren. Zu jeder Graphikoption geben wir auBerderm ein Schema oder eine Reihe von Wahlmoglichkeiten an, z. B. ,,numpoints =n" oder ,,arrows =(THIN, LINE, SLIM, THICK)". 1m letzteren Fail wird der voreingestellte Wert, sofem vorhanden, zuerst aufgelistet. Hilfsstichworte, die nieht einfach Maple-Befehle sind, werden auch aufgelistet. In diesem Kapitel beginnen aile Hilfsstichworte mit einem Fragezeichen (?). Befehle und Optionen, die neu zu Maple V Version 3 hinzugekommen sind, werden durch ein hochgestelltes Pluszeichen gekennzeichnet, z. B. "protect+-', ,,sqrtlsymbolic+", ,,student[Lineint]+" und "piecewise+ *". Befehle und Optionen, die Maple V Version 2 aber nieht mehr in Version 3 vorhanden sind, werden durch einen durchgestrichenen Kreis gekennzeichnet: ,JinaIg[range]0". Die benutzten Bezeichnungskonventionen sind in folgender Tabelle zusammengefaBt. Liste fen fen/option pkg[fen] pkg[fen/option] fen * fen/option * fen *name ?topic ?topie[subtopie] command+ commandO

Befehlstyp Eingebaut oder gewohnliehe Bibliotheksfunktion Standardfunktion, die eine Option akzeptiert In einem Paket definierter Befehl Funktion mit Option, weIche in einem Paket definiert ist Sonstige Bibliotheksfunktion Sonstige Bibliotheksfunktion mit Option Sonstige Bibliotheksfunktion, die in name definiert ist Hilfsstichwort Hilfsunterstichwort Neuer Befehl in Maple V Version 3 Befehl nieht mehr in Maple V Version 3 vorhanden

Beispiel sqrt eonvertlpolynom IinaIg[det] linaIg[detlsparse] FFT* iscontlc1osed * iFFT*FFT ?index ?index[library ] BerJekamp+ IinaIg[range]0

C.l Graphik C.l Graphik Zweidimensional networks[draw] plot plots[animate] plots[conformal] plots[display] plots[fieldplot] plots[gradplot] plots[implicitplot] plots[loglogplot] plots[logplot] plots[odeplot] plots[polarplot] plots[polygonplot] plots[replot]

plots[sparsematrixplot] plots [textplot] stats [statplots, boxplot] + stats[statplots, changecolour]+ stats [statplots, histogram] + stats [statplots, notchedbox] + stats[statplots, quantile]+ stats[statplots, quantile2]+ stats[statplots, scatterld]+ stats[statplots, scatter2d]+ stats[statplots, symmetry]+ stats[statplots, xscale]+ stats[statplots, xshift]+ stats[statplots, xyexchange]+

stats[statplot]0 student[leftbox] student[middlebox] student[rightbox] student[showtangent] typelPLOT ?plot[function] ?plot[infinity] ?plot[multiple] ?plot[parametric] ?plot[polar] ?plot[range] ?plot[structure]

Optionen Allgemein axes = (NORMAL, BOXED, FRAME, NONE) axesfont+ = [jamilie, stit, groesse] color oder colour = (black, aquamarine, blue, brown, coral, cyan, gold, gray, green, grey, khaki, magenta, maroon, navy, orange, pink, plum, red, sienna, tan, turquoise, violet, wheat, white, yellow, COLOR(RGB, r, g, b), COLOR(HUE, h» font+ = [jamilie, stil, groesse] labelfont+ = [jamilie, stil, groesse] scaling = (UNCONSTRAINED, CONSTRAINED) style = (LINE, PATCH, POINT) symbol+= (BOX CIRCLE, CROSS, DEFAULT, DIAMOND, POINT) titlefont+ = [jamilie, stil, groesse] a.. b linestyle+= n thickness+= n xtickmarks = n ytickmarks = n coords = polar numpoints = n tickmarks = [n"" ny] discont+= true plots[setoptions] title = str ?plot[options] labels =

resolution = n

[Sfr", , Sfry]

view+=

[Xl··X2,

Yl ..Y2]

?plot[stylel

Siehe Seite 23 fUr Details zu zweidimensionalen Plotoptionen.

Speziell networks [draw] plots[animate] plots[conformal] plots[display] plots [fieldplot] plots[gradplot] plots[implicitplot] plots[textplot]

Concentric(listl, ... ), Linear(listl, ... ) frames =n grid = [n"" nyl, nurnxy = [n"" ny] insequence = true grid = [n"" ny ], arrows = (THIN, LINE, SLIM, THICK) grid = [n"" ny ], arrows = (THIN, LINE, SLIM, THICK) grid = [n"" ny] align = (ABOVE, BELOW, LEFT, RIGHT)

Dreidimensional plot3d plots[animate3d] plots[contourplot] plots[cylinderplot] plots[densityplot] plots[display3d] plots [fieldplot3d] plots[gradplot3d]

plots [implicitplot3d] plots[matrixplot] plots[odeplotl plots[pointplot] plots[polygonplot3d] plots[polyhedraplot] plots [replot] plots[spacecurve]

plots [sphereplot] plots [surfdata] plots[textplot3d] plots[tubeplot] stats[statplots, changecolour]+ typelPLOT3D ?plot3d[structure]

95

C Liste der Sachgebiete Optionen Allgemein axes = (NONE, BOXED, FRAME, NORMAL) axesfont+= [familie, sti!, groesse] color oder colour = (black, aquamarine, blue, brown, coral, cyan, gold, gray, green, grey, khaki, magenta, maroon, navy, orange, pink, plum, red, sienna, tan, turquoise, violet, wheat, white, yellow, COLOR(RGB, r, g, b), COLOR(HUE, h),f) coords = (cartesian, cylindrical, spherical) font+ = [familie, sti!, groesse] labeJfont+= [jamilie, sti!, groesse] projection = (ORTHOGONAL, FISHEYE, NORMAL,p) scaling = (UNCONSTRAINED, CONSTRAINED) shading = (XYZ, XY, Z, ZHUE, ZGRAYSCALE, NONE) style = (HIDDEN, CONTOUR, LINE, PATCH, PATCHCONTOUR, PATCHNOGRID, POINT, WIREFRAME) symbol+= (BOX CIRCLE, CROSS, DEFAULT, DIAMOND, POINT) titlefont+ = [familie, sti!, groesse] view = ZI .. Z2 or [XI ..X2, YI •.Y2, ZI .. Z2] ambientlight = [r, g, b] tickmarks = [n x , ny, n z ] linestyle+= n contours+= c numpoints = n title = str grid = [nx, ny] orientation = [e, ¢] ?plot3d[colorfunc] labels = [str x , stry , str z ] plots [setoptions3d] ?plot3d[options] light = [¢, r, g, b] thickness+= n Siehe Seite 29 jar detaillierte lnformationen zu dreidimensionalen Plotoptionen.

e,

Speziell frames =n insequence = true grid = [n x , ny, nz], arrows = (THIN, LINE, SLIM, THICK) grid = [n x , ny, nz], arrows = (THIN, LINE, SLIM, THICK) grid = [nx, ny, nz] heights = histogram, gap = r polyscale = r, polytype = (tetrahedron, dodecahedron, hexahedron, icosahedron, octahedron) align = (ABOVE, BELOW, LEFT, RIGHT) radius = f, tubepoints = n

plots [animate3d] plots [display3d] plots [fieldplot3d] plots [gradplot3d] plots [implicitplot3d] plots [matrixplotl plots[polyhedraplot] plots [textplot3d] plots [tubeplot]

Differentialgleichungen DEtools[dfieldplot] DEtools[DEplot]

DEtools[DEplotl] DEtools[DEplot2]

DEtools[PDEplot] DEtools[phaseportrait]

plots [odeplot]

Optionen arrows = (THIN, LINE, SLIM, THICK) method = (rk4, backeuler, 'euler', impeuler,f) label = [ketl, ket2] oder [ketl, ket2, ket3] scene = [varl, var2] oder [var!. var2, var3] tickmarks = [nl, n2] oder [n!. n2, n3] array size = n iterations = n mparam = [args] grid = [n, m] limitrange = (false, true) stepsize = h

title = ket ?DEtools[options]

Graphikgerate interface/plotdevice interface/plotoptions+ interface/plotoutput interface/postplot interface/preplot

96

interface/terminal plotsetup plotsetup/plotdevice + plotsetup/plotoptions+ plotsetup/plotoutput+

plotsetup/preplot+ plotsetup/postplot+ ?plot[device] ?plot[setup]0

C.2 Mathematik

Blldschirme char kd404g kd500g mac regis tek vt100 wy99gt xlI

Dmcker und Speziaiformate bmp deskjet epson9hi canon epson24 girt cps epson9 hpgl

hplj ibm..mon laserjet paintjet postscript i300 ibm_pro In03 pcx postscriptc ibm ibmquiet oki92 pic ps

tiff toshiba unix

C.2 Mathematik

Algebra Algebraische Manipulation asubs * asubslalways * collect collect/distributed collect/recursive combine combinelabs+ combinelexp combinelln combinelpower combineIPsi combinelradical+ combinelradicaVsymbolic+ combinelsignum+

combineltrig convert expand Expand expandoff expandon factor Factor freeze * frontend indets invfunc * isolate * match

normal normaVexpanded Normal Normalizer op optimize * radnormal * radsimp rationalize+ * simplify simplify/assume+ simplify/atsign simplify/Ei simplify/GAMMA

simplify/hypergeom simplify/ln simplify/polar simplify/power simplify/radical simplifylRootOf simplify/sqrt simplify/trig ?simplify[siderelsl sort subs subsop thaw *freeze

Zahlkorper und Funktionenkorper AFactor AFactors alias Content convert/radical convertlRootOf Divide evaIa evaIalFactorllenstra evalaIFactorllinear evalaIFactor/trager evaIalFactors/lenstra evalaIFactors/linear evalaIFactorsltrager

evala/independent Expand factor Factor Factors Gcd Gcdex Indep irreduc Irreduc maxorder* minpoly *lanice Norm Normal

numtheory[factorEQ1+ numtheory[sq2factorl Prem Primfield Primpart Quo Rem Resultant RootOf roots simplifylRootOf Sprem sqrfree

Sqrfree Subres Trace typelaIgext typelalgfun typelaIgnum typelaIgnumext typelradext typelradfun typelradfunext typelradnum typelradnumext typelRootOf

Endliche Korper evalgf * GF* '+'*GF '-'*GF '·'*GF 'I' *GF

"'*GF O*GF hGF Convertln *GF ConvertOut *GF

extension *GF input*GF inverse*GF isPrimitiveElement *GF norm*GF

order*GF output*GF PrimitiveElement *GF random*GF trace*GF

modpol* Primitive Randpoly Randprime RootOf

Siehe auch C.2 Algebra: Polynome: Modulare Arithmetik (S. 99)

C.2 Zahlentheorie: Modulare Arithmetik (S. 109)

97

C Liste der Sachgebiete Grobnerbasen grobner[finduni] grobner[finite] grobner[gbasis] grobner[gbasislplex] grobner[gbasis/tdeg] grobner[gsolve] grobner[leadmon]

grobner[leadmonlplex] grobner[leadmonltdeg] grobner[normalt] grobner[normalflplex] grobner[normalfltdeg] grobner[solvable]

grobner[solvablelplex] grobner[solvableltdeg] grobner[spoly] grobner[spoly/plex] grobner[spoly/tdeg] ?simplify[siderels]

Gruppentheorie galois group[areconjugate] group[center] group[centralizer] group[convertldisjcyc] group[convertlpermlist] group[core] group[cosets]

group[cosrep] group[derived] group[DerivedS] group[grelgroup] group[groupmember] group[grouporder] group[inter] group[invperm]

group[isabelian] group[isnormal] group[issubgroup] group[LCS] group[mulperms] group[NormaiClosure] group [normalizer] group[orbit]

group[permgroup] group[permrep] group[pres] group[RandElement] group[ subgrel] group[Sylow] group[type/disjcyc]

Nichtkommutative Multiplikation &* convertlc *commutat c *commutat expand/&* *commutat commutat * convertl&* *commutat expand/c *commutat simplify/c *commutat

Polynome bernoulli bernstein * bspline * combinat[fibonacci] content Content convertlpolynom degree discrim divide Divide euler fixdiv* galois genpoly

icontent indets interp Interp lcm linalg[bezout] linalg[charpoly] linalg[companion] linalg[hermite] linalg[minpoly] linalg[ smith] linalg[sylvester] maxnorm minpoly *lattice norm

nurnapprox[hornerform] numapprox[minimax] numapprox[remez] numtheory[cyclotomic] polynom powseries[powpoly] prem Prem primpart Primpart quo Quo recipoly * rem Rem

resultant Resultant sign spline * sprem Sprem Subres subs translate * type/expanded typelmonomial type/polynom type/square ?polynomials ?polyrefs

Faktorzeriegung und Finden von Nullstellen AFactor AFactors allvalues allvaluesld Bedekamp+ convertlradical convertlRootOf convertlsqrfree DistDeg factor Factor Siehe auch C.2

factors Gcdex Factors irreduc fsolve Irreduc numtheory[cfracpol] fsolvelcomplex padic[rootp] fsolvelfulldigits ProbSplit+ fsolvelmaxsols GaussInt[GIfacpoly]+ proot * GaussInt[GIroots] psqrt * gcd realroot * Gcd rootbound * gcdex Aufiosen von Gleichungen und Rekursionen (S.

RootOf roots Roots solve split * sqrfree Sqrfree student[completesquare] sturmseq *sturm sturm * 110)

Manipulation von Polynomen collect collect/distributed collect/recursive compoly

98

convertlhorner convertlmathorner convertlpolynom convertlratpoly

sort coeff ldegree convertlseries convertlsqrfree sortlplex coeffs op sortltdeg lcoeff tcoeff degree expand

Mathematik: Approximationen Modulare Arithmetik Add Bedekamp+ chrem Chrem Coeff Constant Content convert/mod2 ConvertIn ConvertOut

Gcd Det modpol* Gcdex Monomial Diff dinterp * GetAlgExt msolve Discrim Hermite Multiply numtheory[mipolys] DistDeg Interp One Irreduc Divide Lcm Power Embed Lcoeff Powmod Eval powmod* evalgf * Ldegree mod Prem Expand d・セイ@ Factors ュッ、セQ@ Sie e auch C.2 Algebra: Endlic e Ktlrper (S. 97) C.2 Zahlentheorie: Modulare Arithmetik (S. 109)

Primitive Primpart ProbSplit+ Quo Randpoly Randprime ratrecon * Ratrecon Rem Resultant

Roots Shift sinterp * Smith Sprem Sqrfree Subtract Tcoeff UNormal Zero

Orthogonale Polynome chebyshev orthopoly[G]

orthopoly[H] orthopoly[L]

orthopoly[P] orthopoly[U] orthopoly[T]

Zufallspolynome randpoly randpoly/coeffs

randpoly/degree randpoly/expons randpoly/dense randpoly/terms

Randpoly Randprime

Rationale Funktionen asympt convert/confrac convert/parfrac convert/ratpoly denom frontend normal normal/expanded Normal

Normalizer numapprox[chebpade] numapprox[confracform] numapprox[homerform] numapprox[minimax] numapprox[pade] numapprox[remez] numer numtheory[cfrac]

numtheory[cfraclquotients] numtheory[cfraclregular] numtheory[cfraclsimple] numtheory[nthconver] rationalize+ * ratrecon Ratrecon singular *

sort subs thiele * type!fraction type/rational type/ratpoly type/square ?ratpolys

Student·Algebra student[changevar] student[combine] student[completesquare]

student[equate] student[intercept] student[isolate]

student[makeproc/slope] student[midpoint]

student[powsubs] student[slope]

Approximationen Reelle Zahlen ceil convergs * convertlbinary convert/confrac convert/double!ibm convert/double!maple convert/double!mips convert/double!vax convert/float convert/fraction convert/fraction/exact convert/octal convert/rational convert/rational/exact Digits evalf evalhf

FFf* Float floor fnormal frac fsolve fsolve!complex fsolve!fulldigits fsolve!maxsols harmonic iFFf*FFT minpoly Mattice numtheory[cfracpol] numtheory[cfrac] numtheory[cfraclcentered] numtheory[cfraclquotients] numtheory[kronecker]

numtheory[minkowski] numtheory[nearestp] realroot * round shake * surd+ * testfloat * testfloatldigits * testfloatlmodel * testfloatltest * trunc type/float type/negative tYpe/nonneg type/positive type/realcons ?solve[floats]

99

C Liste der Sachgebiete Funktionen asympt bernstein * chebyshev coeftayl * convert/confrac convert/polynom convert/ratpoly convert/series dsolvelnumeric eulermac * mtaylor* numapprox[chebpade] numapprox[chebyshev] numapprox[confracform]

numapprox[hornerform] numapprox[infnorm] numapprox[laurent] numapprox[minimax] numapprox[pade] numapprox[remez] numapprox[taylor] numtheory[cfrac] numtheory[cfrac/quotients] numtheory[cfraclregular] numtheory[cfrac/semisimple] numtheory[cfrac/simple] numtheory[cfraclsimregular]

numtheory[cfraclsubdiagonal] numtheory[cfraclsuperdiagonal] numtheory[nthconver]

o

order Order poisson * residue * series taylor typellaurent type/series type/taylor

Interpolation und Anpassen von Kurven bspline * dinterp * interp Interp sinterp *

spline/quartic * 'spline/makeproc' *spline stats[fit, leastsquare]+ stats[linregress]0

spline * spline/cubic * splineJlinear * spline/quadratic *

stats[multregress]0 stats[multregresslconst]0 stats[regression] thiele *

°

Siehe auch C.2 Analysis: Integration: Numerische Integration (S. 101) C.2 Analysis: Potenzreihen (S. 102) C.2 Zahlentheorie: Kettenbriiche (S. 109)

Grundlegende mathematische Funktionen Gmndlegende Arithmetik + I

* **

&* !

abs

convert/'+' convert/'*' factorial

igcd irem Hcm max iquo min

product signum sqrt

sqrt/symbolic+ sum ?arithmetic

Exponenten und Logarithmen A

**

E

exp

gamma In

log

loglO *

log[b]

Trigonometrische und Hyperbolische Funktionen arccos arccosh arccot

arccoth arcsec arccsc arcsech arccsch arcsin

arcsinh arctan arctanh

convert/degrees convert/radians cos

cosh cot coth

csc csch Pi

sec sech sin

Andere mathematische Funktionen Ai bernoulli Bessell BesselJ BesselK BesselY Beta Bi

100

binomial Chi * Ci dawson * dilog Dirac Ei erf

erfc euler FresnelC Fresnelf * Fresne1g * FresnelS GAMMA harmonic

Heaviside hypergeom* LegendreE LegendreEc LegendreEc 1 LegendreF LegendreKc LegendreKcl

LegendrePi LegendrePic LegendrePic 1 Li* lnGAMMA* MeijerG Psi

Shi* Si Ssi* W Zeta ?funcrefs ?inifcns

sinh tan tanh

Mathematik: Analysis Manipulation combinelabs+ combinelexp combinelln combineIPsi combinelradical+ combineiradicaVsymbolic+ combinelsignum+ combineltrig convertlbinomial+

convert/degrees convertlEi convert/erf convert/erfc convert/exp convert/expln convert/expsincos convert/factorial convert/GAMMA

convertJbypergeom convertlln convert/radians convert/sincos convert/tan convert/trig radnormal * simplifylEi simplify/GAMMA

simplifylhypergeom simpJify/ln simplify/radical simplify/sqrt simplify/trig trigsubs * typelmathfunc typeltrig

Analysis Stetigkeit und Grenzwerte asympt discont *

iscont * iscontlc1osed *

limit limitlcomplex

limitlleft limitlright limitlreal Limit

student[Limit]

Differentiation und Extremwertprobleme convertID extrema * numapprox[infnorm] convert/diff maximize *minimize powseries[powdiff] D maximizelinfinite+ *minimize student[D] diff minimize * student[extrema] Diff minimizelinfinite+ * student[maximize] Siehe auch C.2 Lineare Programmierung (S. 108) C.2 Mathematische Physik (S. 108)

student[ minimize] student[ showtangent] student[value] ?operators[D]

DifferentiaIgleichungen Ai DEtools[DEplot2] dsolveltype+ Bessell DEtools[dfieldplot] fourier * BesselJ DEtools[PDEplot] invfourier *!ourier BesselK DEtools[phaseportrait] invlaplace *laplace BesselY dsolve laplace Bi dsolvelexplicit mellin DESol+ dsolvellaplace mellintable *mellin DEtools[Dchangevarj dsolvelmethod+ plots[odeplotj DEtools[DEplotj dsolvelnumeric powseries[powsolvej DEtools[DEplotlj dsolvelseries ?dsolve[dverk78j+ Siehe auch C.2 Mathematische Physik: Lie-Symmetrie (S. 108)

Integration assume Chi * Ci convertlEi convert/erf convert/erfc dawson * dilog Ei ellipsoid * erf

erfc FresnelC Fresnelf* Fresnelg * FresnelS int intlCauchyPrincipalValue intlcontinuous Int integrate LegendreE

LegendreEc LegendreEcI LegendreF LegendreKc LegendreKc 1 LegendrePi LegendrePic LegendrePic 1 Li* powseries[powintj Shi*

Si simplifylEi Ssi* student[changevar] student[Doubleint] student[Int] student[integrand] student[intparts ] student[Lineint]+ student[Tripleint] ?intrefs

Numerische Integration evalf evalf/Int 'evalflint' * 'evalf/int'/_CCquad *

'evalf/int''-I)exp * 'evalflint'/_NCrule * student[leftbox] student[leftsum]

student[middleboxj student[simpsonj student[middlesum] student[trapezoid] ?int[numerical] student[rightbox] student[rightsum]

101

C Liste der Sachgebiete Potenzreihen powseries[reversion] powseries[evalpow] powseries[inverse] powseries[subtract] powseries[multconst] powseries[tpsforrn] powseries[multiply] residue * powseries[negative] series powseries[powcreate] serieslleadterrn powseries[powdiff] taylor o powseries[powexp] typeIlaurent type/series order powseries[powint] Order powseries[powlog] typeItaylor ?powseries [powseries] poisson * powseries[powpoly] powseries[add] powseries[powsolve] ?solve[series] powseries[compose] powseries[quotient] Sieheauch C.2 Approximationen: Funktionen (S. 1(0) C.2 Diskrete Mathematik: Erzeugende Funktionen und Rekursionsrelationen (S. 103) coeftayl * convertlconfrac convertlpolynom convertlratpoly convertlseries mtaylor * numapprox[laurent]

VektoranaIysis linalg[curl] linalg[curVcoords]+ linalg[diverge] linalg[diverge/coords]+ linalg[grad]

linalg[gradlcoords]+ linalg[hessian] linalg[jacobian] linalg[laplacian]

linalg[laplacianlcoords] + linalg[potential] linalg[vecpotent] linalg[Wronskian]

Komplexe Zahlen abs argument cmagdiff* combine/conjugate conjugate convert/polar

convertlradical convertlRootOf csgn evalc I

1m polar * Re residue * RootOf

signum simplify/polar sortcx * sortcxlabs * sortcxllexlmRe *

sortcxllexRelm * sortcxlpolar * testftoatlmodel * type/complex ?evalc[functions]

Gau8sche Zahlen Gausslnt[GIbasis] Gausslnt[GIchrem]+ Gausslnt[Gldivisor] Gausslnt[GIfacpoly]+ Gausslnt[GIfacset] Gausslnt[GIfactor] GaussInt[GIfactors ] Gausslnt[GIgcd] GaussInt[GIgcdex] Gausslnt[GIhermite]+ Gausslnt[Glissqr]

Gausslnt[GIlcm] Gausslnt[GImcmbine] Gausslnt[GInearest] Gausslnt[GInodiv]+ Gausslnt[GInorrn] Gausslnt[GInorrnal] + Gausslnt[GIorder] Gausslnt[GIphi] Gausslnt[GIprime] Gausslnt[GIquadres]

Gausslnt[Glquo] Gausslnt[Glrem] Gausslnt[GIroots] Gausslnt[GIsieve] Gausslnt[GIsmith]+ Gausslnt[GIsqrfree]+ Gausslnt[Glsqrt] Gausslnt[Glunitnorrnal]+ numtheory[GIgcd] type/complex(integer)

Konstanten Catalan constants

102

E FAIL

false gamma

infinity

Pi true

type/constant typelinfinity+

type/realcons ?evalhf[constants]

Mathematik: Diskrete Mathematik Diskrete Mathematik Boolsche Logik convertlmod2 logic[ &and] logic[ &iff] logic[&implies] logic[&nand] logic[&nor] logic[¬]

logic[&or] logie[&xor] logic [bequal] logic[bsimp] logic[canon] logic[canon/CNF] logic[canonIDNF]

logic[canonIMOD2] logic[ convertlfrorninert] logic[convertlMOD2] logierconvertlMOD2Iexpanded] logierconvertltoinert] logic[distrib] logierdual]

logic[environ] logic[randbool] logie[randbool/CNF] logie[randbooIlDNF] logie[randboollMOD2] logic[satisfy] logie[tautology]

Kombinatorik combinat[lastpart] combinat[multinomial] binomial combinat[ nextpart] combinat[bell] combinat[ numbcomb] combinat[binomial] combinat[numbcomp] combinat[ cartprod] combinat[ numbpart] combinat[ character] combinat[numbperm] combinat[Chi] combinat[partition] combinat[choose] combinat[ composition] combinat[permute] combinat[powerset] combinat[ conjpart] combinat[prevpart] combinat[ decodepart] combinat[randcomb] combinat[encodepart] combinat[randpart] combinat[fibonacci] combinat[randperm] combinat[firstpart] combinat[stirling 1] combinat[graycode] combinat[inttovec] Siehe auch C.2 Algebra: Gruppentheorie (S. 98)

combinat[stirling2] combinat[subsets ] combinat[vectoint] convertlbinomial+ convertlfactorial convertlGAMMA group[ convertldisjcyc] group[convertlpermlist] group[groupmember] group[inter] group[invperm ] group [mulperms] group[permgroup] group[typeldisjcyc] MOLS*

Erzeugende Funktionen und Rekursionsrelationen genfunc[ rgLcharseq] genfunc[ rgLsequence] genfunc[rgLencode] genfunc[rgLsequencelboundary] genfunc[rgLexpand] genfunc[rgLsequenceJcoeffs] genfunc[rgLfindrecur] genfunc[rgLsequence/delta] genfunc[rgLhybrid] genfunc[rgLsequence/first] genfunc[rgLnormJ genfunc[rgLsequence/firstcf] genfunc[rgLnormlfactoredJ genfunc[rgLsequence/firstrecur] genfunc[ rgLpfrac] genfunc[rgLsequence/order] genfunc[ rgLpfrac/no_RootOf] genfunc[rgLsequence/recurJ genfunc[rgLrelateJ genfunc[ rgLsimp J Siehe auch C.2 Analysis: Potenzreihen (S. 102)

genfunc[rgLterm] genfunc[termscale] genfunc[typelrgLseq] invztrans *ztrans rsolve rsolve/genfunc rsolve/makeproc ztrans ztranslDelta ztrans/Step

Graphentheorie networks [acycpoly] networks [addedge] networks [addedge/Cycle] networks [addedge/names] networks [addedge/Path] networks [addedge/weights] networks[ addvertex] networks [addvertexlweights] networks[adjacency] networks [allpairs] networks[ancestor] networks [arrivals] networks [bicomponents ] networks [charpoly] networks [chrompoly] networks [complement]

networks[delete] networks[ departures] networks [diameter] networks [dinic] networks[djspantree] networks [dodecahedron1 networks[draw] networks[ draw/Concentric] networks [drawlLinear] networks [duplicate] networks [edges] networks[edges/all] networks [ends] networks [eweight] networks [fiow ] networks [fiow/maxfiow]

networks [incidentiOut] networks [indegree] networks[induce] networks[isplanar] networks [maxdegree] networks [mincut] networks [mindegree] networks[neighbors] networks[ new] networks [octahedron] networks [outdegree] networks [path] networks[petersen] networks [random] networks [randomlprob ] networks [rank]

103

C Liste der Sachgebiete networks [complete] networks [components] networks [connect] networks [connect/directed] networks [connect/names] networks [connect/weights] networks [connectivity] networks[ contract] networks [countcuts] networks [counttrees] networks [cube] networks [cycle] networks [cyclebase] networks [daughter] networks [degreeseq]

networks [flowpoly] networks [fundcyc] networks [getIabel] networks [girth] networks [graph] networks[graphical] networks[graphica1!MULTI] networks [gsimp] networks[gunion] networks[gunionlSIMPLE] networks [head] networks [icosahedron] networks [incidence] networks [incident] networks [incident/In]

networks[rankpoly] networks [shortpathtree] networks[show] networks [shrink] networks [span] networks [spanpoly] networks [spantree] networks [tail] networks [tetrahedron] networks [tuttepoly ] networks [type/GRAPH] networks[ vdegree] networks[ vertices] networks[void] networks [vweight]

Summen und Produkte hypergeom* product Product select

simplifylhypergeom student[Sum] student[value] sum

?evalhf[arrays] ?evalhf[boolean] ?evalhf[ constants] ?evalhf[ fcnlist] ?evalhf[fortran] ?evalhf[function] evalm evaln padic[evalp] evalr *

freeze * frontend optimize * powseries[evalpow] student[value] subs subsop thaw *!reeze value ?uneval

convertl'*' convertlhypergeom eulermac * gamma harmonic

asubs * asubs/always * bernoulli Catalan convertl'+'

Sum ztrans ztranslDelta ztrans/Step

Auswertung allvalues allvalues/d assume convertlfloat cost * Digits Digitsp eval Eval

evala evalb evalc ?evalc[ functions] evalf 'evalf/int' * evalgf * evalhf evalhflDigits evalhf/var

Finanzen amortization *finance blackscholes *finance

finance * finance/amount *

finance/interest * finance/periods * finance/payment *

Funktionale Transformationen Dirac dsolve/laplace FFT*

fourier * invfourier *fourier laplace Heaviside invlaplace Map/ace mellin mellintable *mellin iFFT *FFJ invztrans *ztrans

ztrans ztranslDelta ztrans/Step

Geometrie Student-Geometrie student[distance] student[intercept]

104

student[makeproclslope] student[midpoint]

student[showtangent] student[slope]

student[type/Point]

Mathematik: Geometrie Zweidimensionale euklidsche Geometrie geometry[altitude] geometry[ Appolonius] geometry[area] geometry[bisector] geometry[center] geometry [centroid] geometry[ circle] geometry[ circle/diameter] geometry [circumcircle] geometry[ conic] geometry[ convexhull] geometry[ coordinates] geometry[detailf] geometry[ diameter] geometry[distance] geometry[ellipse] geometry[ellipse/x-axis] geometry[ellipse/y _axis] geometry [Eulercircle] geometry[Euleriine] geometry[excircle] geometry[find_angle] geometry[Gergonnepoint] geometry[harmonic] geometry[incircle] geometry [inter] geometry [inversion] geometry[line] geometry[make_square] geometry[make_squareladjacent] geometry[ make_square/center]

geometry[make_squareldiagonal] geometry[median] geometry[midpoint] geometry[Nagelpoint] geometry [onsegment] geometry[ orthocenter] geometry[parallel] geometry[perpendicular] geometry[perpen_bisector] geometry[point] geometry[polar_point] geometry[poldine] geometry[powerpc] geometry[projection] geometry[radius] geometry[rad_axis] geometry[rad_center] geometry[rand point] geometry[reflect] geometry[rotate] geometry[rotate/clockwise] geometry [rotate/counterclockwise] geometry[sides] geometry[ similitude] geometry[Simsonline] geometry[ slope] + geometry[square] geometry[ symmetric] geometry[tangentpc] geometry[tangent] geometry[triangle]

Zweidimensionale Tests geometry[are_similar] geometry[are_tangent] geometry[ concyclic] geometry[is_equilateral] geometry[is_right]

geometry[ are_collinear] geometry[are_concurrent] geometry[ are_harmonic] geometry [are_orthogonal] geometry[are_parallel] geometry [are_perpendicular]

geometry[on_circle] geometry[on-line] geometry[type/circle2d] geometry[typelline2d] geometry[type/point2d]

Dreidimensionale euklidische Geometrie ellipsoid * geom3d[ angle] geom3d[area] geom3d[center] geom3d[ centroid] geom3d[coordinates] geom3d[coplanar] geom3d[distance] geom3d[inter] geom3d[line3d]

geom3d[midpoint] geom3d[ onsegment] geom3d[parallel] geom3d[perpendicular] geom3d[perpendicularlline] geom3d[perpendicularlline3d] geom3d[plane] geom3d[point3d] geom3d[powerps] geom3d[projection]

geom3d[radius] geom3d[rad_plane] geom3d[reflect] geom3d[sphere] geom3d[sphereldiameter] geom3d[ symmetric] geom3d[tangent] geom3d[tetrahedron] geom3d[triangle3d] geom3d[volume]

Dreidimensionale Tests geom3d[are_collinear] geom3d[are_concurrent] geom3d[ are_parallel] geom3d[ are_perpendicular] geom3d[are_tangent]

geom3d[on_plane] geom3d[ on_sphere] geom3d[type/line3d] geom3d[typelplane]

geom3d[type/point3d] geom3d[typelsphere] geom3d[type/tetrahedron1 geom3d [type/triangle3d]

105

C Liste der Sachgebiete Projektive Geometrie projgeom[conic] projgeom[ctangent] projgeom[fpconic] projgeom[harmonic] projgeom[inter]

projgeomuoin] projgeom[lccutc] projgeom[lccutr] projgeom[lccutr2p] projgeom[linemeet]

projgeom[line] projgeom[midpoint] projgeom[onsegment] projgeom[point]

projgeom[polarp] projgeom[poleline] projgeom[ptangent] projgeom[rtangent]

Tests aus der Projektiven Geometrie projgeom[collinear] projgeom[ concur]

projgeom[conjugate] projgeom[tangentte]

projgeom[tharmonic]

Starre Funktionen AFactor AFactors Ai Berlekamp+ Bi Content DESol+ Det Diff DistDeg Divide

Eigenvals Eval Expand Factor Factors Gausselim Gaussjord Gcd Gcdex GetAlgExt Hermite

Indep Int Interp Irreduc Lcm Limit Norm Normal Nullspace Power Powmod

Prem Primfield Primitive Primpart ProbSplit+ Product Quo Randpoly Randprime Ratrecon Rem

Resultant RootOf Roots Signum Smith Sprem Sqrfree student[Doubleint] student[Int] student[Limit]

student[Lineint]+ student[Sum] student[Tripleint] student[value] Subres Sum Svd Trace value ?inert

Ganze Zahlen binomial ceil chrem combinat[bell] combinat[fibonacci] combinat[multinomial] combinat[stirling 1] combinat[ stirling2] convertlbase convertlbinary convert/decimal convert/hex convert/octal euler factorial floor ifactor

ifactor/easy ifactorllenstra ifactor/pollard ifactor/squfof ifactors * igcd igcdex ilcm iloglO ilog * iperfpow * iquo irem iroot * isolve isprime isqrfree *

isqrt issqr * linalg[ihermite] linalg[ismith] mod 'mod' modp mods numtheory[bigomega]+ numtheory[divisors] numtheory[ifactor] numtheory[ifactors ] numtheory[invphi] numtheory[isolve] numtheory[issqrfree] numtheory[ mcombine] numtheory[ mobius]

numtheory[nthpow] numtheory[phi] numtheory[sigma] numtheory[tau] numtheory[thue] rand round trune type/even type/facint type/integer type/negint type/nonnegint type/odd type/posint type/square

Primzahlen isprime ithprime nextprime numtheory[factorset]

Lineare Algebra Matrizen

106

numtheory[fermat] numtheory[isprime] numtheory[ithprime]

numtheory[mersenne] numtheory[nextprime] numtheory[prevprime]

numtheory[safeprime] prevprime type/primeint

Mathematik: Lineare Algebra

Erzeugen von Matrizen array array/antisymmetric array/diagonal array/identity array/sparse array/symmetric convertlarray convertlmatrix linalg[augment] linalg[band] linalg[bezout] linalg[BlockDiagonal] linalg[blockmatrix]

linalg[companion] linalg[concat] linalg[ copyinto] linalg[ diag] linalg[entermatrix] linalg[ fibonacci] linalg[genmatrix] linalg[hessian] linalg[hilbert] linaigOacobian ] linalg[lordanBlock] linalg[matrix] linalg[randmatrix]

linalg[randmatrixlantisymmetric] linalg[randmatrixldense] linalg[randmatrixlentries] linalg[randmatrixlsparse] linalg[randmatrixlsymmetric] linalg[randmatrixlunimodular] linalg[stack] linalg[sylvester] linalg[toeplitz] linalg[ vandermonde] linalg[Wronskian]

MOLS* ?indexfcn

Normalformen, Gau8elimination und das Losen von Systemen Gausselim Gausslnt[Glhermite]+ Gausslnt[GIsmith]+ Gaussjord Hermite linalg[backsub]

linalg[ffgausselim] linalg[frobenius] linalg[gausselim] linalg[gaussjord] linalg[hermite]

linalg[ihermite] linalg[ismith ] linaigOordan ] linalg[leastsqrs] linalg[linsolve]

linalg[pivot] linalg[ ratform] Iinalg[ rret] linalg[smith] Smith

Matrixoperationen

*

comparray comparray/dontprint convertleqnlist convertllistlist convertlmathorner Det Eigenvals evalm linalg[add] linalg[addcol] linalg[ addrow] linalg[adj] linalg[adjoint] linalg[ charrnat] linalg[charpoly] linalg[col] linalg[coldim] linalg[ colspace] linalg[colspan] linaIg[ cond] linalg[condll] linalg[ condl2] linalg[ condlfrobenius] linalg[condlinfinity] linalg[definite/negative_det] linalg[definitelnegative_ semidet] linalg[ definitelpositi ve_det] linalg[ definite/positive_ semidet] linalg[ deIcols]

*

linalg[ delrows] Iinalg[det] linalg[detlsparse] Iinalg[eigenvals] Iinalg[eigenvals/implicit] IinaIg[eigenvals/radical] linalg[eigenvects] linalg[eigenvects/implicit] linalg[eigenvects/radical] linalg[equal] linalg[exponential] linaIg[extend] linalg[hadamard] Iinalg[htranspose] linalg[indexfunc] Iinalg[innerprod] linalg[inverse] Iinalg[iszero] Iinalg[kernel] linaIg[minor] linalg[ minpoly] linalg[mulcol] linalg[mulrow] Iinalg[muItiply] linalg[ norm] Iinalg[normll] linalg[norml2] Iinalg[normlfrobenius] linalg[normlinfinity]

linalg[nullspace] linalg[orthog] linalg[permanent] Iinalg[range] linalg[rank] linalg[ row] linalg[rowdim] linalg[rowspace] linalg[rowspan] linalg[scalarrnul] linalg[ singularvals] Iinalg[submatrixl Iinalg[subvector] linalg[swapcol] Iinalg[ swaprow] IinaIg[trace] linalg[transpose] Nullspace plots[matrixplot] plots [sparsematrixplot] Svd Svdlleft Svdlright type/array type/matrix type/matrixlsquare type/scalar ?linalg[ references]

°

Vektoren

*

comparray comparray/dontprint convertllist convertlvector

*

IinaIg[diverge] linalg[dotprod] Iinalg[ dotprodlorthogonal] linalg[grad]

linalg[potentiaI] linalg[randvector] Iinalg[randvector/entries] Iinalg[scalarrnul]

107

C Liste def Sachgebiete lattice * linalg[GrarnSchmidt] lattice/integer linalg[innerprod] linalg[add] linalg[intbasis] linalg[angle] linalg[laplacian] linalg[basis] linalg[normlfrobenius] linalg[cross prod] linalg[normlinfinity] linalg[curl] linalg[ normalize] Siehe auch C.2 Mathematische Physik (S. 108) C.2 Statistik (S. 110)

*

linalg[sumbasis] linalg[ vecpotent] linalg[ vectdim] linalg[ vector] type/scalar type/vector

Lineare Programmierung simplex [basis] simplex[convert/equality] simplex[convert/std] simplex[convert/stdle] simplex[convexhull] simplex[cterm] simplex[define_zero]+ simplex[ display] + simplex [dual] simplex [feasible] simplex[feasibleINONNEGATIVE] simplex [feasibleIUNRESTRICTED] simplex [maximize]

simplex[maximizeINONNEGATIVE] simplex[maximizelUNRESTRICTED] simplex[minimize] simplex[minimizelNONNEGATIVE] simplex[ minimizeIUNRESTRICTED] simplex[pivot] simplex[pivoteqn] simplex [pivotvar] simplex[ratio] simplex[ setup] simplex[setupINONNEGATIVE] simplex[ standardize] simplex[typeINONNEGATIVE]

Mathematische Physik

*

cartan printcartan *cartan riemann *cartan simpl *cartan simp2 *cartan clear *oframe comOI *oframe com02 *oframe com03 *oframe

com12 *oframe com23 *oframe com31 *oframe const *oframe deriv *oframe eO*oframe el *oframe e2 *oframe e3 #)frame

id*oframe transfo *oframe petrov nonzero *petrov tensor Christoffel 1 *tensor Christoffe12 Mensor d 1metric *tensor d2metric *tensor

*

*

display Mensor Einstein Mensor invmetric *tensor Ricci *tensor Ricciscaler *tensor Riemann Mensor Weyl Mensor ?relativity

Differentialformen difforms[&'] difforms[d] difforms[defform] difforms[defformlconst] difforms[defformleven] difforms[ defformlform]

difforms[defformlodd] difforms[ defformlscalar] difforms[formpart] difforms[mixpar] difforms[parity] difforms [scalarpart]

difforms[simpform] difforms [type/const] difforms[type/form] difforms[typelscalar] difforms[ wdegree]

Lie-Symmetrie classi *bianchi liesymm[&'] liesymm[&mod] liesymm[annul] liesymm[ autosimp] liesymm[close] liesymm[d] liesymm[depvars]

108

liesymm[determine] liesymm[dvalue] liesymm[Eta] liesymm[extgen] liesymm[extvars] liesymm[getcoeft] liesymm[getform] liesymm[hasclosure]

liesymm[hook] liesymm[indepvars] liesymm[Lie] liesymm[Lrank] liesymm[ makeforms] liesymm[mixpar] liesymm[prolong] liesymm[reduce]

liesymm[ setup] liesymm[TD] liesymm[translate] liesymm[ vfix] liesymm[wcollectj liesymm[ wdegree] liesymm[wedgeset] liesymm[ wsubs]

Mathematik: Zahlentheorie Newman-Penrose curvature *debever npspin *debever printcurve *debever prints pin *debever simp *debever NPspinor[basis] NPspinor[checkvars] NPspinor[conj]

NPspinor[ contract] NPspinor[D] NPspinor[del] NPspinor[dyad] NPspinor[eqns] NPspinor[findsymm] NPspinor[ makeeqn] NPspinor[rewrite]

NPspinor[suball] NPspinor[symm] NPspinor[V] NPspinor[V _D] NPspinor[X] NPspinor[X_D] NPspinor[X_V] NPspinor[Y]

NPspinor[Y _D] NPspinor[Y _V] NPspinor[Y _X] np[conj] np[D] np[eqns] np[suball] np[V]

np[V-D] np[X] np[X-D] np[X_V] np[Y] np[Y_D] np[Y_V] np[Y-X]

Zahlentheorie lattice * lattice/integer * Li* maxorder* minpoly *lattice numtheory[B] numtheory[bernoulli] numtheory[bigomega]+ numtheory[cyclotomic] numtheory [divisors] numtheory [euler] numtheory[F] numtheory[factorEQ]+ numtheory[factorset] numtheory [fermat] numtheory[GIgcd] numtheory[ifactor]

numtheory[ifactor/easy] numtheory[ifactorllenstra] numtheory[ifactor/pollard] numtheory[ifaetor/squfof] numtheory[ifaetors] numtheory[invphi] numtheory[isolve] numtheory[isprime] numtheory[issqrfree] numtheory[ithprime] numtheory[l] numtheory[jaeobi] numtheory[kronecker] numtheory[L] numtheory[legendre] numtheory[M]

numtheory[mersenne] numtheory[ minkowski] numtheory[ mobius] numtheory[nearestp] numtheory[nextprime] numtheory[nthpow] numtheory[phi] numtheory[prevprime] numtheory [safeprime] numtheory[sigma] numtheory[sq2factor] numtheory[sum2sqr]+ numtheory[tau] numtheory[thue] surd+ * Zeta

Kettenbruche convergs * convertlconfrac numtheory[cfrac] numtheory[cfraclcentered] numtheory[cfrac/quotients] numtheory[ cfraclregular]

numtheory [cfraclsemisimple] numtheory [cfraclsimple] numtheory[efraclsimregular] numtheory[ cfraclsubdiagonal] numtheory[cfraclsuperdiagonal]

numtheory[cfracpol] numtheory[nthconver] numtheory[nthdenom] numtheory[ nthnumer] thiele *

Modulare Arithmetik chrem eonvertlmod2 Det frae Gausselim Gaussjord genpoly

iratreeon * mod 'mod' modp mods msolve Nullspaee

numtheory[imagunit] numtheory[index] numtheory[lambda] numtheory[meombine] numtheory[mipo1ys] numtheory[mlog]

numtheory[rnroot] numtheory[msqrt] numtheory[order] numtheory[pprirnroot] numtheory[prirnroot] numtheory[rootsunity]

P-adische Zahlen Digitsp genpoly padie[arccoshp] padie[arceosp] padie[arccothp] padic[arecotp] padic[areesehp] Siehe auch Co2 C.2 C.2 C.2 C.2 C.2

padic[arccscp] padie[coshp] padie[expp] padie[areseehp] padie[eosp] padie[logp] padie[areseep] padie[cothp] padie[ ordp] padic[arcsinhp] padie[eotp] padic[ratvaluep] padic[aresinp] padie[esehp] padie[rootp] padie[sechp] padie[arctanhp] padie[esep] padie[arctanp] padie[evalp) padie[seeJ!] Algebra: Zahlkiirper und FunlCtionenkiirper (S. 97) Algebra: Endliehe Kiirper (S. 97) Algebra: Polynome: Modulare Arithmetik (S. 99) Komplexe Zahlen: GauBsche Zahlen (S. 102) Ganze Zahlen (S. 106) Ganze Zahlen: Primzahlen (S. 106)

padie[sinhp] padie[sinp] padie[sqrtp] padie[tanhp] padie[tanp] padie[valuep] ?padie[funetions]

109

C Liste def Sachgebiete Zahlen Siehe C.2 C.2 C.2 C.2 C.2 C.2 C.2

Algebra: Zahlkorper und Funktionenkorper (S. 97) Approximationen: Reelle Zahlen (S. 99) Komplexe Zahlen (S. 102) Komplex Zahlen: GauBsche Zahlen (S. 102) Ganze Zahlen (S. 106) Ganze Zahlen: Primzahlen (S. 106) Zahlentheorie: P-adische Zahlen (S. 109)

Aufiosen von Gleichungen und Rekursionen convert/eqnlist convert/equality convertllessequal convertllessthan DESol+ dsolve dsolve!explicit dsolve!laplace dsolve!method+ dsolve!numeric dsolve!series dsolve!type+ fsolve fsolve/complex

fsolve/fulldigits fsolve/maxsols Gausslnt[Glroots] grobner[finite] grobner[gsolve] grobner[solvable] grobner[ solvable!plex] grobner[solvable/tdeg] invfunc isolate * isolve Ihs linalg[genmatrix] linalg[leastsqrs]

*

linalg[linsolve] ..MaxSols msolve numtheory[isolve] numtheory[thue] padic[rootp] powseries [pow solve ] rhs roots Roots rsolve rsolve!genfunc rsolve/makeproc singular *

solve solve!identity student[equate] student[isolate] type/equation ?solve[ftoats] ?solve[functions] ?solve[ineqs] ?solve[linear] ?solve[radical] ?solve[ scalar] ?solve[series] ?solve[system]

Siehe auch C.2 Algebra: Grobnerbasen (S. 98) C.2 Algebra: Polynome: Faktorzerlegung und Finden von Nullstellen (S. 98) C.2 Diskrete Mathematik: Erzeugende Funktionen und Rekursionsrelationen (S. 103)

Statistik Beschreibende Statistik stats[describe, stats[describe, stats[describe, stats[describe, stats[describe, stats[describe, stats[describe, stats[describe, stats[describe, stats [describe, stats[describe, stats [describe, stats[describe, stats[describe, stats[ describe, stats[describe, stats[describe, stats[describe, stats[describe, stats[describe,

coefficientofvariation]+ count]+ countmissing]+ covariance]+ decile]+ geometricmean]+ harmonicmean]+ kurtosis]+ Iinearcorrelation]+ mean] + meandeviation]+ median] + mode]+ moment]+ percentile] + quadraticmean]+ quantile]+ quartile]+ range]+ skewness]+

stats[describe, standarddeviation] + stats[describe, variance]+ ?describe [gaps] + stats [average] stats [correlation] stats [covariance] stats[mean]0 stats[mean/continuous]0 stats [mean/discrete] stats[mean/geometric]0 stats[meanlharmonic]0 stats [mean/quadratic] ° stats [median] ° stats[mode]0 stats[projection]0 stats[projectionlconst]0 stats[Rsquared]° stats[sdev]0 stats [serr] ° stats [variance]

°

° °

°

°

Verteilungen stats[random]+ stats [random/auto] + stats [randomlbuiltin] +

110

stats [random/default] + stats [random/generator] +

stats[random/inverse] + ?stats[distributions]

Mathematik: Statistik Stetige stats[statevalf, cdf]+ stats[statevalf, icdf]+ stats[statevalf, pdf]+ stats[ChiSquare]0 stats[Exponential]0 stats[Fdist]0 stats[Ftest]0

stats[N]0 stats[Q]0 stats[RandBeta]0 stats[RandChiSquare]0 stats[RandExponential]0 stats[RandFdist]0 stats[RandGamma]0

stats[RandNormaI]0 stats[RandStudentsT]0 stats[RandUnifonn]0 stats[StudentsT]0 stats[StudentsT/area]0 stats[Unifonn]0

Die folgenden stetigen Verteilungen konnen mit random oder statevalf benutzt werden. beta cauchy

chisquare exponential

fratio laplaced gamma logistic

lognonnal nonnald

studentst unifonn

weibull

Diskrete stats[statevalf, dcdf]+ stats[statevalf, idcdf]+

stats[statevalf, pf]+ stats[RandPoisson]0

Die folgenden diskreten Verteilungen konnen mit random oder statevalf benutzt wernen. binomiald

discreteunifonn

empirical

hypergeometric

negativebinomial

poisson

Manipulation stats[transfonn, stats[transfonn, stats[transfonn, stats[transfonn, stats[transfonn, stats[transfonn, stats[transfonn, stats[transfonn, stats[transfonn,

apply]+ c1assmark]+ cumulativefrequency]+ deletemissing]+ divideby]+ frequency]+ moving]+ multiapply]+ remove]+

stats[transfonn, standardscore]+ stats[transfonn, statsort]+ stats[transfonn, statvalue]+ stats[transfonn, tally]+ stats[addrecord]0 stats[evalstat]0 stats[getkey]0 stats[putkey]0 stats[removekey]0

stats[transfonn, scaleweightj+

?stats[dataj

stats[transfonn, split]+

?stats[updatesj+

Regression stats[fit,leastsquarej+ stats[Jinregress j0

stats[multregressj0 stats[multregresslconst] 0

stats[regressionj0

Statistische Diagramme stats[statplots, stats[statplots, stats[statplots, stats[statplots, stats[statplots, stats[statplots, stats[statplots, stats[statplots,

boxplot]+ changecolour]+ histogram]+ notchedboxj+ quantilej+ quantile2j+ scatterldj+ scatterldljitteredj+

stats[statplots, scatter I dlprojected] + stats[statplots, scatterldlstackedj+ stats [statplots, scatter2dj + stats[statplots, symmetry j+ stats[statplots, xscale]+ stats[statplots, xshiftj+ stats[statplots, xyexchangej+ stats[statplot]0

111

C Liste cler Sachgebiete

Student Paket student[changevar] student[combine] student[completesquare] student[ convert/'@ '] student[ convert/nested] student[D] student[ distance] student[Doubleint] student[equate] student[extrema] student[Int] student[integrand] student[intercept]

student[intparts] student[isolate] student[leftbox] student[leftsum] student[Limit] student[Lineint]+ student[ makeproc] student[makeprodslope ] student[ maximize] student[middlebox] student[middlesum] student[midpoint]

student[ minimize] student[powsubs] student[rightbox] student[rightsum] student[ showtangent] student[simpson] student[ slope] student[Sum] student(trapezoid] student[Tripleint] student[typelPoint] student[value]

Ma8einheiten gills acre convert/degrees ft convert/metric furlong gr acres convert/radians furlongs hr bu cord gal imp bushel bushels cords gallon inch gallons chain degrees inches Gals ins chains feet gill kg cm foot Siehe auch C.3 Datentypen: Umwandlung (S.

C.3

km Lb Ibs light-year light-years It m mi 114)

Mile miles MPG MPH ounce Ounces oz

Ozs pint pints pole poles pound pounds

Programmierung

Zuweisung und Freigabe von Variablen alias anames

assign assigned evaln

macro protect+ restart

type/name type/protected + unames

unassign * unprotect+ ?environment

?indexed ?keywords ?strings

Annahme von Eigenschaften about additionally addproperty AndProp

assume ..Envadditionally is isgiven

OrProp simplify/assume+ totorder[ forget] totorder[init]

totorder[ordering] totorder[tassume] totorder[tis] ?asspar

Funktionseigenschaften addmul ArithmeticOper binary commutative

continuous differentiable InfinitelyDifferentiable LinearMap

mapping monotonic operator

PolynomiaiMap StrictlyMonotonic unary

Matrixeigenschaften antisymmetric diagonal ElementaryMatrix Hermitian idempotent IdentityMatrix LowerTriangular

112

matrix nilpotent NonSingular NonSymmetric NonZero NullMatrix NullVector

PositiveDefinite PositiveSemidefinite RectangularMatrix scalar ScaiarMatrix singular

SquareMatrix symmetric triangular tridiagonal UpperTriangular vector

quart quarts US yard yards yd yds

Programmierung: Kontrollanweisungen Numerische Eigenschaften complex composite fraction

GaussianInteger GaussianPrime imaginary

integer irrational NumeralNonZero

prime rational real

Rea1Range Rea1Range/Open

Andere Eigenschaften BottomProp

MutuallyExc1usive

property

TopProp

type

Kontrollanweisungen if then

elif fi else for

in from by to

next while

do break od ERROR

traperror done RETURN quit

stop ?statements

Datenstrukturen Array (Feld) comparray* comparray/dontprint * convertlarray convertleqnlist convertllist convertllistlist

array array/anti symmetric array/diagonal array/identity array/sparse array/symmetric

convertlmatrix convertlset convertlvector copy entries evalhf[ arrays]

indices map type/array ?indexfcn ?index[tables] ?selection

Ausdrucksfolge $ • NULL seq ?selection

?sequence

Heap heap[empty] *heap heap [extract] *heap

heap[insert] *heap heap [new] *heap· heap[max] *heap heap [size] *heap

Liste [] (II)

comparray * comparray/dontprint * convertl' +' convertl' *' convertlarray convertleqnlist convertllist

convertllist/'=' convertllistllist convertllistlist convertlmatrix convertlmuItiset convertlset convertlvector map member

nops select sort sortl' 1.207423595 Siehe auch: Ai, evalf.

=

binomial binomial(n, m) Berechnet Binomialkoeffizienten Wenn beide Argumente ganze Zahlen sind, so berechnet diese Funktion den Binomialkoeffizienten (,';,). FUr rationale Zahlen oder Gleitkommazahlen wird die verallgemeinerte Definition r(n + 1)/ (r(m + 1) r(n - m + 1)) benutzt. Dies gibt an, auf wieviel Arten man m Objekte aus n verschiedenen Objekten auswlihlen kann. binomial (5,3); ---> 10 Siehe auch: combinat [multinomial].

126

bernstein - cat blackscholes blackscholes(Ex, t, P, s, rf) blackscholes(Ex, t, P, s, rf, name) Gegenwlirtiger Wert einer aufrufbaren Option 0 Diese Funktion verwendet die von Black und Scholes stammende Formel zum Bestimmen des aktuellen Wertes einer Option und des Delta oder Absicherungsverhliltnisses der Option. Ex ist der Ausiibungspreis der Option, t die verbleibende Zeit bis zum Ausiibungstermin, P der gegenwlirtige Preis der Aktie, s die Standardabweichung per Peri ode der stetig errechneten Ergebnisrate der Aktie und rf ist die stetig berechnete riskiskofreie Zinsrate. Fails die Variable name angegeben ist, wird ihr das Absicherungsverhliltnis oder Optionsdelta zugewiesen. 0 Man muB erst readlib (f inance) eingeben, bevor man diesen Befehl benutzen kann. 0 Siehe auch: amortization, finance. break Beendet die am tiefsten geschachtelte Wiederholungsanweisung 0 Diese Anweisung muB innerhaIb der Wiederholungsanweisung stehen. 0 Siehe auch: do, next. bspline bspline(n, Var) bspline(n, Var, Liste) Bereehnet die B-Spline-Segmentpolynome 0 Diese Funktion berechnet die Segmentpolynome fiir den B-Spline yom Grade n in der Variablen Var beziiglieh der Knotenfolge Liste. Fails Liste nieht angegeben ist, wird die uniforme Folge [0,1, ... , n + 1] benutzt. Eine Liste von Paaren der Form [Relation, Ausdr] wird zuriiekgegeben. 0 Man muB erst readlib (bspline) eingeben, bevorman diesen Befehl benutzenkann. 0 bspline (1, t) ; ---> [[t < 0, OJ, [t < 1, tJ, [t < 2,2 - tJ, [2 ::; t,O]] 0 Siehe aueh: interp, spline.

C C(Ausdr, Optionen) Erzeugt C-Quelleode 0 Diese Funktion erzeugt C-Code zur Auswertung des gegebenen Ausdrueks, Felds von Ausdriicken oder Liste von Anweisungen. 1m letzteren Fail ist jede Anweisung aIs eine Gleiehung gegeben. Die Option optimized bewirkt, daB beim erzeugten Code gemeinsame Unterausdriieke optimiert werden. Die Option digits gibt die Anzahl der Ziffern an, die zur Umwandlung rationaIer Zahlen oder symbolischer Konstanten wie z. B. pi benutzt werden (voreingestellt ist 16). Die Option filename benennt eine Datei, in die der erzeugte C-Code hineingeschrieben werden solI. Ohne Angabe wird der Code auf die Standardausgabe gesehrieben. 0 Man muB erst readl ib (C) eingeben, bevor man diesen Befehl benutzen kann. 0 C(sin(Pi*x'2), digits=5); ---> to sin (0. 31416E1 *x*x); 0 Siehe aueh: optimize, eqn, fortran, latex.

cartan cartan(h, hinv, koords, g) printcartan(R) riemann (hinv, gamma, koords, g) simp1(name, f, gamma) simp2(name, f, R) Eine Prozedurensammlung zur Bereehnung der Verbindungskoeffizienten und Kriimmungskomponenten unter Benutzung von Cartans Strukturgleiehungen 0 Die Argumente sind: h Ein Feld, welches von 0 bis 15 indiziert ist hinv Die Inverse von h eoords Eine Liste von vier Variablennamen g Eine konstante Metrik mit Indizes 0.. 3 Ein Variablenname var f Ein Prozedurenname gamma Das Feld der dureh cartan berechneten Verbindungskoeffzienten R Das Feld der von riemann bereehneten Riemannsehen Tensoren cartan bereehnet die Verbindungskoeffizienten. simp1 vereinfacht das Feld gamma und weist das Ergebnis der Variablen var zu. printcartan gibt die von Null versehiedenen Eintrage eines Feldes aus. riemann bereehnet die Komponenten des Riemannschen Tensoren. simp2 vereinfacht die Komponenten des Riemannschen Tensoren und weist das Ergebnis der Variablen var zu. Man muB zuerst read1 ib (cartan) eingeben, bevor man diese Funktionen aufrufen kann. 0 Siehe aueh: debever, tensor.

cat cat (ausdrl, ausdr2' ... ) Setzt Ausdriieke zusammen 0 Diese Funktion ist aquivaIent zu " . ausdrl . ausdr2 o cat(4,x,4); --->4x4 0 Sieheaueh: length, 1ina1g[concatJ. substring.

127

AIle Maple-Befehle Catalan Catalansche Konstante

Catalan

= L HRセMI[@ k:2:0

Sie hat den ungefahren Wert 0.915965594177219. ceil ceil (z) ceil (1, z) Gibt die kleinste ganze Zahl zuriick, die groBer oder gleich z ist, falls z eine reelle Zahl ist 1st z komplex, so wird der Wert -f1oor( -z) berechnet. Die zweite Form gibt die erste Ableitung dieser Funktion zuriick und zwar iiberall dort, wo sie definiert ist. cei 1 (3 . 99 - 2 . 4 * I) ; --t 4 - 2 I Siehe auch: floor, frac, round, trunc. chebyshev chebyshev (ausdr, var=a .. b, E) chebyshev (ausdrr, var, E) Reihenentwicklung beziiglich Tschebyscheff-Polynome Diese Funktion berechnet die Reihenentwicklung mit Tschebyscheff-Polynomen des Ausdrucks beziiglich der Variablen var auf dem Intervall [a, b], bis auf einen Fehler Eo 1st kein Intervall angegeben, so wird das Intervall [-1, 1] benutzt. Das dritte Argument, E, ist optional. 1st es vorhanden, so kann es nicht kleiner als lO-Digits sein, dem voreingestellten Wert. chebyshev (sin (x) , x, .1); - - t .8801011715 T(l, x) - .03912670797 T(3, x) Siehe auch: numapprox [chebpade] , orthopoly [T], series, taylor. Chi Chi(z) Das Integral des hyperbolischen Kosinus

.

Chl(z)="Y+lnz+

1

z cosh t - 1

o

dt

t

Man muB erst readl ib (Chi) eingeben, bevor man diesen Befehl benutzen kann. Siehe auch: Ci, cornbinat [Chi], Shi.

chrem chrem(reslist, modlist) Algorithmus zum Chinesischen Restsatz modlist ist eine Liste moduli [m 1 , ... , mn] paarweiser Primzahlen und res list ist eine Liste von Residuen [aI, ... , an]. Diese Funktion berechnet die eindeutige, positive ganze Zahl m < ml ... mn, die m == ai mod mi erfiillt. reslist kann eine Liste von ganzen Zahlen oder eine Liste von Polynomen sein. 1m zweiten Fall wird der Algorithmus auf die Koeffizienten eines jeden Term angewandt. chrem ( [1, 4, 5] , [3, 5, 7] ); - - t 19 Siehe auch: Gausslnt [Glmcrnbine], numtheory[mcornbine]. Ci Ci(z) Das Kosinusintegral • 7l' Cl(z)="Y+lnlz-I-+

2

1 z

0

cost - 1 ---dt t

Siehe auch: Chi, si.

c1assi classi () Funktion zum Bestimmen des Bianchi-Typen einer 3-dimensionalen Lie-Algebra Bevor man diese Funktion aufrufen kann, muB man das Feid structure wie folgt definieren: array ( [C123,C231,C312,C112,C113,C221,C223,C331.C332]) wobei die GroBen Cijk neun unabhangige Strukturkonstanten der 3-dimensionalen Lie-Algebra darstellen; man nimmt femer an, daB sie beziiglich des letzten Indexpaares antisymmetrisch sind. Falls structure nicht definiert wurde, so fragt die Prozedur nach den Konstanten. Diese Funktion gibt den Bianchi-Typus aus, wenn die Strukturkonstanten eine Lie-Algebra definieren. Man muB erst readlib (bianchi) eingeben, bevor man diesen Befehl benutzen kann. Siehe auch: liesymm.

128

Catalan - combinat[bell] close close () SchlieBt die zur Ausgabe mittels open geoffnete Datei Man muB erst readlib (wri tel eingeben, bevor man diesen Befehl benutzen kann. Siehe auch: open, wr i te, wri te In.

cmagdiff cmagdiff(z) Differenz von komplexen GroBen Diese Funktion gibt den GroBenunterschied zwischen den reellen und den komplexen Teilen der komplexen Zabl z zuriick. Fiir diese Funktion gibt es keine Hilfsseite On-Line. Man muB erst readl ib (cmagdi f f) eingeben, bevor man diesen Befehlbenutzenkann. cmagdiff(lO+.l*I); --t2 Sieheauch: iloglO. coeff coeff(poly, var, ·n) coeff(poly, varAn) Isoliert einen Koeffizienten eines multivariaten Polynoms Diese Funktion isoliert den Koeffizienten von var n in poly. Das Polynom muB nach der Variablen var geordnet ( collected) sein. coeff(x A2*y + 7*x*y A2 + 8*y A3, x); --t7y2 Sieheauch:Coeff, coeffs, collect, lcoeff, tcoeff. Coeff Coeff(poly, n) Starre Koeffizientenfunktion Wird diese in Verbindung mit modpl benutzt, so wird der Koeffizient eines univariaten Polynoms iiber einem gegebenen Definitionsbereich zuriickgegeben. Siehe auch: coeff, Lcoeff, Tcoeff. coeffs coeffs(poly) coeffs(poly, vars) coeffs(poly, vars, name) Isoliert aile Koeffizienten von var des muItivariaten Polynoms Diese Funktion berechnet eine Foige von Ausdriicken aller Polynornkoeffizienten beziiglich einer oder einer Liste von Variablen Falls vars nicht bestimmt ist, werden aile Unbestimmte von poly behandelt. Das Polynom muB beziiglich der betrachteten Variablen geordnet ( collected) sein. 1st als drittes Argument ein Name gegeben, so wird diesem eine Foige von Ausdriicken, bestehend aus den Termen von poly, zugewiesen. coeffs (x A2*y + 7*x*y A2 + 8*y A3,y); --t x 2 , 7x,8 Siehe auch: coeff, collect, indets, lcoeff, tcoeff. coeftayI coeftayl(ausdr, var=a, n) coeftayl(ausdr, varlist=alist, nlist)

Berechnet einen Koeffizienten der Taylorreihenentwicklung von ausdr, ohne die Reihe zu bilden Die erste Form berechnet den Koeffizienten von (var - a)n der (univariaten) Taylorreihenentwicklung von ausdr urn den Punkt var = a. Die zweite Form berechnet den Koeffizienten von (vari - ai )ni der multivariaten Taylorreihenentwicklung von expr urn ai. Man muB erst readlib (coeftayl) eingeben, bevor man diesen Befehl benutzen kann. coeftayl (In (x) ,x=l, 5); --t Siehe auch: mtaylor, taylor.

IT

t

collect collect (ausdr, vars) collect (ausdr, vars, form, f) SammeIt und ordnet die Koeffizienten mit denselben Potenzen vars kann der Name einer einfachen Variablen oder einer Liste von Variablen sein. form kann distributed oder recursive (voreingestellt) sein; diese ergeben dasselbe ResuItat wenn vars ein einfacher Name ist. 1st eine Funktion f aIs viertes Argument gegeben, so wird diese auf die Koeffizienten des geordneten Polynoms angewandt. p : = x*y + a *x*y+ b*x*yA 2: collect (p, [x, y] ); --t (b y2 + セQ@ + a) y) x collect (p, [x, y], distributed, abs); --t 11 + al x y + Ibl x y Siehe auch: coeff, coeffs, sort. combinat

Das Paket der kombinatorischen Funktionen. Siehe auch: combinat [ function], with. combinat[bell] bell (n) Berechnet die nte Bellsche Zabl. bell (5); --t 52 Siehe auch: binomial.

129

AIle Maple-Befehle combinat[binomiall binomial(n, m) Berechnet Binomialkoeffizienten Synonym fiir binomial. Siehe auch: binomial.

combinat[ cartprod] cartprod(listlist) Iteriert iiber dem kartesischen Produkt einer Liste von Listen Diese Funktion gibt eine Tabelle mit zwei Eintriigen zurUck: nextvalue und finished. Der Eintrag nextvalue ist eine Prozedur, die das kartesische Produkt durchlauft. Durch Aufruf dieser Funktion erhiilt man das nachste Element des kartesischen Produktes. Der Eintrag finished ist entweder true oderfalse und zeigt an, ob die Iteration beendet ist. Siehe auch: combinat [subsetsl.

combinat[ characterI character(n) Berechnet eine Zeichentabelle einer symmetrischen Gruppe Diese Funktion berechnet die Zeichentabelle fUr Sn, der symmetrischen Gruppe mit n Elementen. Siehe auch: combinat [Chil, combinat [partitionl.

combinat[Chi] Chi (.>., p) Berechnet die Chi-Funktion fUr Zerlegungen der symmetrischen Gruppe Diese Funktion berechnet die Spur der Matrizen, die zur konjugierten Klasse beziiglich der Zerlegung p in der unzerlegbaren, der Zerlegung .>.. entsprechenden Darstellung gehoren. p und .>.. miissen Zerlegungen derselben Machtigkeit sein. Chi ( [2 , 2 1 , [1, 3 1 ); - - t -1 Siehe auch: combinat [characterl, combinat, combinat [partitionl combinat[characterl.

combinat[ chooseI choose(n) choose (list) choose(n, m) choose (list, m) Konstruiert Potenzmengen oder Kombinationen einer Liste Die erste Version gibt die Potenzmenge einer Menge von ganzen Zahlen von Ibis n zurUck. Die zweite Form gibt eine Liste aller moglichen Teillisten einer Liste zurUck. Die beiden letzten Varianten ergeben nur TeillistenderLangem. choose(2); - - t {{},{1},{2},{1,2}} choose(2,1); - - t [[1], [2]] Siehe auch: combinat [numbcombl. combinat [permute].

combinat[composition] composition(n, k} k-Kompositionen einer ganzen Zahl Diese Funktion berechnet eine Liste. die alle verschiedenen. geordneten. k-Tupel positiver ganzen Zahlen enthiilt. wobei die Elemente eines jeden k-Tupel sich zu n aufsummieren. composi tion (4, 2); - - t {[2, 2], [1,3]' [3, 1]} Siehe auch: @, @@, combinat [numbcomp].

combinat[conjpart] conjpart(list} Berechnet die zur kanonischen Zerlegungsfolge konjugierte Zerlegung. conjpart ( [1, 3 I ) ; - - t [1,1,2) Siehe auch: combinat [encodepartl, combinat [firstpartl, combinat [inttovec], combinat [lastpartl. combinat [nextpart], combinat [numbpartl, combinat [partitionl. combinat [prevpartl, combinat[randpartl.

combinat[ decodepart] decodepart(n, m} Berechnet die durch eine ganze Zahl repriisentierte kanonische Zerlegung Gegeben seien positive ganze Zahlen n und m zwischen 1 und numbpart (n), dann ergibt diese Funktion die durch m repriisentierte Zerlegung. decodepart (6, 9); - - t [2,4] Siehe auch: combinat [encodepartl. combinat [inttovecl, combinat [numbpartl, combinat [parti tionl, combinat [vectoint l.

combinat[encodepart] encodepart(list) Berechnet eine kanonische Zerlegung, die eine ganze Zahl repriisentiert Gegeben sei eine Zerlegung list von n, dann gibt diese Funktion die zwischen 1 und numbpart (n) Jiegende ganze Zahl zurUck, die diese Zerlegung eindeutig repriisentiert. encodepart ( [2 , 41 ) ; --t 9 Siehe auch: combinat [decodepartl.

130

combinat[binomial] - combinat[numbcomp] combinat[fibonacci] fibonacci(n) fibonacci(n, var) Berechnet die nte Fibonaccizahl oder das nte Fibonaccipolynom bezilglich der Variablen var.o fibonacci(4); --->30 fibonacci(4,x); --->x 3 +2x 0 Sieheauch: linalg [fibonacci]. combinat[firstpart] firstpart(n) Gibt die erste Zerlegung in der kaoonischen Zerlegungsfolge von n zurilck. 0 firs tpart (3) ; ---> [1,1,1] 0 Siehe auch: combinat [conjpart], combinat [encodepart], combinat [inttovec], combinat [lastpart], combinat [nextpart], combinat [numbpart], combinat [partition], combinat [prevpart], combinat [randpart]. combinat[graycode] graycode(n) Konstruiert eine Grauskala mit n Bits 0 Diese Funktion gibt eine Liste zuriick, die alle 2n n-Bit-Zahlen einer kodierten Grauskala enthlilt, aogefaogen von null. 0 graycode (2); ---> [0,1,3,2] combinat[inttovec] inttovec(m, n) Gibt den in einer kaoonischen Anordnung der Zahl m entsprechenden Vektor zuriick 0 Diese Funktion stellt eine eineindeutige Beziehung zwischen nichtnegativen gaozen Zahlen und Vektoren n nichtnegativer gaozer Zahlen her. 0 inttovec (1001,3); ---> [10,3,4] 0 Siehe auch: combinat [decodepart], combinat [encodepart], combinat [vectoint]. combinat[lastpart] lastpart(n) Gibt die erste Zerlegung der kaoonischen Zerlegungsfolge von n zurilck. 0 lastpart (3) ; ---> [3] 0 Siehe auch: combinat [conjpart], combinat [encodepart], combina t [ firs tpart], comb ina t [int tovec], comb ina t [nextpart] , combinat [numbpart], combinat [partition], combinat [prevpart], combinat [randpartl. combinat[multinomial] multinomial(n, kl' k2' ... , km) Berechnet den Multinomialkoeffizienten HォャLRセ@ .. ,k",) 0 Hierbei setzt mao voraus, daB gilt n kl + k2 + ... + k m . 0 multinomial (7,3,2,2); ---> 210 0 Siehe auch: binomial.

=

combinat[nextpart] nextpart(list) Berechnet die nlichste Zerlegung innerhalb der kaoonischen Zedegungsfolge. 0 nextpart([2,4]); ---> [1,5] 0 Siehe auch: combinat[conjpart], combinat [encodepart], combinat [firstpart], combinat [inttovecl, combinat [lastpartl, combinat [numbpartl, combinat [partition], combinat [prevpart], combinat [randpart]. combinat[numbcomb] numbcomb(n) numbcomb(list) numbcomb (n, m) numbcomb(list, m) Zlihlt die Kombinationen 0 Die erste Variaote gibt 2n zurilck, also die Anzahl der Kombinationen gaozer Zahlen von 1 bis n. Die zweite Variaote berechnet die Anzahl der Kombinationen von Elementen in list, wobei Duplikate in der Liste beriicksichtigt werden. Die letzten beiden Versionen betrachten nur die Teillisten der Llinge m. 0 numbcomb (5,2); ---> 10 0 numbcomb([a,al); --->3 0 Sieheauch:binomial, combinat[choose]. combinat[numbcomp] numbcomp(n, k) Berechnet die Anzahl von k-Kompositionen von n 0 Diese Funktion zlihlt die Anzahl der verschiedenen geordneten geordneten k- Tupel gaozer Zahlen, deren Elemente sich zu n aufsummieren. 0 numbcomp (4,2); ---> 3 0 Siehe auch: combinat [composition].

131

..

AIle Maple-Befehle combinat[numbpart] numbpart(n) Bereehnet die Anzahl der Zedegungen von n ¢ Dies gibt an. auf wieviele Arten man n als eine Summe darstellen kann. wobei die Reihenfolge nieht beriieksiehtigt wird. ¢ numbpart ( 10) ; ---+ 42 ¢ Siehe aueh: combinat [partition1.

combinat[numbperm] numbperm(n) numbperm (list) numbperm(n, m) numbperm(list, m) Zlihlt die Anzahl der Permutationen ¢ Bei der ersten Form erhlil.t man die Anzahl der Permutationen von n Objekten. n!. Die zweite Form bereehnet die Anzahl der Permutationen der Elemente in list. wobei die Duplikate in der Liste beriieksiehtigt werden. Die letzten beiden Varianten zlihIen die Permutationen von n Objekten oder von list Elementen. wobei m Elemente gleichzeitig betrachtet werden. ¢ numbperm (7, 3); ---+ 210 ¢ Siehe aueh: combinat [permute1.

combinat[partition] partition(n) Gibt aile mogliehen Zedegungen der ganzen Zahl n an ¢ Diese Funktion gibt eine Liste von Zedegungen zuriiek. ¢ partition(3); ---+ [[1,1, 1], [1, 2], [3ll ¢ Siehe aueh: combinat [numbpart1.

combinat[permute] permute(n) permute (liste) permute(n, m) permute (liste, m) Konstruiert Permutationen ¢ Die erste Form gibt eine Liste aller Permutationen der ganzen Zahlen von 1 bis n zuriiek. Die zweite Form berechnet die Liste der Permutationen aller in liste vorkommender Elemente. Die letzten zwei Varianten listen die Permutationen. wobei man m Elemente gleiehzeitig permutiert. ¢ permute ( [a, a, b1 ); ---+ [[a, a, b], [a, b, a], [b, a, all ¢ Siehe aueh: combinat [numbperm1.

combinat[powerset] powerset(n) powerset(liste) powerset(menge) Konstruiert die Potenzmenge ¢ Die erste Variante gibt die Potenzmenge der ganzen Zahlen von 1 bis n zuriiek. Die zweite Variante erzeugt eine Liste aller Teillisten von Iiste. die letzte Variante bereehnet die Potenzmenge zu einer gegebenen Menge. ¢ powerset (2); ---+ {D, {I}, {2}, {I, 2}} ¢ Siehe aueh: combinat [choose], combinat [subsets1.

combinat[prevpart] prevpart (list) Bereehnet die vorhergehende ZerJegung innerhalb der kanonisehen ZerJegungsfolge. ¢ prevpart ([1,51); ---+ [2,4] ¢ Siehe aueh: combinat [conjpart1. combinat [encodepart1. combinat [firstpart1. combinat [inttovec1. combinat [lastpart]' combinat [nextpart], combinat [numbpart], combinat [partition1. combinat [randpart1.

combinat[randcomb] randcomb(n, m) randcomb(liste, m) Bereehnet eine Zufallskombination ¢ Die erste Form bereehnet eine Zufallskombination von m ganzen Zahlen. die aile zu den n ersten positiven ganzen Zahlen gehOren. Die zweite Form erzeugt eine Zufallskombination von m Elementen von liste. ¢ randcomb (4,2); ---+ {2,3} ¢ Siehe aueh: combinat [choose1.

combinat[randpart] randpart(n) Erzeugt eine zufaIlige Zedegung von n. combinat[partition1.

132

¢

randpart (7);

---+

[2,2,3]

¢

Siehe aueh:

combinat[numbpart] - combine/atatsign combinat[randperm] randperrn(n) randperrn ( li s t ) Erzeugt eine zufiillige Vertausehung 0 Bei der ersten Version wird eine zufaIlige Permutation der ersten n positiven ganzen Zahlen erzeugt. Die zweite Version erzeugt eine Zufallskombination der Elementevonlisl. 0 randperm(4); ---+[2,4,1,3] 0 Sieheaueh:combinat[perrnute], combinat [numbperrn]. combinat[stirlingl] stirling1 (n, m) Bereehnet die Stirlingzahlen der ersten Art. combinat[stirling2].

0

stirling1 (5,3); ---+ 35

0

Siehe aueh:

combinat[stirling2] stirling2 (n, m) Bereehnet die Stirlingzahlen der zweiten Art 0 Diese sind _I)m-k (r;:) kn. stirling2(5,3); ---+25 0 Sieheaueh:combinat[stirling1].

,;,! E;:'=o(

0

combinat[subsets] subsets (menge) subsets (liste) Iteriert fiber die Elemente der Potenzmenge einer Obermenge oder Liste 0 Diese Funktion gibt eine Tabelle mit zwei Eintriigen zuriiek: nextvalue und finished. Der Eintrag nextvalue ist eine Prozedur, die die Potenzmenge durehliiuft. Ein Aufruf dieser Funktion liefert das niiehste Element der Potenzmenge. Jedes zurUekgelieferte Element stellt eine Menge dar, falls das urspriigliehe Element eine Menge war und eine Liste, falls das urspriingliche Element eine Liste war. Der Eintrag f ini shed ist entweder true oder false und zeigt an, ob die Iteration beendet ist oder niehl. 0 Siehe auch: combinat [cartprod], combinat [powerset]. combinat[vectoint] vectoint(liste) Gibt die Liste liste entsprechende ganze Zahl in einer kanonischen Ordnung zurUck 0 Diese Funktion stellt eine eineindeutige Zuordnung zwischen Vektoren nichtnegativer ganzer Zahlen und nichtnegativen Zahlen dar. 0 vectoint ( [10,3,4] ); ---+ 1001 0 Siehe auch: comb ina t [encodepart], comb ina t [decodepart], comb ina t [int tovec] . combine combine (ausdr) combine (ausdr, name) combine (ausdr, namensliste) FaSt zwei Terme zu einem einzigen Term zusarnmen 0 Diese Funktion wendet Transformationen an, die Terme innerhalb von Summen, Produkten und Potenzen zu einem einzigen Term zusammenfassen. Sie wird auf Komponenten von Listen, Mengen und Relationen angewandt. Ffir viele Funktionen stellt sie die Umkehrung von expand dar. Teilausdriicke, die Int, Limit und Sum beinhalten, werden, wenn moglich, unter Benutzung von Linearitlit zu einem Ausdruck zusammengefaSt. Man kann auf andere Transformationen zugreifen, indem man einen Namen oder eine Liste von Namen als zweites Argument spezifiziert. 0 combine(Int(f(x),x)+Int(g(x),x)); ---+ jf(x)+g(x)dx 0 Sieheauch: combine/name, expand, factor. combinel'@@' combine (ausdr, '@@') Synonym fiir combine/atatsign

0

Siehe auch: combine/atatsign.

combinelabs combine (ausdr, abs) Kombinierte Produkte von Absolutwerten 0 Diese Option ist neu in Version 3. combine(abs(x)*abs(y)A3, abs); ---+I xy 31

0

combinelatatsign combine (ausdr, atatsign) combine (ausdr, '@@') Kombiniert Ausdrueke. die Operatoren beinhalten 0 Diese Funktion kombiniert gesehachtelte Funktionen zu Funktionsausdriicken. wobei der iterierte Kompositionsoperator @@. benutzt wird. o combine (f (f (x) ), '@@'); ---+ f(2l(x)

133



AIle Maple-Befehle combine/conjugate combine (ausdr, conjugate) FaSt komplex Konjugierte zusammen

(n ganze Zahl) combine (exp(ln(a) ), exp); --+ a lny)

combinelln combine (ausdr, In) FaSt logarithmische Terme zusammen In x a Inx + Iny --> Inxy

-->

x Y+z x yz e"'+Y e"'Y

--> -->

I (n m)q

-->

vn

(n ganze Zahl)

(n, m ganze Zahlen, q rational)

」ッュ「ゥョ・HUセROSIJWL@

power); --+35 2 / 3

combinelPsi combine (expr, Psi) FaSt Psi-Funktionen zusammen

lJt(r

± x)

-+

lJt(x)

24 Siehe auch: convert / ' + ' . converUarray convert (liste, array, grenzen, indexfkt} convert (tabelle, array, grenzen, indexfkt) convert (feld, array, grenzen, indexfkt} Wandelt eine Liste, Tabelle oder Feld in eine Feld urn Die Grenzen des Feldes und die Indexfunktion sind optional. Siehe auch: array, convert/matrix, convert/vector. converUbase convert(n, base, ausgabebasis} convert (list, base, eingabebasis, ausgabebasis} Wandelt von einer Basis in eine andere Basis urn Beim ersten Schema wird die in der Dezimalbasis dargestellte Zahl n in die Basis ausgabebasis umgewandelt. Das zweite Schema wandelt eine Liste von Ziffern list, die man als Zahl in der Basis eingabebasis versteht, in eine Basis ausgabebasis urn. Die am wenigsten signifikante Ziffer ist die erste in der Liste. convert ( [1, 1,2], base, 5, 10); ---> [6,5] Siehe auch: convert/binary, convert/decimal, convert/hex, convert/octal. converUbinary convert(r, binary} convert(r, binary, m} Wandelt eine Dezimalzahl in eine Binarzahl urn Die Zahl kann entweder positiv oder negativ sein, es kann sich urn eine ganze Zahl oder eine G1eitkommazahl handeln. Handelt es sich urn eine Gleitkommazahl, so bestimmt m die Anzahl der Stellen Genauigkeit der Antwort (voreingestellt ist Digi ts). convert (0.75, binary, 3) ; ---> .110 Siehe auch: convert/base, convert/decimal, convert/hex, convert/octal. converUbinomial convert (ausdr, binomial} Wandelt GAMMAs und Fakultaten in Ausdriicke mit Binomialkoeffizienten urn Diese Funktion ist neu in Version 3. convert ( (2 *n) ! / (n! ) セ@ 2, binomial}; ---> binomial(2n, n) Siehe auch: convert/factorial, convert/GAMMA.

136

convergs - convertlegnlist convertlconfrac convert{r, confrac, n, name) convert {reihe, confrac, option) convert {ausdr, confrac, var, n) Wandel! Zahlen, Reihen, rationale Funktionen und andere algebraische Objekte in eine Kettenbruchapproximation urn Die erste Variante wandel! die rationale oder reelle Zahl r in einen Kettenbruch urn, wobei eine Liste von n Teilquotienten zuruckgegeben wird. Der voreingestellte Wert von n ist 9. Gibt man name an, so wird diesem eine Liste der Konvergenten zugewiesen. Die zweite Variante berechnet eine Kettenbruchapproximation einer Reihe und zwar bis zur Ordnung der Reihe. option kann entweder superdiagonal (voreingestellt) oder subdiagonal sein. Die dritte Variante operiert auf rationalen Funktionen oder anderen algebraischen Objekten. Es wird nach dem Namen der Variablen var verlangt; n ist optional. convert (1. 57 ,confrac, 4); ---+ [1,1,1,3] Siehe auch: convergs, numtheory [cfrac1, numtheory [cfracpoI1. convertID convert {ausdr, D) Wandelt solche Ausdriicke in D-Operatorschreibweise urn, welche Ableitungen in diffSchreibweise enthalten. convert {diff (f (x) ,x), D); ---+ D(f)(x) Siehe auch: convert/diff. convert/decimal convert{n, decimal, binary) convert {kette, decimal, hex) convert{n, decimal, octal) Wandelt in Dezimalbasis urn Diese Funktion wandelt Binar-, Hexadezimal- oder Oktalzahlen in Dezimalzahlen urn. Die Binar- oder Oktalzahl ist als ganze Zahl, die Hexadezimalzahl als Zeichenkette gegeben. convert ( 'AB " dec imal, hex); ---+ 171 Siehe auch: convert/base, convert/binary, convert/hex, convert/octal. convert/degrees convert {zahl, degrees) Wandel! Bogenlange in Grad urn. convert (pi, degrees); ---+ 180 degrees Siehe auch: convert/radians. convert/diff convert {ausdr, diff, x) Ersetzt den D-Operator durch die diff-Funktion, wenn mtiglich. convert (D (f) (x) , diff); ---+ txf(x) Sieheauch: convert/D. convert/double convert{r, double, ausgabeform) convert {kette, double, maple, eingabeform) Wandel! eine Gleitkommazahl in doppelter Genauigkeit von einer Form in eine andere Form urn Mit drei Argumenten ist ausdr eine Maple-Gleitkommazahl und ausgabeform muB ibm, mips, oder vax sein. Mit vier Argumenten ist kette eine Hexadezimalkette in eingabeform, welche eine der obigen drei sein muB. convert (O .75, double, ibm); ---+ 40COOOOOOOOOOOOO Siehe auch: convert/ float, convert/hex. convertJEi convert {ausdr, Ei) Wandelt trigonometrische, hyperbolische und logarithmische Integrale in Exponentialintegrale urn. convert{Li{x) , Ei); ---+Ei(ln(x)) Sieheauch:Ei, simplify/Ei. convertleqnlist convert {feld, eqnlist) convert {liste, eqnlist) convert {tabelle, eqnlist) Wandel! ein Feld, eine Liste oder eine Tabelle in eine sie definierende Gleichung urn Jedes Element der zuruckgegebenen Liste hat die Form index = element. convert ( [7,81 ,eqnlist); ---+ [1 = 7,2 = 8] Siehe auch: convert/ list, convert/listlist.

137

AIle Maple-Befehle convert/equality convert (relation, equality) Wandelt die Relation in eine Gleichung urn, indern die Relation durch = ersetzt wird. convert (x AB 0 Siehe auch: convert /base, convert /binary, convert/decimal, convert/double, convert/octal. convertlhorner convert (poly, horner) convert (poly, horner, vars) Stellt ein Polynom in Hornerform (geschachtelt) dar 0 vars kann der Name einer einfachen Variablen oder aber einer Liste bzw. Menge von Variablen sein. 1st mehr als eine Variable angegeben, so wird die Umwandlung rekursiv auf jeden der Koeffizienten angewandt. Eine Liste erlaubt es, die Reihenfolge der Konvertierungen zu kontrollieren. 0 convert HクセRKQL@ horner); ---> 1 + (x + 1) x 0 Siehe auch: convert/mathorner. convertlhostfile convert(dateiname, hostfile) Wandelt den Maple-Dateinamen in einen fur das zugrundeliegende System giiltigen Namen urn o Der zurllckgegebene Dateiname wird von System zu System variieren. 0 Siehe auch: read, save. convertlhypergeom convert (ausdr, hypergeom) Wandelt Summationen in hypergeometrische Entwicklungen urn. 0 convert (Sum HQOォセRL@ k=l .. infinity), hypergeom); ---> hypergeorn([I, 1, 1], [2, 2], 1) 0 Siehe auch: hypergeom, simplify/hypergeom. convertJlessequal convert (relation, lessequa1) Verwandelt die gegebene Relation in eine schwache Ungleichung, indem die Relation durch x セ@ y 0 Siehe auch: convert/equality, convert/lessthan. convertJlessthan convert (relation, lessthan) Verwandelt die gegebene Relation in eine strikte Ungleichung, indem die Relation durch < ersetzt wird.o convert (x=y, lessthan); --->x [a, be] o Siehe auch: convert/eqnlist, convert/listlist, convert/set. convertJlistiist convert (feld, listlist) convert (liste, listlist) Konvertiert ein Feld oder eine Liste von Gleichungen in eine Liste von Listen 0 Die aus einem Feld geformte Liste von Listen ist genau die Liste, die an die Funktion array zur Erzeugung des Feldes gegeben wUrde. Bei der zweiten Form wird eine ein Feld definierende Liste von Gleichungen in eine Liste verwandelt. 0 convert ( [2=8,1=71 ,listlist); ---> [7,8] o Siehe auch: array, convert/eqnlist, convert/list. convertlln convert (ausdr, In) Wandelt inverse trigonometrische und hyperbolische trigonometrische Funktion in logaritbmische Form urn. 0 convert (2*arctanh(z) , In); --->In(z+I)-ln(l-z) 0 Sieheauch: convert/expo

139

..

AIle Maple-Befehle converUmathomer convert (poly, mathorner) convert (poly, mathorner, var) convert (poly, mathorner, A) Verwandlet ein Polynom in Hornerform ftir Matrizen 0 poly ist ein Polynom beztiglich des dritten Arguments, ein Variablenname oder eine Matrix. 0 convert (x'2+x+1,mathorner) ; ---+ 1 + ((1 + x) &* x) 0 Siehe auch: convert/horner.

converUmatrix convert (feld, matrix) convert (listenliste, matrix) Verwandelt ein zweidimensionales Feld oder eine Liste von Listen in eine Matrix. 0 Siehe auch:

convert/array, convert/vector, linalg [matrixl. converUmetric convert (ausdr, metric) convert (ausdr, metric, imp) convert (ausdr, metric, US) Verwande1t in metrische MaBeinheiten 0 Erscheint ein dritter Parameter imp oder US, so sollen die auftretenten MaBeinheitenais imperial bzw. U.S. aufgefaJ3t werden.Die folgenden Einheiten kiinnen acre cord gallon inches mi oz pounds acres cords gallons ins Mile Ozs quart bu feet Gals kg miles pint quarts bushel foot gill km MPG pints yard bearbeitet werden: bushels ft gills Lb MPH pole yards chain furlong gr lbs ounce poles yd chains furlongs hr light-year Ounces pound yds cm gal inch light-years o convert (1*furlong, metric); ---+ 201.1680m

converUmod2 convert (ausdr, mod2) Reduziert einen logischen Ausdruck modulo 2 0 Der Ausdruck kann die Boolschen Operatoren not, and und or enthalten. 0 convert (not x'3 and y, mod2); ---+ (1 + x)y 0 Siehe auch: logic [convert l, mod.

convertimuItiset convert (ausdr, multiset) convert (liste, multiset) convert (tabelle, multiset) Konvertiert in einen Multiset 0 Ein Multiset wird als eine Liste von Paaren der Form [e, m] dargestellt, wobei e ein Element und m seine Vielfachheit is!. Die Faktoren eines algebraischen Ausdrucks werden als Elemente, ihre Exponenten als zugeordnete Vielfachheiten interpretiert. Bei einer Liste bestimmt die Haufigkeit seines Vorkommens die Vielfachheit eines jeden Eintrags. SchlieBlich werden die Indizes einer Tabelle als Elemente und die Eintrage als zugeordnete Vielfachheiten intrepretiert. 0 convert (x'4*y, multiset); ---+ [[x,4],[y, III 0 Siehe auch: convert / set.

converUname convert (ausdr, name) Ein Synonym fUr convert/string.

0

Siehe auch: convert/ string.

converUoctal convert(r, octal) convert(r, octal, m) Verwandelt eine Dezimalzahl in eine Oktalzabl 0 r kann positiv oder negativ, eine ganze oder eine Gleitkommazabl sein. Handelt es sich urn eine Gleitkommazahl, so bestimmt m die Anzahl der Stellen, bis auf die die Antwort genau ist (voreingestellt ist Digi ts). 0 convert (135, octal); ---+ 207 0 Siehe auch: convert/base, convert/binary,

convert/decimal, convert/hex. converUparfrac convert (ausdrr, parfrac, var) convert (ausdr, parfrac, var, factored) Verwandelt den in der Variablen var rationalen Ausdruck ausdr in Partialbruchform 0 Falls factored den Wert true besitzt, so ist der Nenner bereits faktorisiert und normal wird auf

140

convert/mathorner- convert/series ausdr nieht angewandt. Der voreingestellte Wert ist false. convert (2/ (x 2-l), parfrac, x); --+ - BGセャ@ + BGセャ@ Siehe aueh: normal. A

converUpolar convert(z, polar) Verwandelt den komplexwertigen Ausdruek z in seine Darstellung mit Polarkoordinaten Das Ergebnis wird als polar (r, () dargestellt, wobei r der Modulus und () das Argument von z ist. convert (l+I, polar); --+polar(V2,ill') Sieheaueh:argurnent, evalc, polar.

convertJpolynom convert (reihe, polynom) Verwandelt eine Reihe in eine Summe von Produkten Sollte die Reihe Terme wie l/x oder In(x) enthalten, so wird das Ergebnis kein Polynom sein. convert (series (cos (x) Ix, x, 3), polynom); --+ セ@ - セク@ Siehe aueh: convert/series.

converUradians convert (zahl, radians) Verwandelt Grad in BogenmaB Der Ausdruek muB linear in der Unbestimmten degrees sein. convert (l80*degrees, radians); --+11' Siehe aueh: convert/degrees.

convert/radical convert (ausdr, radical) Verwandelt RootOfs im Ausdruek in Wurzelzeiehen und I wenn irgend mllglich. convert(RootOf(_Z 2-2), radical); --+ V2 Sieheauch: convert/RootOf, RootOf. A

converUrational convert(r, rational) convert(r, rational, n) convert(r, rational, exact) Konvertiert eine Gleitkommazahl in eine angeniiherte rationale Zahl Das dritte Argument spezifiziert die Genauigkeit der Approximation. Die ganze Zahl n gibt an, bis auf wieviele Stellen genau die Approximation sein soli. exact verlangt nach einem genauen rationalen Gegenstiick. Voreingestellt ist der Wert von Digi ts. convert ( .75, rational); --+ セ@ Siehe aueh: convert/confrac, Digits.

converUratpoly convert (reihe, ratpo1y) convert (reihe, ratpo1y, m, n) Verwandelt die Reihe in ein rationales Polynom Stellt das erste Argument eine Taylor- oder Laurent-Reihe dar, so ist das Ergebnis eine Pade-Approximation, ist das erste Argument eine Tschebyscheff-Reihe, so wird eine Tschebyscheff-Pade-Approximation berechnet. Hierbei ist m der gewiinschte Grad des Ziihlers und n der des Nenners. 1st nichts angegeben, so werden m und n so gewiihlt, daB m + n + 1 = order( reihe) und m = n oder m = n + 1 gilt. Siehe auch: chebyshev, convert/confrac, numapprox.

convertlRootOf convert (ausdr, RootOf) Wandelt aile Vorkommen der algebraischen Konstanten I, sowie aile Vorkommen von Radikalen (seien sie algebraische Konstanten oder Funktionen) in RootOf Schreibweise urn. convert (sqrt (2), RootOf); --+ RootOf(_Z2 - 2) Siehe auch: allvalues, convert/radical, RootOf.

converUseries convert (poly, series) convert (poly, series, var) Transformiert ein Polynom in eine Reihe Bei dieser Konvertierung bleiben aIle Terme des Polynoms erhaIten. Diese Funktion akzeptiert als erstes Argument auch eine Reihe. convert (1+3 *x 7, series); --+ 1 + 3 x 7 Siehe auch: convert/polynom, series. A

141



AIle Maple-Befehle convert/set convert (feld, set) convert (liste, set) convert (tabelle, set) convert (ausdr, set) Wandelt in eine Menge urn Diese Funktion konstruiert aus den Eintragen eines Feldes, einer Liste, einer Tabelle oder den Operanden eines Ausdrucks eine Menge. convert ( [1, 1, 2] , set); --+ {1,2} Sieheauch: convert/list. convert/sincos convert (ausdr, sincos) Verwandelt trigonometrische Funktionen in sin und cos, und hyperbolische trigonometrische sinh(z) Functionen in sinh und cosh. convert (tanh (z), s incos) ; --+ cosh(z) Siehe auch: convert/exp, convert/expsincos, convert/tan. convert/sqrfree convert (poly, sqrfree) convert (poly, sqrfree, var) Konvertiert das Polynom in quadratfreie Form in bezug auf die Unbekannte var Das Ergebnis ist ein Ausdruck, dessen Basisfaktoren alle zueinander prim sind. Falls var nicht spezifiziert wurde, so wird eine komplette quadratfreie Faktorisierung durchgefiihrt, wobei diese Funktion rekursiv solange auf 'den Inhalt angewandt wird, bis keine Variablen mehr enthalten sind. convert(x'4+4*x'3+3*x'2-4*x-4, sqrfree, x); ---> (x2 -1) (x + 2)2 Siehe auch: content, sqrfree. convert/string convert (ausdr, string) Wandel! den Ausdruck in eine Zeichenkette (Namen) urn. convert (a+1, string); --+ (a)+(l) Siehe auch: type/name, type/ string. convert/tan convert (ausdr, tan) Wandelt trigonometrische Funktionen in tan urn. convert (s in (2 *phi) /2, tan); --+

QZセエjIR@

Sieheauch: convert/expsincos, convert/sincos.

convert/trig convert (expr, trig) Verwandelt exponentielle Funktionen in trigonometrische und hyperbolische trigonometrische Funktionen. convert (exp (z), trig); --+ cosh(z) + sinh(z) Siehe auch: convert/exp, convert/expln, convert/expsincos. convert/vector convert (feld, vector) convert (liste, vector) Konvertiert ein Feld oder eine Liste in einen Vektor. convert ( [1,2] ,vector); [12) Siehe auch: convert/array, convert/matrix, linalg [vector].

--+

ConvertIn Convertln(poly, var) Konvertiert ein in der Variablen var univariates Polynom in modp1-Darstellung, sofem diese Funktion in Zusammenhang mit modp1 benutzt wird. modp1 (Convertln (x'2-x+7, x), 5); --+ 100040002 Siehe auch: ConvertOut, GF, modpl. ConvertOut ConvertOut(poly) ConvertOut(poly, var) Konvertiert ein Polynom in modp1-Darstellung in ein in der Variablen var univariates Polynom, sofem diese Funktion in Zusammenhang mit modp1 benutzt wird Falls var nicht vorhanden ist, so werden die Polynomkoeffizienten in einer Liste zuriickgegeben. modp1 (ConvertOut (100040002, x), 5); --+ x 2 + 4 x + 2 Siehe auch: Convertln, GF, modpl.

142

convert/set - dawson copy copy(feld) copy (tabelle) Erzeugt eine Kopie eines Feldes oder einer Tabelle Originals verandert werden.

0

Diese Kopie kann ohne Modifikation des

cos cos(z) Die Kosinusfunktion.

iii

Siehe auch: arccos.

0

cosh cosh(z) Die hyperbolische Kosinusfunktion.

0

Siehe auch: arc cosh.

cost cost (ausdrl, ausdr2' ... ) Zlihlt Anzabl der Operationen zum Auswerten 0 Diese Funktion zlihlt die Operationen, die zur numerischen Auswertung gegebener Ausdriicke notwendig sind. Diese Zlihlung wird als Linearkombination derNamen addi tions,mul tiplications, divisions, functions, subscripts und assignments dargestellt. Indem man diesen Namen Werte zuweist, erhiilt man gewichtete Kosten. 0 Man muB erst readl ib (cos t) eingeben, bevor man diesen Befehl additions + 2 multiplications + benutzen kann. 0 cost (sin(ln(x) +y'3)); セ@ 2 functions 0 Siehe auch: optimize.

cot cot(z) Die Kotangensfunktion.

0

Siehe auch: arccot.

coth coth(z) Die hyperbolische Kotangensfunktion.

0

Siehe auch: arccoth.

esc csc(z) Die Kosekansfunktion.

0

Siehe auch: arccsc.

esch csch(z) Die hyperbolische Kosekansfunktion.

0

Siehe auch: arccsch.

esgn csgn(z) csgn(l, z) Vorzeichenfunktion fiir reelle und komplexe Ausdriicke 0 Diese Funktion bestimmt die Halbebene, in der die komplexe Zahl z Iiegt. Sie ist I, falls z in der rechten Halbebenen (Re(z) > 0, oder Re(z) = 0 und Im(z) 2: 0) Iiegt und -I, falls z in der Iinken Halbebenen (Re(z) < 0, oder Re(z) = 0 und Im(z) < 0) Iiegt. Die zweite Form berechnet die Ableitung der csgn-Funktion an der Stelle z. Diese Funktion wird dazu benutzt, die Ebene (,Jinks" oder ,,rechts") zu bestimmen, in der der komplexwertige Ausdruck oder die komplexwertige Zahl x liegt. 0 csgn (I); セ@ 1 0 Siehe auch: evalc, sign, signum. D D( f)

D[i] (f) D[i, j, ... ](f) Differentialoperator 0 Die erste Form berechnet die Ableitung einer univariaten Funktion. Die zweite Form berechnet die partielle Ableitung in bezug auf das ite Argument einer multivariaten Funktion. Die dritte Form berechnet Ableitungen Mherer Ordnung. Sie ist aquivalent zu D [i] (D [j, ... ] ( f) . Die Ableitung wird als eine Funktion zuriickgegeben. 0 D (s inh) ; セ@ cosh 0 D(sin+tan); セ@ cos+l + tan 2 0 D(x->x'2); セ@ x -+ 2x 0 D[ 1,2,2] «x, y) ->x'2*y'3); セ@ (x, y) -+ 12 x y 0 Siehe auch: diff, unapply.

dawson dawson (x) Dawsons Integral 0 Dawsons Integral ist definiert als e-,,2 fo" e t2 dt. 0 Man muB erst readlib (dawson) eingeben, bevor man diesen Befehl benutzen kann. 0 Siehe auch: erf, Fresnel.

143

AIle Maple-Befehle debever curvature (spincf, info, flag) npspin(h, info, coords, flag) printcurve(kurve) printspin(spincf) simp (name, f, spincf) Eine Samlung von Prozeduren zur Berechnung der Newman-Penrose Spinkoeffizienten und Kriimmungskomponenten unter Benutzung des Formalismus von Debever 0 Die Argumente sind h ein von 0 bis 15 indiziertes Feld ein noch nicht zugewiesener Name info coords eine Liste von vier Variablennamen ein optionales Argument zur Unterdriickung der Ausgabe flag die folgenden: spincf ein von 0 bis II indiziertes Feld ein noch nicht zugewiesener Name name ein Prozedurenname f ein von 0 bis 11 indiziertes Feld curve npspin berechnet die Spinkoeffizienten; sie werden als Feld mit Namen spine f zuriickgegeben. printspin druckt aile Spinkoeffizienten" aus. curvature berechnet die Kriimmungskomponenten; sie werden als Feld mit Namen curve zUriickgegegen. printcurve druckt aile Krtimmungskomponenten aus. simp vereinfacht die Feldkomponenten unter Benutzung der Funktion f, wobei das neue Ergebnis der Variablen name zugewiesen wird. Man muB readlib (debever) eingeben, bevor man diese Funktionen benutzen kann. 0 Siehe auch: cartan, tensor.

debug debug ( fl' f2' ... ) Mit dieser Funktion kann man den Ablauf der genannten Prozeduren zum Zwecke der Fehlersuche verfolgen 0 Werden die genannten Prozeduren nun aufgerufen, so werden die Eintrittsstellen, berechnete Zwischenresultate, sowie die Rtickkehrstellen ausdgedruckt. Synonym fUr trace. o Siehe auch: infolevel, printlevel, profile, trace, undebug, untrace, userinfo. define define(linear(oper» define (group (oper, id, invoper» define (oper, propertYl, propertY2, ... ) Definiert die Charakteristiken eines Operatomamens 0 Diese Funktion definiert die Auswertungs- und Vereinfachungsregeln eines Operators. Das erste Schema macht oper zu einem linearen Operator. Das zweite bestimmt ein Gruppengesetz fUr oper, mit gegebenem Einheitselement und Inversem. Die dritte Form listet spezielle Eigenschaften ftir den Operator auf. Diese konnen unary, binary, associative, commutative, symmetric,antisymmetric, inverse=invoper, identity=id, zero=zero oder forall (vars, oper (argsJ! =resl, ... ) sein. Der Ausdruck forall definiert spezielle Beziehungen, die fUr gewisse Argumente des Operators gelten. 0 define('&+', associative, binary, commutative, identity=O); 0 define(F, forall(x, F(l/x)=F(x»); degree degree (poly, vars) Grad eines Polynoms 0 Das erste Argument kann negative ganzzahlige Exponenten enthalten. vars kann eine einfache Unbekannte oder eine Liste oder Menge von Unbekannten sein. Bei einer Menge wird der Gesamtgrad benutzt, bei einer Liste der Vektorgrad. 0 degree Hクセ@ 3 +x セ@ 2 , x) ; ----t 3 0 Siehe auch: lcoeff, ldegree. denom denom(ausdr) Nenner eines Ausdrucks 0 Falls ausdr nicht in Normalform ist, so wird erst in Normalform umgewandelt. 0 denom (18 / 4); ----t 2 0 Siehe auch: normal, numer. DESol DESol(dgls) DESol(dgls, vars) DESol(dgls, vars, glgen) Stellt die Losung einer Diffentialgleichung bzw. einer Menge von Differentialgleichungen dar 0 Diese Funktion ermoglicht es, die Losung einer Differentialgleichung symbolisch zu manipulieren,

144

debever - DEtools[DEplot2] ohne sie vorher zu berechnen. Maple kann differenzieren, integrieren, numerisch auswerten und eine Reihenentwicklung fiir eine DEsol-Struktur berechnen. vars ist eine einfache Variable oder eine Menge von Variablen; glgen ist entweder eine einfache Anfangswertbedingung oder eine Menge von Anfangswertbedingungen. 0 Diese Funktion ist neu in Version 3. 0 Siehe auch: dsolve. Det Det(A) Starre Determinantenfunktion 0 Diese Funktion dient aIs PlatzhaIter zur Darstellung der Determinanten einer Matrix A. Sie wird in Zusammenhang mit mod und modpl benutzt, welche den Definitionsbereich der Koeffizienten festJegen. 0 Det (array ( [ [3 , 2] , [8, 7]] ) ) mod 2; --+ 1 0 Siehe auch: linalg [det], mod, modpl.

DElools Paket zur Behandlung von DifferentiaIgleichungen 0 Die Funktionen dieses Pakets miissen erst mit wi th eingeIaden werden, bevor man sie aufrufen kann. Einige Funktionen dieses Pakets erzeugen Graphiken. Zuslitzlich zu den gewohnlichen Plotoptionen akzeptieren diese Funktionen mehrere zuslitzliche Optionen, weIche auf Seite 96 aufgelistet sind. 0 Siehe auch: DEtools [ function], with. DEtools[Dchangevar] Dchangevar(glchgmenge, diffglchg, konstantmenge) Nimmt einen Variablenwechsel bei einer DifferentiaIgleichung vor 0 Gegeben sei eine DifferentiaIgleichung nter Ordnung und eine Menge von G1eichungen, dann nimmt diese Funktion eine Ersetzung dieser G1eiehungen in der DifferentiaIgleichung vor. Diese Routine verhlilt sich wie subs, umgeht aber das Problem, daB man subs nieht auf diff zur Anderung des zweiten Arguments anwenden kann. Das optionaIe dritte Argument stellt eine Menge von Variablen dar, die von der Funktion aIs Konstanten behandelt werden sollten. 0 Siehe auch: s tuden t [ changevar ], subs. DEtools[DEplot] DEplot(diffglchg, vars, tbereich, initmenge, options) DEplot(diffglchg, vars, tbereich, xbereich, ybereich, options) Zeiehnet die Losung eines Systems von DifferentiaIgleichungen 0 Gegeben sei ein System von DifferentiaIgleichungen erster Ordnung der Form x' = h(t, x, y), y' = h(t, x, y), oder eine DifferentiaIgleichung hoherer Ordnung der Form y( x) f (x, y) und eine Menge von Anfangsbedingungen. Diese Funktion zeichnet die Ulsungskurven fiir das System von DifferentiaIgleichungen unter den gegebenen Anfangsbedingungen. Fiir nicht-autonome Systeme werden aIs Voreinstellung Losungskurven in den ersten drei Variablen gezeigt. Fiir ein autonomes System zweier G1eichungen wird aIs Voreinstellung eine zweidimensionaIe Graphik, nlimlich x gegen y gezeigt. Das zweite Argument, vars, kann in der Form [t, y] oder y ( t) gegeben sein. tbereich kann die Form a .. b oder t=a .. b haben. 0 DEplot (diff (y (x) ,x$3) +x*y = 2, [x,y], -1 .. 3, ([1,0,0,0]}); oSieheauch:DEtools[DEplotl], DEtools [DEplot2], DEtools [dfieldplot], DEtools [phaseportrait], dsolve.

inn

=

DEtools[DEplotl] DEplotl(diffglchg, vars, tbereich, initmenge, options, ... ) DEplotl(diffglchg, vars, tbereich, ybereich, options, ... ) Zeichnet die Liisung zu einer DifferentiaIgleichung erster Ordnung 0 Gegeben sei eine einzige DifferentiaIgleichung erster Ordnung, dann erzeugt diese Funktion einen Graph der Losungskurve der DifferentiaIgleichung fiir die gegebenen Anfangswerte, sowie ein Gitter von Pfeilen, die das Richtungsfeld der G1eichung anzeigen sollen. Sind keine Anfangswerte spezifiziert, so werdennurdiePfeilegezeichnet. 0 DEplotl(diff(y(t),t) = cos(t-y), y(t), t=-pi .. pi, ([O, 1]' [0,0]' [0, -I]}); Siehe auch: DEtools[DEplot], DEtools [DEplot2], DEtools [dfieldplot], DEtools [phaseportrai t], dsolve. DEtools[DEplot2] DEplot2(diffglchg, vars, tbereich, initmenge, options) DEplot2(diffglchg, vars, tbereich, xbereich, ybereich, options) Zeichnet die Losung zu einem zweidimensionaIen System von DifferentiaIgleichungen Gegeben h(t, x, y), y' h(t, x, y) seien zwei DifferentiaIgleichungen erster Ordnung der Form x, und eine Menge von Anfangswerten. Dann zeichnet diese Funktion die Liisungskurven fllr das DifferentiaIgleichungssystem unter diesen Anfangswertbedingungen. FUr nieht-autonome

=

=

145

-

Alle Maple-Befehle Systeme wird als VoreinsteUung eine dreidimensionale Graphik der Uisungskurven gezeigt. Fur ein autonomes System zweier Gleichungen wird als VoreinsteUung eine zweidimensionale Graphik, nlimlich x gegen y gezeigt. Das Richtungsfeld wird zugefugt, wenn nicht von t abhlingt. Sind keine Anfangswerte spezifiziert, so werden nur die Pfeile geieichnet. o DEpIot2([y,-x+y/7], [x,y], -5 .. 5, ([O,l,l]l. stepsize=.l); 0 Siehe auch: DEtools [DEpIot], DEtools [DEpIotl], DEtoo1s [dfieldplot], DEtools [phaseportrai t], dsol ve.

?

DEtools[dfieldplot] dfieldpIot(diffglcg, vars, tbereich, options) Zeichnet das Richtungsfeld eines ein- oder zweidimensionalen Systems von Differentialgleichungen 0 Gegeben sei eine Differentialgleichung erster Ordnung oder ein Paar von Gieichungen, bei denen die unabhlingige Variable eliminiert werden kann; dann erzeugt diese Funktion ein Gitter von Pfeilen, welches das Richtungsfeld der Differentialgleichung(en) skizziert. Das zweite Argument, vars, kann entweder in der Form [t, y] oder in der Form y ( t) gegeben sein. tbereich kann von derForma .. bodert=a .. bsein. 0 dfieldpIot(y'2*cosh(x), [x,y], -4 .. 4); o Siehe auch: DEtools [DEpIot], DEtools [DEpIotl], DEtools [DEplot2], DEtools [phaseportrait], dsolve. DEtools[PDEplot] PDEplot(pdiffglchg, vars, inits, sbereich, options) Zeichnet die Uisung einer quasi-linearen partiellen Differentialgleichung erster Ordnung 0 Diese Funktion erzeugt die L6sungsftliche einer quasi-linearen, partiellen Differentialgleichung erster Ordnung der Form P(x, y, u) u",(x, y) Q(x, y, u) Uy(x, y) = R(x, y, u). pdiffglchg soUte eine Liste von P, Q und R sein, wobei diese Ausdriicke oder Funktionen sind. vars kann entweder von der Form [x, y, u] oder u (x, y) sein. inits ist eine Liste der Llinge drei, die die parametrische Form einer Kurve im Dreidimensionalen in kartesischen Koordinaten beschreibt. sbereich ist der Bereich der anfanglichen Datenparameter. 0 PDEpiot ( [u, 1, 0] , [x, y, u], [s, 2 *s, 3 *sJ. s=O .. l); 0 Siehe auch: liesynun.

+

DEtools[phaseportrait] phaseportrait(diffglchg, vars, tbereich, inits, options) Zeichnet das Phasenportrait eines ein- oder zweidimensionalen Systems von Differentialgleichungen 0 Gegeben seien eine oder zwei Differentialgleichungen erster Ordnung der h(t,x,y), y' h(t,x,y) und eine Menge von Anfangswerten. Diese Form x' Funktion erzeugt dann einen Graphen der Integralkurven zu diesem System von Differentialgleichungen unter den gegebenen Anfangswertbedingungen. FUr nicht-autonome Systeme zweier Gieichungen wird als Voreinstellung eine dreidimensionale Graphik der Integralkurven erzeugt, fiir autonome Systeme wird als Voreinstellung eine zweidimensionale Graphik, nlimlich x aufgezeichnet gegen y gezeigt. Das Richtungsfeld wird dann hinzugefiigt, wenn von t unabhlingig ist. 0 phaseportrai t ( [y, -x+y /5], [t, x, y] , 0 .. 15, {[1:1,1],[2,2,1]}, stepsize=.2); oSieheauch:DEtools[DEplot], DEtools [DEplot1], DEtools [DEplot2], DEtools [dfieldplot], dsolve.

=

=

?

diagonal Die diagonale Indexfunktion 0 Diese Funktion ergibt Null, falls die Komponenten eines Feldoder eines Tabellenindex nicht alle identisch sind. Man verhindert das nochmalige Zuweisen von Nebendiagonalelementen, wenn man diese Indexfunktion zur Definition eines Feldes oder einer Tabelle verwendet. 0 Siehe auch: array, identity, linalg [diag], table.

diff diff (ausdr, varl) diff(ausdr, varl, var2, ... ) PartieUe Differentiation 0 Diese Funktion berechnet die partieUe Ableitung eines Ausdrucks nach der benannten Variable bzw. nach den benannten Variablen. diff (ausdr, x, y) ist gleichwertig mit diff (diff (ausdr, x), y). Die Ableitung wird als ein Ausdruck(expression) zurUckgegeben. 0 diff (sinh (a *x), x); ---> cosh(a x) a 0 diff (x'2 *y'3, x,y,y); ---> 12xy 0 diff (t*ln(t) -t, t$3); ---> 0 Siehe auch: $, D, Diff, dsolve, into

-fr

DiIT Diff (ausdr, vaq) Diff(ausdr, varl, var2, ... ) Starre partielle Differentiation 0 Diese Funktion gibt die Ableitung einfach unausgewertet zurUck. 0 Diff (cos (x), x, x); ---> セ@ cos(x) 0 Siehe auch: D, Diff, Int.

146

DEtools[dfieldplotl- difforms[type1 difforms Paket fiir DifferentiaIformen

0

Siehe auch: di f forms [ functionl, wi tho

difforms[&A] ausdri &A ausdr2 &A(ausdq, ausdr2' ... ) Dachprodukt 0 Dieser Operator berechnet das Dachprodukt von DifferentiaIformen. difforms[ d) d(ausdr) d(ausdr, forms) Berechnet die iiuBere Ableitung des Ausdrucks 0 Wird diese Funktion mit einer Liste von I-Formen aIs zweites Argument aufgerufen, so wird jede Variable des Ausdrucks vom Typ scalar in diese I-Formen umgeformt. Man nimrnt an, daB diese I-Formen unabhangig sind. Fiir jede I-Form wird ein neuer skaIarer Wert erzeugt, der dann die Komponente dieser I-Form darstellt. FaIls der Ausdruck eine Liste ist, so wird d auf jedes Element in der Liste angewandt. 0 Siehe auch: D, diff, difforms [mixparl. difforms[defform] defform(glchgI, glchg2' ... ) Definiert die in einer Berechnung benutzten Variablen 0 Die Variablen ktinnen auf zweierlei Arten definiert werden: name =type und d ( ausdrl ) =ausdr2. Die erste Variante bestimmt, daB name vom Typ type sei, z. B. const, even, form, nonhmg, odd oder scalar. Die zweite Form definiert die iiuBere Ableitung von ausdq. Indem man diese Funktion benutzt, ltischt man die Eintriige der Buchfiihrungstabelle fiir aIle Funktionen des Pakets difforms; die wiihrend der Sitzung durch de f form gemachten Definitionen bleiben aIlerdings erhaIten. defform(c=const, s=scalar, f=form); 0 Siehe auch: difforms [typel.

0

difforms[formpart] formpart(ausdr) Finde den Formteil des Ausdrucks 0 Diese Funktion e1iminiert aIle SkaIare und Konstanten eines Produkts, so daB nur der Teil iibrig bleibt, der die eigentliche Form darstellt, oder der Teil, der undeklariert ist. 0 Siehe auch: difforms [scalarpartl. difforms[mixpar] mixpar(ausdr) Stellt die Gleichheit von gemischten partie lien Ableitungen sicher 0 Diese Funktion ordnet geschachteIte Aufrufe von di f f so urn, daB die gemischten Ableitungen aIs gleich erkannt werden. 0 Siehe auch: diff, sort. difforms[parity J parity (ausdr) Erweiterung mod 2 0 Diese Funktion berechnet die Paritiit eines Ausdrucks, wobei unspezifizierte Exponenten aIs ganze ZalIlen betrachtet werden. difforms[scalarpartJ scalarpart(ausdr) Findet den skaIaren Teil des Ausdrucks 0 Diese Funktion sammelt die SkaIaren und Konstanten eines Produkts, wobei die Teile, die eine Form darstellen oder die undeklariert sind, weggelassen werden. 0 Siehe auch: difforms [formpartl. difforms[simpformJ simpform(ausdr) Vereinfacht einen solchen Ausdruck, der Formen enthiilt 0 Unter Vereinfachungen versteht man das Sammeln gleicher Faktoren, die Vereinfachung von Dachprodukten und das Herausziehen skaIarer Faktoren. difforms[type] type (ausdr, const) type (ausdr, form) type (ausdr, form, n) type (ausdr, scalar) Sucht nacch Konstanten, Formen und SkaIaren 0 Diese Funktion gibt entweder true oder false zuriick. Der Typ const entiIiilt aIles was vom Typ constant ist, sowie zusiitzlich const through solche Namen, die durch di f forms [def forml aIs cons t deklariert wurden. Genauso

147

ItI

AIle Maple-Befehle gehoren zu form und scalar aile Namen, die entsprechend definiert wurden. Die dritte Variante priift, ob ausdr eine Form mit wdegree n ist. Die drei hier behandelten Typen schlieBen sich gegenseitig aus. 0 Siehe auch: type, type/constant, difforms [wdegree). diffonns[wdegree] wdegree(ausdr) Grad einer Form 0 Diese Funktion berechnet den Grad eines Ausdrucks, wenn er als Form betrachtet wird und gibt nonhmg zuriick, wenn der Ausdruck eine Summe von Formen verschiedenen Grades ist. Digits Umgebungsvariable 0 Die Anzahl der Ziffern, die bei Gleitkommaarithmetik immer beibehalten werden. Der voreingestellte Wert ist 10.

dilog dilog{x) Die Dilogarithmusfunktion

t7l'2

0

Diese Funktion sit definiert als

f1x セ@

dt

0

di log ( 0); セ@

dinterp dinterp{f, n, k, d, p) Stochastische Gradinterpolation 0 Gegeben sei eine Funktion f, die ein Polynom in n Unbekannten modulo p auswertet, sowie eine Obergrenze ftir den Grad d in der kten Variablen, dann berechnet diese Funktion den Grad der kten Variablen im von f berechneten Wert auf stochastische Weise. 0 Man muB erst readlib (dinterp) eingeben, bevor man diesen Befehl benutzen kann. Dirac Dirac (x) Dirac{n, x) Die Diracsche Deltafunktion 0 Die Diracfunktion ist tiberall gleich Null, mit Ausnahme vom Dirac( x) dx = Punkt 0, wo sie eine Singularitiit besitzt. Sie besitzt auBerdem die Eigenschaft ヲセッ@ 1. Die zweite Form berechnet die nte Ableitung der Diracfunktion an der Stelle x. 0 Siehe auch: fourier, Heaviside, laplace, mellin. disassemble disassemble (zgr) Bricht das Objekt an der gegebenen Adresse in seine Teile auf 0 Es wird eine Folge von Adressen zUriickgegeben, wObei die erste ganze Zahl dieser Folge den Typ des Objekts anzeigt. Dies Funktion erlaubt es, auf die interne Darstellung eines Objekts zuzugreifen. 0 disassemble (addressof (a+2*b»; セ@ 11, 1404964, 1240560, 1410692,1240576 o Siehe auch: addressof, assemble, point to. discont discont{ausdr, var) Berechnet aile Unstetigkeiten des Ausdrucks in bezug auf die angegebene Variable 0 Ftir diese Funktion gibt es keine Hilfsseite On-Line. 0 Man muB erst readlib{discont) eingeben, bevor man diesen Befehl benutzen kann. 0 discont {x 2+1/x, x}; セ@ {O} discont{cot{x} ,x}; セサWiG⦅zQス@ 0 Sieheauch:iscont, singular. A

discrim discrim{poly, var} Berechnet die Diskriminante des Polynoms. 0 discrim{x 3+a*x+b, x); -4 a3 - 27 b2 0 Siehe auch: Discrim, resultant. A

0

セ@

Discrim Discrim{poly, var} Starre Diskriminante des Polynoms 0 Wird diese Funktion zusammen mit mod benutzt, so wird die Diskriminate des Polynoms tiber einem gegebenen Bereich flir die Koeffizienten berechnet. 0 Discrim(x 2+x+l,x} mod 2; セQ@ 0 Sieheauch:discrim, Resultant. A

148

difforms[ wdegree] - dsolve DistDeg DistDeg(poly, var) mod p Faktorisierung gemliB verschiedener Grade 0 Wird diese Funktion zusammen mit mod benutzt, so berechnet diese Funktion die Faktorisierung gemliB verschiedener Grade, eines quadratfreien, univariaten Monoms tiber einem gegebenen Definitionsbereich. Zuriickgegeben wird eine Liste von Paaren der Form [q, d]. wobei q das Produkt der Faktoren von poly vom Grad d ist. 0 DistDeg(x A4+x, x) mod 2; -----+[[x 2 +x,1].[x 2 +x+l,2J] oSieheauch: Factors, Sqrfree. divide divide (polYI, polY2, name) Prtift, ob poln polYJ tiber den rationalen Zahlen teilt 0 Die Polynome mtissen rationale Koeffizienten besitzen. Diese Funktion ergibt true oder false. 1st das Ergebnis true und ist ein Name spezifiziert, so wird diesem der Quotient zugewiesen. 0 divide (x A2_y A2, x+y); -----+ true 0 Siehe auch: Divide, gcd, quo, rem. Divide Divide (polYl, polY2' name) Starrer Test zur Division von Polynomen 0 Diese Funktion priift, ob poln polYI tiber einem gegebenen Definitionsbereich der Koeffizienten teilt. Diese Funktion wird in Zusammenhang mit evala, evalgf, mod und modpl benutzt. 1st das Ergebnis true und ist ein Name spezifizert, so wird diesem der Quotient zugewiesen. 0 Divide (xA2+yA2, x+y) mod 2; -----+true 0 Siehe auch: divide, evala, evalgf, Gcd, mod, modpl, Quo, Rem. do for var from ausdrl to ausdr2 by ausdr3 do statements od for var in ausdr do statements od while bed do anweisungen od for var ... while bed do anweisungen od do anweisungen od Die Wiederholungs- (Schleifen-) Anweisung 0 Die erste for-Schleife fiihrt die Anweisungen sooft aus, wie die Indexvariable anzeigt, wobei die Indexvariable var Werte zwischen ausdq und ausdr2 annimmt; nach jedem Schleifendurchlauf wird die Variable urn ausdr3 erhoht. Jede der from, to und by-Klauseln ist optional( voreingestellt sind I, Unendlich und 1), und sie konnen in beliebiger Reihenfolge auftreten. Die zweite f or-Schleife Hillt var die Werte der aufeinanderfolgenden Operanden in ausdr annehmen. Die Anzahl der Operanden bestimmt die Anzahl der Schleifendurchlaufe. Die while-Schleife ftihrt die Anweisungen aus, solange die Bedingung cond true ist. Die Bedingung wird zu Beginn eines jeden Schleifendurchlaufs geprtift. Die for und while-Formen konnen zu einer einzigen Schleife kombiniert werden. Eine do-Anweisung ohne soIche Klauseln durchlauft die Schleife unendlich oft, bzw. solange bis eine Anweisungwiez.B.breakauftritt. s:=O: for i to 5 by 2 do s:=s+i od: s; - 9 0 s:=O: for i in [1,3,5] do s:=s+i od: s; -----+90 t:=O: while t X y4 - x 2 z3 0 Siehe auch: grobner [leadmonl.

group Paket zum Manipulieren von Permutationsgruppen und endlich dargestellten Gruppen 0 Die Funktionen dieses Pakets mtissen zuerst mit wi th geladen werden, bevor man sie benutzen kann. Bei den Beschreibungen der Funktionen dieses Pakets steht G imer ftir eine Gruppe, H fUr eine Untergruppe, g ftir ein Gruppenelement und perm fUr eine Permutation. ¢ Siehe auch: group [function], with. group[areconjugate] areconjugate(G, gl, g2) Priift, ob zwei Elemente einer gegebenen Permutationsgruppe G zueinander konjugiert sind 0 gl und g2 mUssen Elemente von G sein. Diese Funktion ergibt entweder true oder false. ¢ Siehe auch: group [permgroup], group [RandElement]. group[ center] center (G) Berechnet das Zentrum der Permutationsgruppe G 0 Das Zentrum ist die Untergruppe, die aus all den Elementen besteht, die mit jedem Element von G kommutieren. Das Ergebnis dieser Funktion ist vom Typ permgroup. 0 center (permgroup (3, {[ [1,2, 3ll , [ [1, 2ll } ) ) ; --> permgroup(3, { }) 0 Siehe auch: group [centralizer], group [normalizerl. group[ centralizer] centralizer(G, permmenge) centralizer(G, perm) Finde den Zentralisator einer Menge von Permutationen oder einer einfachen Permutation 0 G ist eine Permutationsgruppe. Der Zentralisator ist die Untergruppe aller Elemente von G, die mitjeder Permutation in permmenge (oder mit der einfachen Permutation perm) kommutieren. perm braucht kein Element von G zu sein. Das Ergebnis dieser Funktion ist eine permgroup. o centralizer(permgroup(3, {[[1,2,3]], [[1,2ll}), [[1,2]]);--> peremgroup(3,{[[1, 2J]}) 0 Siehe auch: group [permgroup 1.

177

ABe Maple-Befehle group[ convertJdisjcyc] convert (permliste, disjcyc) convert (wort, disjcyc, G) Wandelt eine Permutation in Listenschreibweise bzw. ein Wort in disjunkte Zyklen urn permliste ist eine Permutation in Listenschreibweise: eine Liste, deren ites Element das Bild von i unter der Permutation ist. Die Permutation wird als disjunkte Zyklen geschrieben zuriickgegeben. wort ist ein Wort der erzeugenden Namen von G. Das von wort dargestellte Produkt wird berechnet und als disjunkte Zyklen geschrieben zurUckgegeben. Diese Funktion kann nur nach dem Einladen des group-Pakets aufgerufen werden. convert ( [3,4,1,2] ,disjcyc) ; ----> [[1,3], [2,4)) Siehe auch: group [convert/permlist], group [permgroup], group [grelgroup], group [type/disjcyc]. group[ convertJpermlist] convert (perm, permlist, n) Wandelt eine Permutation, die als disjunkte Zyklen geschrieben ist, in Listenschreibweise urn n ist der Grad der Permutation perm. Das Ergebnis ist eine Liste deren ites Element das Bild von i unter perm ist, fUr i = Ln. Diese Funktion kann nur nach dem Einladen des group-Pakets aufgerufen werden. convert ( [ [1,3] , [2,4]], permlist, 4) ; ----> [3,4,1,2) Siehe auch: group [convert/disjcyc], group [permgroup], group[type/disjcyc]. group[core] core(H, G) Findet den Kern einer Untergruppe einer Permutationsgruppe Diese Funktion berechnet die groBte normale Untergruppe der Permutationsgruppe G, die in der Untergruppe H enthalten ist. Das Ergebnis ist eine permgroup. Siehe auch: group [issubgroup], group[NormalClosure]. group[ cosets] cosets(H) cosets(G, H) Berechnet eine vollstandige Liste aller Vertreter der rechten Nebenklasse fUr eine Untergruppe der Permutationgruppe oder eine Untergruppe einer Gruppe, die durch Erzeugende und Relationen definiert ist FUr Gruppen, die durch Erzeugende und Relationen definiert sind, sollte Heine subgrel sein. Das Ergebnis ist eine Menge von Worten in den Erzeugenden dieser Gruppe. FUr Permutationsgruppen sollte Heine Untergruppe von G sein. Das Ergebnis ist eine Menge von Permutationen, gesehrieben als disjunkte Zyklen. Siehe auch: group [cosrep 1, group [grelgroup], group [subgrel], group [permgroup] . group[cosrep] cosrep(g, H) Stellt ein Gruppenelement als Produkt eines Elements einer Untergruppe mit einem Vertreter der reehten Nebenklasse dieser Untergruppe dar Diese Funktion ergibt eine Liste zweier Elemente: ein Element von H und ein Vertreter der rechten Nebenklasse von H. Falls H ein subgrel ist, dann sollte g ein Wort in den Erzeugenden der Gruppe sein. FaIls Heine permgroup ist, dann sollte g eine Permutation geschrieben als disjunkte Zyklen sein. In diesem Fall werden die Nebenklassen von H in der symmetrischen Gruppe berechnet, die vom gleichen Grad wie H ist. Siehe auch: group [permgroup], group [subgrel], group [cosets]. group[ derived] derived (G) Berechnet die abgeleitete Untergruppe [G, GJ der gegebenen Permutationsgruppe G Das Ergebnis dieser Funktion ist eine permgroup. derived (permgroup (3, { [ [1,2,3]] , [ [1,2]] } ) ); ----> permgroup(3, {[ ), [[1,2, 3))}) Siehe auch: group [DerivedS], group [LCS], group [permgroup]. group[DerivedS] DerivedS(G) Berechnet die abgeleitete Reihe der gegebenen Permutationsgruppe G Die abgeleitete Reihe bestimmt, ob G auftosbar ist. Diese Funktion ergibt eine Liste von Objekten des Typspermgroup. DerivedS(permgroup(3,{[[1,2,3]], [[1,2]1})); ----> [permgroup(3, {[[I, 2, 3]), [[1, 2))}), permgroup(3, {[ ), [[1, 2, 3))}), permgroup(3, {[ )})J Siehe auch: group [derived], group [LCS], group [permgroup].

178

group [convertJdisjcyc] - group[LCS] group[grelgroup] grelgroup(genmenge, relmenge) Stellt eine Gruppe durch Erzeugende und Relationen dar genmenge ist eine Menge von Namen, den Erzeugenden dieser Gruppe. relmenge ist eine Menge von Worten in den Erzeugenden, den Relationen, die die Gruppe definieren. Ein Wort wird dargestellt a1s eine Liste von Erzeugenden und Inversen der Erzeugenden. Das Inverse eines erzeugenden Elements a wird a1s 1 I a dargestellt. Eine leere Liste steht fiir das leere Wort. Diese Funktion liefert den Aufruf grelgroup zuriick. grelgroup({a,b}, {[a,a,a]' [b,b]' [a,b,a,l/b]}): Sieheauch: group [convert/disjcyc], group [permgroup], group [subgrel].

group[groupmember] groupmember(perm, G) Priift, ob eine Permutation in der Permutationsgruppe G vorhanden ist Das Ergebnis Dieser Funktion ist entweder true oder false. groupmember ( [ [1,2] ] , permgroup (4, { [ [1, 2 , 3 ] ] , [ [1, 2] , [3, 4] ] } ) ); ---+ false Siehe auch: group [permgroup].

group[grouporder] grouporder(G) Berechnet die Ordnung einer Gruppe Diese Funktion ergibt die Anzahl der Elemente G, eine permgroup oder aber eine grelgroup. grouporder (pE!!rmgroup (4, { [ [1,2, 3]] , [ [1,2], [3,4]] } ) ) ; ---+ 12 Sieheauch: group [permgroup], group [grelgroup] .

group[inter] inter (G1, G2) Berechnet den Schnitt zweier Permutationsgruppen Die Gruppen miissen denselben Grad haben. Das Ergebnis dieser Funktion ist eine permgroup. Siehe auch: group [permgroup] .

group[invperm] invperm(perm) Berechnet die inverse Permutation zu einer gegebenen Permutation Die inverse Permutation wird a1s disjunkte Zyklen dargestellt. invperm ( [ [1, 2 , 3 ] , [4, 5] ] ); ---+ [[1,3,2]' [4, 5]] Siehe auch: group [mulperms], group [permgroup] .

group[isabelian] isabelian(G) Bestimmt, ob die Permutationsgruppe G abelsch ist Diese Funktion ergibt entweder true oder false. isabelian(permgroup(4, {[[1,2,3]]' [[1,2]' [3,4]]))); ---+ false Siehe auch: group [permgroup].

group[isnormal] isnormal(H) isnormal (G, H) Bestimmt, ob eine Untergruppe normal ist Die erste Variante priift, ob die subgrl H normal ist, die zweite Form stellt fest, ob die Permutationsgruppe H normal in der Permutationsgruppe Gist. G und H miissen denselben Grad besitzen. Diese Funktion ergibt entweder true oderfalse. isnormal(subgrel({x=[a]}, grelgroup({a,b}, ([a,a,a], [b,b], [a,b,a,b]}))); ---+ true Siehe auch: group[issubgroup], group [permgroup], group [subgrel], group [grelgroup] .

group[issubgroup] issubgroup(H, G) Stellt fest, ob die Permutationsgruppe Heine Untergruppe der Permutationsgruppe Gist G und H miissen vom selben Grad sein. Diese Funktion ergibt entweder true oder faLse. issubgroup(permgroup(4, {[[1,2], [3,4]]), permgroup(4, {[[1,2]], [ [1, 2 , 3 , 4] ] } ) ); ---+ true Siehe auch: group [permgroup], group [ i snormal] .

group[LCS] LCS(G) Berechnet die niedere Zentrumsreihe der Permutationsgruppe G Diese Reihe bestimmt, ob G nilpotent ist und ggf. die Klasse der Nilpotenz. Zuriickgegeben wird eine Liste von Objekten vom Typ permgroup. LCS (permgroup (3, {[ [1,2,3]] } ) ) ; ---+ [permgroup(3,{[[1, 2, 3))}), permgroup(3, {[]})l Siehe auch: group [der i ved], group [DerivedS].

179

Alle Maple-Befehle group[mulperms] mulperms(perml, p erm2) Multiplikation zweier Permutationen, die als disjunkte Zyklen dargestellt sind 0 Diese Funktion gibt das Ergebnis geschrieben als disjunkte Zyklen zuriick. Permutationen wirperm2(perml (i)) ken auf die rechte Seite, deshalb gilt (perml * perm2)(i) o mulperms ( [ [1, 2 , 4] ] , [ [1, 2] , [3, 4]] ); --+ [[2,3,4]] 0 Siehe auch: group [invperm], group [permgroup].

=

group[NormalCldsure] NormalClosure(H, G) Berechnet den NormalabschluB einer Untergruppe einer Permutationsgruppe 0 Diese Funktion berechnet die kleinste normale Untergruppe der Permutationsgruppe G, die H enthiilt. ZurUckgegeben wird eine permgroup. 0 NormalClosure (permgroup (4, {[ [1,2]] } ) , permgroup (4, {[ [1,2]], [[ 1,2,3,4]] } ) ); --+ permgroup(4, {[[3,4]], [[2,3)), [[1,2])}) 0 Siehe auch: group [issubgroup], group [core].

group[normalizer] normalizer(G, H) Berechnet den Normalisator der Untergruppe H der Permutationsgruppe G 0 Diese Funktion berechnet die groBte Untergruppe von G, in der Heine normale Untergruppe ist. Das Ergebnis dieser Funktion ist eine permgroup. 0 Siehe auch: group [NormalClosure], group [permgroup].

group[ orbit] orbit(G, i) orbit (permmenge, i) Berechnet den Orbit eines Punktes unter der Aktion einer Permutationsgruppe oder einer Menge von Permutationen G 0 Der Orbit wird als eine Punktmenge zuriickgegeben. o orbit({[[1,2],[3,4]],[[1,2,3]]},3); --+{1,2,3,4} oSieheauch: group [permgroup] .

group[permgroup] permgroup(n, permmenge) Darstellung einer Permutationsgruppe 0 n ist der Grad der Permutationsgruppe und permmenge ist eine Menge von benannten oder unbenannten Permutationen, die die Gruppe erzeugen. Eine benannte Permutation hat die Form name perm. Eine Permutation wird als disjunkte Zyklen dargestellt: ein Zyklus ist eine Liste voneinander verschiedener ganzer Zahlen zwischen 1 und n; eine Permutation ist eine Liste paarweiser disjunkter Zyklen. Die identische Permutation wird durch die leere Liste dargestellt. Permutationen wirken immer auf die rechte Seite. Diese Funktion gibt den Aufruf permgroup zurUck. 0 permgroup ( 4 , {[ [1,2], [3,4]], [[2,3,4]]}): 0 Siehe auch: group [convert/disjcyc], group [convert/permlist], group [grelgroup], group [type/disjcyc].

=

group[permrep] permrep(H) Finde eine Permutationsdarstellung einer Untergruppe Heiner Gruppe, die durch Erzeugende und Relationen gegeben ist 0 H ist eine subgr 1. Diese Funktion lindet alle rechten Nebenklassen von H in ihrer Obergruppe G, weist diesen Nebenklassen ganze aufeinanderfolgende Zahlen zo, konstruiert eine Permutation dieser Nebenklassenzahlen fUr jedes erzeugende Element dieser Gruppe und gibt die durch diese Permutationen erzeugte Permutationsgruppe zurUck. Diese Gruppe ist ein homomorphes Bild von G, aber sie ist nicht notwendigerweise isomorph zu G. Diese Funktion gibt eine permgroup zurUck, deren Erzeugende genauso benannt sind wie die Erzeugenden der ursprUnglichen Gruppe. 0 permrep (subgrel ({x= [a] }, grelgroup ({a, b}, { [a, a, a], [b, b], [a, b, a, b] }) ) ); --+ permgroup(2,{a = [), b = [[1,2])}) 0 Siehe auch: group [permgroup], group [grelgroup], group [subgrel].

group[pres] pres (H) Berechnet eine Darstellung einer Untergruppe Heiner Gruppe, die durch Erzeugende und Relationen deliniert ist 0 Diese Funktion berechnet eine Menge von Relationen zwischen den Namen der Erzeugenden von H, die ausreicht, die Untergruppe zu delinieren. Das Ergebnis dieser Funktion ist eine grelgroup. 0 pres (subgrel ({x= [a] }, grelgroup ({a, b}, {[a, a, aJ. [b, bJ. [a, b, a, b] }) ) ); --+ grelgroup({x}, ([x, x, xj}) 0 Siehe auch: group [grelgroup], group [subgrel] .

180

group[mulperms]-heap[extract] group[RandElement] RandElement(G) Wahlt ein Zufallselement aus der Gruppe G aus G kann eine permgroup oder eine grelgroup sein. RandElement (grelgroup ({a, b}, {[a, a, a], [b, b, b] , [b, a, b, a] } ) ); ----> {セL@ セL@ セL@ b] Siehe auch: group [groupmember].

group[subgrel] subgrel(glchgsmenge, G) Darstellung einer Untergrupope einer Gruppe glchgsmenge ist eine Menge von Gleichungen der Form name = wort. name ist der Name des Erzeugenden der Untergruppe und wort ist ein Wort in den Erzeugenden der Gruppe G. Diese Funktion gibt den Aufruf subgrel zuriick. subgrel ({x= [b, l/a]), grelgroup ({a, b), ([a, a, al. [b, b, bl. [b, a, b, a] }) ): Siehe auch: group [grelgroup].

group[Sylow] Sylow(G, p) Findet die p-Sylow-Untergruppe der Permutationsgruppe G p ist eine Primzahl, die die Ordnung von G teilt. Diese Funktion findet eine maximale p-Gruppe, die in G enthalten ist. Zuriickgegeben wird eine permgroup. Sylow (permgroup (6, {[ [1,2]] , [ [1,2,3,4,5,6]] }), 3); ----> permgroup(4, ([[3, 4]], [[1,3,2, 4]]}) Siehe auch: group [grouporder], group [issubgroup], group [permgroup].

group[typeldisjcyc] type (ausdr, disjcyc(n)) Testet auf eine Permutation, geschrieben als disjunkte Zyklen Diese Funktion ergibt true, falls ausdr eine giiltige Permutation vom Grad n in disjunkter Zyklenschreibweise ist und false sonst. Diese Funktion kann nur dann aufgerufen werden, wenn das Paket group vorher geladen wurde. type ( [[3,4], [1,2]] ,disjcyc(4)); ----> true Siehe auch: group [convert/ disj cyc], group [convert/permlis t], group [permgroup] .

harmonic harmonic(z) Die harmonische Funktion Flir eine positive ganze Zahl n ist die harmonische Funktion 11k. Allgemein flir komplexe z ist sie w(z + 1) + "y. Urn den Wert dieser gegeben durch Funktion zu berechnen, muB man eval f benutzen. eval f (harmonic ( 100) ); ----> 5.187377518 Siehe auch: gamma, Psi.

2::;=1

has has (ausdr, teilausdrr) has (ausdr, liste) has (ausdr, mengel Testet auf einen bestimmten Teilausdruck In der ersten Variante ergibt diese Funktion true, falls ausdr den Teilausdruck teilausdr enthlilt; sonst wird false zuriickgegeben. Bei den anderen Varianten ergibt sich true nur dann, wenn der Ausdruck wenigstens einen der Teilausdriicke in der gegebenen Liste bzw. Menge enthlilt. has (a+b, a); ----> true Siehe auch: member, op.

hastype has type (ausdr, typ) Testet auf einen bestimmtem Typ Diese Funktion ergibt true genau dann, wenn ausdr irgendwelche Teilausdriicke vom Typ typ besitzt. has type (a + 2 *b, '*' ); ----> true Siehe auch: has, type, what type.

heap Routinen zur Datenstruktur ,,Heap" Man muB zuerst readl ib (heap) aufrufen, bevor man diese Befehle benutzen kann.

heap[empty] heap [empty] (h) Priift, ob der Heap h leer ist Diese Funktion ergibt entweder true oder false. Man muB erst readl ib (heap) eingeben, bevor man diesen Befehl benutzen kann.

heap[extract] heap [extract] (h) Nimmt das maximale Element aus dem Heap h heraus und gibt es zuriick. Man muB erst readl ib (heap) eingeben, bevor man diesen Befehl benutzen kann.

181

-

AIle Maple-Befehle heap[insert] heap [insert] (elem, h) Ftigt elem in den Heap h ein. 0 Man muB erst readlib (heap) eingeben, bevor man diesen Befehl benutzen kann. heap[max] heap [max] (h) Gibt das maximale Element des Heap h zurUck 0 Das Element wird nieht aus dem Heap entfemt. o Man muB erst readl ib (heap) eingeben, bevor man diesen Befehl benutzen kann. heap[new] heap [new] (f) heap [new] (f, ausdrl' ... , ausdr n ) Erzeugt einen neuen Heap 0 Gibt einen neuen Heap zurUck, wobei die Funktion mit Booischen Werten f als Funktion zur totalen Anordnung benutzt wird. Die optionalen Argumente ausdri sind Elemente, die direkt in den Heap eingefiigt werden. 0 Man muB erst read lib (heap) eingeben, bevor man diesen Befehl benutzen kann. heap[size] heap[size] (h) Ergibt die Anzahl der Elemente des Heap. man diesen Befehl benutzen kann.

0

Man muB erst readl ib (heap) eingeben, bevor

Heaviside Heaviside{x) Die Heaviside-Treppenfunktion 0 Diese Funktion ist 0 ftir x Dirac, fourier, laplace, mellin.

< 0 und I ftir x ::::

O.

0

Siehe auch:

help help (begriff) help{begriff, unterbegriff) help{begriff[unterbegriff]) Hilfe-Befehl 0 Schltisselworte in Maple mtissen in Hochkommata eingeschlossen sein. Es wird empfohlen, diese Funktion mit dem Fragezeiehen aufzurufen. 0 Siehe auch: ? Hermite Hermite {A, var) Hermite {A, var, name) Starre Hermite-Normalform 0 Wird diese Funktion zusammen mit mod benutzt, so berechnet sie die Hermite-Normalform (reduzierte Zeilen-Stufenform) einer rechteckigen Matrix univariater Polynome in var. Wird als drittes Argument ein Name angegeben, so wird diesem die Transformationsmatrix U zugewiesen, so daB das Ergebnis U A ist. 0 Siehe auch: linalg [hermi tel. Smith. history history { ) Baut eine Tabelle (Historie) aller berechneten Werte auf 0 Dieser Befehl beginnt, vorhergehende Befehle abzuspeiehem. Die Ausgabe aufeinanderfolgender Anweisungen wird in den Variablen 01,02, etc, abgespeichert. Der Befehl off setzt dieses wieder auBer Kraft. 1st dieser Mechanismus aktiv, so ist eine Miiglichkeit vorhanden, die Ausfiihrungszeit von Befehlen zu messen: man benutze timing (ausdr) , urn zu messen wie lange es dauert, ausdr auszuftihren. 1st der Historie-Mechanismus aktiv, so sind die Befehle "" + und " " " nicht ausftihrbar. 0 Man muB erst readlib (history) eingeben, bevor man diesen Befehl benutzen kann. 0 Siehe auch: showtime, time. hypergeom hypergeom{ [nl, ... , nj], [dl, ... , dk], var) Berechnet die verallgemeinerte hypergeometrische Funktion in der gegebenen Variablen Funktion ist definiert als

f

セカッイ@

m=O

カ。イュャセ⦅@

0

Diese

r(ni +m)/r(ni) m!

I1 i =l r( di + m) Ir( di)

Diese Funktion ist auch als j Fk bekannt. 0 Man muB erst readlib (hypergeom) eingeben, man diesen Befehl benutzen kann. 0 hypergeom ( [1] , [2] , z); --> e Z ; 1 0 Siehe auch: convert/hypergeom, GAMMA.

182

heap [insert]

iFFf

Quadratwurzel von -1 I steht fiir (-1) , (1/2). Siehe auch: alias.

icontent icontent(poly) Der ganzzahlige InhaIt eines Polynoms mit rationaIen Koeffizienten Der Inhalt ist der ggT der Zlihler der Koeffizienten geteilt durch das kgV der Nenner. das Polynom sollte in der erweiterten Formgeschriebensein. icontent(15/2*x+6*y); --> セ@ Sieheauch: content.

identity Die Identitats-Indexfunktion Diese Funktion ergibt I, faIls aIle Komponenten eines Feld- oder Tabellenindex identisch sind, 0 sonst. array (identity, 1 .. 3,1 .. 3): Siehe auch: array, diagonal, table.

if if bed then anweisungen fi if bed then anweisungen else anweisungen fi if bed then anweisungen elif bed then ... fi Die Auswahlanweisung (oder bedingte Anweisung) Ein bedingter Ausdruck ist ein Booischer Ausdruck, der mit Hilfe der Vergleichsoperatoren «, < =, >, >=, =, 3 x 2 Siehe auch: interp, mod, modpl. intersect mengel intersect menge2 'intersect' (mengel, menge2, ... ) Der Operator zum Schneiden von Mengen Diese Funktion gibt die Menge der Elemente zurilck, die injeder der angegebenen Mengen enthaiten sind. {a, b} intersect {b, c}; ----> {b} Siehe auch: minus, symmdiff, union. invfourier invfourier(ausdr, t, w) Inverse Fouriertransform Diese Funktion wendet die inverse Fouriertransformation auf ausdr an und zwar bezilglich der Variablen t, wobei ein Ausdruck in w zUrilckgeliefert wird. Ausdrilcke mit komplexen Exponentialfunktionen, Polynomen, trigonometrischen Funktionen mit linearen Argumenten und eine Vielzahl von Funktionen und anderer Integraitransformationen kiinnen transformiert werden. Die Diracsche Deltafunction Dirac und die Heaviside-Treppenfunktion Heaviside werden ebenso behandelt wie Ableitungen und Integraie. Diese Transformation ist definiert ais:

F(w)

= -27r1

1

00

(expr)e Itw dt

-00

Man muB erst readlib (fourier) eingeben, bevor man diesen Befehl benutzen kann. Siehe auch: fourier.

invfunc invfunc [fJ Tabelle der inversen Funktionen Diese Tabelle wird von solve, simplify und dem '@@ '-Operator benutzt, urn (explizite oder implizite) Vorkommen von Ausdrilcken der Form f@@ ( -1) durch die entsprechende inverse Funktion zu ersetzen. Eintriige konnen zu dieser TabelJe explizit hinzugefilgt oder auch geliischt werden. Man muB erst readl ib (invfunc) eingeben, bevor man diese TabelJe benutzen kann. Siehe auch: @@, solve, simplify.

invlaplace invlaplace(ausdr, s, t) Inverse Laplacetransformation Diese Funktion wendet die inverse Laplacetransformation auf ausdr beziiglich der Variablen s an, wobei ein Ausdruck in t zurilckgegeben wird. Transformiert werden kiinnen Summen von rationalen polynomialen Funktionen, sowie Summen von Termen mit Exponentialfunktion, Polynomen und Besselfunktion mit linearen Argumenten. Die Diracsche Deltafunktion Dirac, sowie die Heaviside-Funktion Heavis ide werden ebenfalls transformiert. Man muB erst readlib (laplace) eingeben, bevor man diesen Befehl benutzen kann. invlaplace (1/ (s-l) , s, t); ----> e t Siehe auch: Dirac, dsol ve, laplace. invztrans invztrans(ausdr, z, n) Inverse Z-Transformation Diese Funktion berechnet die inverse Z-Transformation eines Ausdrucks ausdr in der Variablen z, wobei sich ein Ausdruck in n ergibt. Diese Funktion berechnet die inverse Z-Transformation rationaler Polynome und einiger anderer spezieller Funktionen. Man muB erst readlib (ztrans) eingeben, bevor man diesen Befehl benutzen kann. invztrans(z/(z-a),z,n); ---->a Th Sieheauch:rsolve, ztrans. iperfpow iperfpow(n) iperfpow(n, name) Stellt fest, ob eine positive ganze Zahl eine perfekte Potenz einer anderen ganzen Zahl ist Gilt n = m k, so liefert diese Funktion das Ergebnis m. FAIL wird zurilckgegeben, wenn nieht mit Sicherheit gesagt werden kann, daB n eine perfekte Potenz ist. 1st ein Name als zweites Argument gegeben so wird diesem k zugewiesen. Man muB erst readlib (iperfpow) eingeben, bevor man diesen Befehl benutzen kann. iper fpow ( 343); ----> 7

186

Interp - iscont iquo iquo(m, n) iquo(m, n, name) Berechnet den ganzzahligen Quotienten von m tiber n 1st ein drittes Argument angegeben, so wird diesem der Rest zugewiesen. iquo (19,4); ---+ 4 Siehe auch: irem, quo. iratrecon iratrecon(n, m, N, D, nameN, nameD) Rekonstruktion einer vorzeichenbehafteten rationalen ZahI aus ihrem Bild n mod m N und D sind ganze Zahlen, die obere Grenzen ftir die GroBe der berechneten Zahler und Nenner angeben. Die Losung ist eindeutig, falls 2ND < m gilt. Diese Funktion ergibt true, falls eine Losung gefunden wurde und weist den Zahler der Variablen nameN und den Nenner nameD zu; sonst wirdfalse zuriickgegegeben. Man muS erst readlib (iratrecon) eingeben, bevor man diesen Befehl benutzen kann. ira trecon (28, 41, 4 , 5, 'n' , 'd' ) ,nl d; ---+ true, セ@ Siehe auch: mod. irem irem(m, n) irem(m, n, name) Berechnet den ganzzahligen Rest von m tiber n 1st das dritte Argument angegeben, so wird diesem der Quotient zugewiesen. irem (19,4); ---+ 3 Siehe auch: iquo, rem. iroot iroot(m, n) Ganzzahlige nte Wurzel Diese Funktion berechnet eine ganzzahlige Approximation an die nte Wurzel von m. Die Antwort ist exakt ftir eine perfekte nte Potenz; sonst ist der absolute Fehler hochstens 112. Man muS erst readlib (iroot) eingeben, bevor man diesen Befehl benutzen kann. iroot (126,3); ---+ 5 Siehe auch: iperfpow, isqrt, proot, numtheory[mrootl. irreduc irreduc(poly) irreduc(poly, K) Testet die Unzeriegbarkeit eines Polynoms Die erste Form testet, ob ein multivariates Polynom unzeriegbar tiber dem durch die Koeffizienten von poly induzierten Korper ist. Die zweite Form testet die Unzeriegbarkeit tiber dem algebraischen Zahlkorper, der durch K gegeben ist. Sie ergibt true, falls poly unzeriegbar ist;false sonst. K kann ein einfaches RootOf, eine Liste bzw. Menge von RootOfs, ein einfaches Radikal oder eine Liste bzw. Menge von Radikalen sein. irreduc (x'2+1, I); ---+ false Siehe auch: factor, Irreduc, RootOf. Irreduc Irreduc(poly) Irreduc(poly, K) Starrer Unzerlegbarkeitstest Wird diese Funktion zusammen mit mod oder modp1 benutzt, so testet sie die Unzerlegbarkeit des multivariaten Polynoms poly iiber dem gegebenen endlichen Korper. Die zweite Form testet die Unzerlegbarkeit iiber der durch k gegebenen algebraischen Erweiterung;KisteinRootOf. Irreduc(x'2+x+1) mod 2; ---+true Sieheauch: irreduc, mod, modp1, RootOf, Factor. is is (name, eigenschaft) is (relation) Stellt fest, ob der Name die gegebene Eigenschaft besitzt oder der Relation gentigt Diese Funktion ergibtentweder true,false oder FAIL. assume(x,real): is(x'2>=O); true Sieheauch: about, additionally, addproperty, assume, isgiven. iscont iscont(ausdr, var=a .. b) iscont (ausdr, var=a .. b, 'closed) Testet die Stetigkeit iiber einem Intervall Diese Funktion ergibt true, falls der Ausdruck in der Variablen var stetig tiber dem offenen Intervall (a, b) ist;false sonst. Es wird angenommen, daB aile Symbole im Ausdruck reell sind. Kommt diese Funktion zu keinem Ergebnis nicht bestimmen, so ergibt sie FAIL. Mit der Option closed testet man die Stetigkeit tiber dem geschlossenen Intervall [a, b]. Man muS erst readlib (iscont) eingeben, bevor man diesen Befehl benutzenkann. iscont(l/x,x=O .. 1); ---+true Sieheauch:discont.

187



AIle Maple-Befehle isgiven isgiven(name, eigenschaft) isgiven(relation) Testet, ob dem Namen eine Eigenschaft gegeben wurde Diese Funktion ergibt entweder true oderfalse. DieserTestistschwiicherals is. assume (x,real) : isgiven(x 2>=0); --+ false Siehe auch: about, addi tionally, addproperty, assume, is. A

isolate isolate (glchg, ausdr) isolate (glchg, ausdr, n) Isoliert einen Teilausdruck der linken Seite einer Gleichung 1st das erste Argument keine Gleichung, so wird angenommen, daB es sich urn die Gleichung glchg = 0 handelt. Das optionale dritte Argument gibt die maximale Anzahl von Transformationen an, die die Funktion ausfUhren soli. 1st ein Ausdruck als erstes Argument gegeben, so wird angenommen, daB dieser gleich 0 ist. Man muB erst read I ib (i sola te) eingeben, bevor man diesen Befehl benutzen kann. isolate (x*ln (x) =1, In (x) ); --+ In(x) = セ@ Siehe auch: solve. isolve isolve(glchgen) isolve(glchgen, vars) Berechnet die ganzzahligen Losungen von Gleichungen Diese Funktion lost eine einzelne Gleichung oder eine Menge von Gleichungen glchgen iiber den ganzen Zahlen. Das zweite Argument gibt die Namen von Variahlen an, die dazu benutzt werden sollen, eine Familie von LOsungen zu parametrisieren. Es kann sich dabei urn eine Menge oder urn einen einfachen Namen handeln. NULL wird dann zuriickgegeben, wenn keine Losungen gefunden wurden. isolve(x 2-y 2=1); --+ {y O,x 1},{y O,x -I} Siehe auch: numtheory[thue], solve. A

A

=

=

=

=

isprime isprime (n, m) Angeniiherter Test auf Primzahlen Diese Funktion ergibt false, falls n sich innerhalb von m Iterationen des Miller-Rabin-Test als zusammengesetzt erweist und true sonst. Es kommt vereinzelt vor, daB isprime eine zusammengesetzte Zahl als Primzahl klassifiziert, aber eine Primzahl wird niemals als zusammengesetzt klassifiziert. Die Wahrscheinlichkeit eines Fehlers verringert sich mit der GrOBe von m. Der voreingestellte Wert fiir mist 5, der Maximalwert ist 25. isprime(211); -true Sieheauch: ithprime, nextprime, prevprime, numtheory [ sa f epr ime ], type /pr ime into isqrfree isqrfree(n) Berechnet die quadratfreie ganzzahlige Faktorierung von n Diese Funktion gibt eine Liste quadratfreier Faktoren und Exponenten zuriick. Man muB erst readl ib (isqrfree) eingeben, bevor man diesen Befehl benutzen kann. isqrfree (150); --+ [I, [[6,1]' [5, 2]]] Siehe auch: ifactor, ifactors, sqrfree, Sqrfree. isqrt isqrt(m) Ganzzahlige Quadratwurzel Diese Funktion berechnet eine ganzzahlige Anniiherung an die Quadratwurzel von m. Die Antwort ist genau fiir ein perfektes Quadrat; ansonsten ist der Fehler hochstens 112. isqrt (126); --+ 11 Siehe auch: iroot, issqr, numtheory [msqrt], psqrt, sqrt. issqr issqr(n) Stellt fest, ob eine ganze Zahl ein perfektes Quadrat ist Diese Funktion ergibt entweder true oderfalse. Man muB erst readlib (issqr) eingeben, bevor man diesen Befehl benutzen kann. issqr(15625); --+true Sieheauch: isqrt. ithprime ithprime(i) Bestimmt die ite Primzahl Die erste Primzahl ist 2. Diese Funktion benutzt isprime, urn auf groBe Prirnzahlen zu testen. i thpr ime ( 100); --+ 541 Siehe auch: i spr ime, nextprime, prevprime.

188

isgiven -ldegree laplace laplace (ausdr, t, s) Laplacetransformation 0 Diese Funktion wendet die Laplacetransformation auf ausdr beztiglich der Variablen t an, wobei ein Ausdruck in s zuriickgegeben wird. Transformiert werden konnen solche Ausdrticke, die Exponentialfunktionen, Polynome, trigonometrische Funktionen mit linearen Argumenten sowie Besselfunktionen mit linearen Argumenten enthalten. Ebenso konnen die Diracsche Deltafunction Dirac, die Heaviside-Funktion Heaviside sowie Ableitungen und Integrale transformiert werden. 0 laplace (exp (t) , t, s); - - ウセ@ 1 0 Siehe auch: BesselI, BesselJ, Dirac, dsolve, invlaplace.

lasterror Globale Variable, die den Text der letzten Fehlermeldung enthiilt 0 Siehe auch: ERROR, traperror. latex latex (ausdr) latex (ausdr, dateiname) Erzeugt IbTIYCCode zur Ausgabe von Ausdriicken 0 Diese Funktion kann Integrale, Grenzwerte, Summen, Produkte und Matrizen formatieren. 1st ein Name als zweiter Parameter angegeben, so wird die erzeugte Ausgabe in diese Datei geschrieben. 0 Siehe auch: C, eqn, fortran. lattice lattice(liste) lattice(liste, integer) Findet eine reduzierte Basis fiir ein Gitter 0 liste ist eine Liste von Listen oder eine Liste von Vektoren, die eine Basis fiir ein Gitter darstellen. Diese Funktion benutzt den LLL-Algorithmus, urn eine reduzierte Basis zu berechnen. Die Option integer besagt, daB nur ganzzahlige Arithmetik benutzt werden soli (anstelle von rationaler Arithmetik). 0 Man muB erst readlib (la ttice) eingeben, bevor man diesen Befehl benutzen kann. 0 lattice ( [ [3,6,4 J , [6,9,7 J I ) ; - ; [[0, -3, -1], [3, 0, 2]] 0 Siehe auch: minpoly.

Icm lcm(poly!, polY2, ... ) Berechnet das kleinste gemeinsame Vielfache von Polynomen tiber den rationalen Zahlen 0 Es kann eine beliebige Anzahl multivariater Polynome angegeben werden. 0 lcm HクセRKQL@ x+l) ; - ; x 3 + x 2 + X + 1 0 Siehe auch: gcd, ilcm, Lcm. Lcm Lcm (polYl, polY2, ... ) Starre Version fiir kleinste gemeinsame Vielfache von Polynomen 0 Wird diese Funktion zusammen mit mod oder modpl benutzt, so berechnet sie das kleinste gemeinsame Vielfache der Polynome modulo einer positiven ganzen Zahl. Lcm (x セ@ 2 + 1 , x+ 1) mod 2; --+ x 2 + 1 Siehe auch: Gcd, lcm. lcoeff lcoeff(poly) lcoeff(poly, vars) lcoeff(poly, vars, name) Ftihrender Koeffizient eines multivariaten Polynoms 0 vars kann eine einzelne Unbekannte oder eine Liste bzw. Menge von Unbekannten sein. 1st vars nicht angegeben, so werden aile Unbekannten von poly benutzt. Auf das Polynom muB collect angewnadt werden beztiglich der entsprechenden Variablen. 1st ein Name als drittes Argument gegeben, so wird diesem der ftihrende Term von poly zugewiesen. 0 ャ」ッ・ヲHRJクセSMTI[@ --2 0 Sieheauch:coeff, coeffs, collect, degree, indets, Lcoeff, tcoeff. Lcoeff Lcoeff(poly) Starrer ftihrender Koeffizient 0 Wird diese Funktion zusammen mit modpl benutzt, so berechnet sie den fiihrenden Koeffizienten eines univariaten Polynoms tiber einem gegebenen Defintionsbereich. 0 Siehe auch: Coeff, lcoeff, Tcoeff. ldegree ldegree(poly, vars) Niedrigster Grad eines Polynoms 0 Das erste ganze Argument kann negative ganzzahlige Exponenten besitzen. vars kann eine einzelne Unbekannte oder eine Liste bzw. Menge derselben sein. Ftir eine Menge wird der totale Grad benutzt, fiir eine Liste der Vektorgrad. ldegree HxセSKaRL@ x); __ 2 0 Siehe auch: degree, tcoeff.

0

189



AIle Maple-Befehle LegendreE LegendreE{x, k) Legendres kanonisches unvollstandiges elliptisches Integral der zweiten Art Integrationsgrenze und kist der Modulus. LegendreEc LegendreEc{k) Legendres vollstandiges elliptisches Integral der zweiten Art

0

x ist die freie

0

kist der Modulus.

LegendreEc1 LegendreEc1{k) Zugehoriges vollstandiges elliptisches Integral der zweiten Art, wobei der komplementare Modulus benutzt wird 0 kist der Modulus. LegendreF LegendreF{x, k) Legendres kanonisches unvollstandiges elliptisches Integral der ersten Art Integrationsgrenze und kist der Modulus. LegendreKc LegendreKc{k) Legendres vollstandiges elliptisches Integral der ersten Art

0

x ist die freie

kist der Modulus.

0

LegendreKc1 LegendreKc1{k) Assoziiertes vollstandiges elliptisches Integral der ersten Art, wobei der komplementare Modulus benutzt wird 0 kist der Modulus. LegendrePi LegendrePi{x, alphasq, k) Legendres kanonisches unvollstandiges elliptisches Integral der dritten Art Integrationsgrenze, alphasq ist die Charakteristik und kist der Modulus. LegendrePic LegendrePic{alphasq, k) Legendres vollstandiges elliptisches Integral der dritten Art und kist der Modulus.

0

0

x ist die freie

a1phasq ist die Characteristik

LegendrePic1 LegendrePic1{alphasq, k) Assoziiertes vollstandiges elliptisches Integral der dritten Art, wobei der komplementare Modulus benutzt wird 0 alphasq ist die Characteristik und kist der Modulus. length length (ausdr) Lange eines Objekts 0 Die Lange einer ganzen Zahl ist die Anzahl der Dezimalstellen. Fiir eine Zeichenkette ist die Lange gleich der Anzahl der einzelnen Zeichen. Fiir andere Objekte ist die Lange gleich der Summe der Lange der Operanden plus der Anzahl von Worten, die notig sind, diesen Ausdruck darzustellen. 0 Siehe auch: nops. lexorder lexorder(namel, name2) Test auflexikographische Ordnung 0 Diese Funktion ergibt true, falls namel kleiner als name2 beziiglich der lexikographischen Ordnung ist oder falls die beiden Namen gleich sind; sonst wird false zUriickgegeben. 0 lexorder (ab, ba); ----t true 0 Siehe auch: sort. Ihs lhs(ausdr) Ergibt die linke Seite eines Ausdrucks 0 Der Ausdruck kann eine Gleichung, Ungleichung oder Bereich sein. 0 lhs (3 .. 4); ----t 3 0 Siehe auch: op, rhs. Li Li{x) Das logarithmische Integral 0 Diese Funktion ist definiert als Li(x) = ャセ@ t dt, wobei der Cauchy-Hauptwert des Integrals genommen wird. Li (x) liefert eine Annliherung an die Anzahl der Primzahlen, die kleiner als x sind. 0 Man muB erst read1ib (Li) eingeben, bevor man diesen Befehl benutzen kann. 0 Li (1000. ); ----t 177.6096580

J:

190

LegendreE -liesymm[d] Iibname Globale Variable 0 Eine Folge Maple-BibIiotheken enthaltender Dateiverzeichnisse, die jedesmal dann durchsucht werden, wenn die Befehle readl ib oder with ausgefiihrt werden.

Iiesymm Paket fiir Lie-Symmetrien 0 Dies ist eine Implementation der Prozedur von Harrison-Estabrook (wie beschrieben im ,,Journal of Mathematical Physics", Nr. 12, American Institute of Physics, New York, 1971, S. 653-665). Sie berechnet die bestimmenden Gleichungen, die zu densAhnlichkeitslosungen eines Systems partieller Differentialgleichungen fiihren, wobei eine Anzahl von Erweiterungen und Verfeinerungen, die von J. Carminati entwickelt wurden, durchgefiihrt werden. Die Funktionen dieses Pakets miissen erst mit wi th geladen werden, bevor mansieaufrufenkann. 0 Sieheauch: liesyrnrn[ function], with. liesymm[&A] ausdrl &A ausdr2 &A(ausdq, ausdr2' ... ) Dachprodukt 0 Diese Funktion berechnet das Dachprodukt von Differentialformen beziiglich der durch setup definierten Koordinaten. 0 setup (x, y): a *d (x) &A (b*d (y) ) ; --+ -ab(d(y) &A d(x)) 0 Siehe auch: liesyrnrn[getcoeff], liesyrnrn[getform], liesyrnrn [setup], liesyrnrn [wcollect], liesyrnrn [wdegree], liesyrnrn [wedgeset], liesyrnrn [wsubs]. liesymm[&mod] form &mod formliste Reduziert eine Form modulo eines liuBeren Ideals 0 Diese Funktion reduziert die Form form modulo des liuBeren Ideals, welches durch die Liste bzw. Menge von Differentialformen formliste gegeben ist. Man benutze eine geschlossene formliste, urn ein Differentialideal zu spezifizieren. 0 Siehe auch: liesyrnrn[&A], liesyrnrn[close], liesyrnrn[d], liesyrnrn[hasclosure]. liesymm[annul] annul ( forms) annul(forms, vliste) Annulliert eine Liste oder Menge von Differentialformen 0 Gegeben sei eine Liste oder Menge von Differentialformen, sowie eine Liste von Koordinaten, die als unabhlingig betrachtet werden sollen. Diese Funktion zerteilt die Differentialformen und setzt sie gleich O. Das Ergebnis ist eine Menge von partiellen Differentialgleichungen, die den Differentialformen entsprechen. 1st vliste nicht vorhanden, so wird der AnnullierungsprozeB beziigIich der durch indepvars induzierten Koordinaten durchgefiihrt. 0 Siehe auch: liesyrnrn [determine] , liesyrnrn [indepvars], liesyrnrn [makeforms]. Iiesymm[autosimp] autosimp(glchgmenge) Vereinfacht eine Menge von Differentialformen 0 Das System von partiellen Differentialgleichungen, welches die Symmetrien eines Systems partielier Differentialgleichungen charakterisiert, enthillt oft eine Reihe von Gleichungen, die leicht integrierbar sind. Diese Funktion fiihrt eine Reihe dieser einfachen Integrationen aus. Das Ergebnis wird in Form iibrig &where rels zUriickgegeben, wobei iibrig die Menge der iibriggebliebenen Gleichungen ist und rels ist eine Menge algebraischer Gleichungen, die die Beziehungen zwischen den neuen Funktionen in der Menge der vereinfachten Gleichungen und den urspriinglichen Funktionen angibt. 0 Siehe auch: liesyrnrn [determine], liesyrnrn [reduce]. liesymm[ close] close ( forms) Berechnet den AbschluB der Liste bzw. Menge von Differentialformen 0 Der AbschluB beziiglich der liuBeren Ableitung d wird berechnet, indem man zu der urspriinglichen Menge weitere Formen hinzufiigt. 0 Siehe auch: liesyrnrn [&mod], liesyrnrn [d], liesyrnrn [hasclosure], liesyrnrn [Lrank]. liesymm[d] d( form) Die liuBere Ableitung 0 Diese Funktion berechnet die auBere Ableitung der Differentialform form beziiglich der mittels setup definierten Koordinaten. 0 setup(x,y): d(a*x+b*y); --+ ad(x) + bd(y) 0 Siehe auch: liesyrnrn[&A], liesyrnrn[hook], liesyrnrn[Lie], liesyrnrn [setup], liesyrnrn [wedgeset].

191

..

AIle Maple-Befehle liesymm[depvars] depvars () depvars(xI, ... , xn) Abhangige Variablen der Differentialform 0 1st kein Argument angegeben. so wird berichtet. welche Variablen gegenwiirtig die abhangigen Variablen sind. Sind ein oder meherere Argumente angegeben. so werden diese zu abhiingigen Variablen gemacht. 0 Siehe auch: liesyrnm[extvarsl. liesyrnm[indepvarsl. liesyrnm[makeformsl. liesymm[determine] determine(forms, name) determine (dgls, name, fkts, wurzelname) determine (dgls, name, fkts, erwliste) Berechnet die definierenden Gleiehungen des Isovektors einer partiellen Differentialgleichung o Gegeben sei eine Liste bzw. Menge von Differentialformen und ein Name name. Oiese Funktion konstruiert die bestimmenden Gleichungen fiir die Isovektoren. die die Erzeugenden der Invariantengruppe (Isogruppe) der Differentialgleichungen sind. Es muB sieh dabei urn geschlossene Formen handeln. 1st eine Menge von Differentialgleichungen gegeben. so werden die erforderlichen Oifferentialformen automatisch mit makeforms erzeugt. Zusiitzliche Argumente dienen zur Identifikation der abhangigen und der unabhangigen Variablen (z. B. u (t, x) oder eine Liste so1cher Funktionsnamen) und benennen die erweiterten Variablen 0 Siehe auch: liesyrnm[closel. liesyrnm[hasclosurel. liesyrnm[makeformsl. Jiesymm[dvalue] dvalue(ausdr) Erzwingt die Auswertung von Ableitungen in einem so1chen Ausdruck. in dem Diff vorkommt o Diese Funktion stellt sieher. daB der Ausdruck so ausgewertet wird. als ob di f f benutzt wiirde und schreibt dann das endgiiltige Ergebnis unter Benutzung des starren Diff. 0 Siehe auch: DHf. diff. liesyrnm[vfixl. liesymm[Eta] Eta( f, x) Eta[ll (f, x) Eta[21 (f, x, y) Eta[31 (f, x, y, z) Berechnet die Koeffizienten des Erzeugers einer endlichen Punkttransformation 0 fist eine benannte partielle Ableitung im Sinne von depvars, x, y und z sind unabhangige Variablen im Sinne von indepvars. Dies ist ein besonderer Differentialoperator. der mitte1s TD definiert ist. Das Ergebnis ist ein starrer Ausdruck. der unter Verwendung der Diff-Prozedur angegeben ist. 0 Sieheauch: liesyrnm[depvarsl. liesyrnm[indepvarsl. liesyrnm[TD1. Jiesymm[extgen] extgen(ausdr) extgen(ausdr, name) extgen[il (ausdr) extgen[il (ausdr, name) Oer erweiterte Differentialoperator 0 Der Ausdruck wird als eine Funktion der abhangigen Variablen. der freien Variablen und der benannten partiellen Ableitungen bis zur Ordnung i angesehen. Oer voreingestellte Wert von i ist 1. name gibt den Namen der Wurzel des kovarianten Vektors an. Der voreingestellte Name ist V. Die erweiterte Ableitung wird mit Hilfe von DH f konstruiert. 0 Siehe auch: liesyrnm [depvars l. liesyrnm [indepvars l. liesyrnm[TD1. Jiesymm[extvars] extvars() extvars ( f, x) extvars ( f, x, y) Erweiterte Variablen der Differentialformen 0 Wiihrend einer Untersuchung eines Systems partieller Oifferentialgleichungen. werden fUr die partiellen Ableitungen. die einige der abhangigen und der unabhangigen Variablen beinhalten. dynamisch Namen erzeugt. Diese Funktion zeigt an. welche Namen fUr diese partiellen Ableitungen benutzt wurden. Oas Ergebnis ist der Name. der fUr die partielle Ableitung der gegebenen abhangigen Variablen f nach den gegebenen unabhangigen Variablen verwandt wurde. 1st kein Argument gegeben. so wird eine Tabelle geliefert. die aile diese Namen enthiilt. 0 Siehe auch: li esyrnm [depvar s 1• liesyrnm [indepvars 1. liesyrnm [makeforms 1. liesyrnm [translate 1.

192

liesymm[depvars] -liesymm[makeforms] Jiesymm[getcoeff] getcoeff(ausdr} Zieht den Koeffizient aus einem Basis-Daehprodukt heraus ausdr ist ein Ausdruek in einem einzelnenDaehprodukt. setup(x,y}: getcoeff(d(y}+a*d(y»; ---+l+a Sieheaueh: liesynun[&'], liesynun[d], liesynun[getform], liesynun[setupl. Jiesymm[getfonn] getform(ausdr} Isoliert das Basiselement eines einzelnen Daehprodukts ausdr ist ein Ausdruek in einem einzelnen Daehprodukt. setup (x, y): getform (d (y) +a *d (y) ); ---+ dey) Sieheaueh: liesynun[&'], liesynun[d], liesynun[getcoeff], liesynun[setupl. Jiesymm[hasclosure] hasclosure(forms} Priift. ob die Liste bzw. Menge der DifferentiaIformen abgesehlossen ist Diese Funktion liberpriift. ob forms bezliglieh der auBeren Ableitung d abgesehlossen ist. Siehe aueh: liesynun[&mod], liesynun[close], liesynun[dl. Jiesymm[hook] hook (ausdr, v} hook(ausdr, liste} hook (ausdr, name} Inneres Produkt ausdr ist ein Ausdruck mit DifferentiaIformen. Diese Funktion bereehnet das innere Produkt des Ausdrueks bezliglieh eines Vektors. einer Liste oder eines Namens eines Vektors. Siehe aueh: liesynun[&'], liesymm[d], liesymm[Lie], liesymm[setup], liesynun[wedgesetl. Jiesymm[indepvars] indepvars ( ) indepvars(xl, x2, x3} Unabhangige Variablen der DifferentiaIformen Ohne angegebenes Argument zeigt die Funktion. welche Variablen gegenwiirtig unabhangig sind. Werden ein oder mehrere Argumente angegeben. so werden diese zu unabhangigen Variablen gemaeht. Siehe aueh: liesymm [depvars l. liesynun [extvars l. liesymm [make forms l. Jiesymm[Lie] Lie(form, isovektor} Lie (form, name) Die Lie-Ableitung Es wird die Lie-Ableitung der DifferentiaIform form entweder bezliglich der Koordinaten von isovektor oder bezliglieh der auf dem gegebenen Namen name basierenden symbolisehen Koordinaten konstruiert. Siehe auch: 1 iesynun [&'], 1 iesynun [d], liesynun [hook]' liesynun [setupl. Jiesymm[Lrank] Lrank( forms} Der Lie-Rang einer Liste bzw. Menge von Formen Diese Funktion entfemt solche Formen. die zur Erzeugung der definierenden Gleiehungen nieht n6tig sind. Siehe aueh: liesynun[closel. liesymm[Liel. liesymm [makeformsl. Iiesymm[makefonns] makeforms(glchgen, fkts, wurzelname} makeforms(glchgen, fkts, erwdliste} Konstruiert eine Menge von DifferentiaIformen aus einer partiellen DifferentiaIgleiehung Gegeben sei eine partielle DifferentiaIgleiehung oder aueh mehrere partielle DifferentiaIgleichungen in Form einer Liste oder Menge. Liste bzw. Menge. Diese Funktion erzeugt eine Menge von DifferentiaIformen. die. naehdem man sie abgesehlossen hat. i\quivaIent zum urspriingliehen System von Gleiehungen sind und zwar im Sinne von Cartan. Das zweite Argument ist eine einfaehe Funktion. die die Namen der abhangigen und derunabhangigen Variablen (z. B. h (t, x}) oder eine Liste solcher Funktionsnamen) angibt. Das dritte Argument dient zur Generierung der Namen der erweiterten Variablen. Dies kann entweder ein Basisname oder eine Liste von Namen sein. makeforms (Diff (h (t, x) ,x, x} = Diff (h (t, x) ,t, t} ,h (t, x) ,w} ; ---+ [d(h) - wi d(t) - w2d(x),-&'(d(t).d(w2))+&'(d(wl),d(x))]

Siehe aueh: liesymm[annull. liesymm[closel. liesymm[depvarsl. liesymm[determinel. liesymm[ indepvarsl, liesymm[setupl.

193

II

AIle Maple-Befehle liesymm[mixparl mixpar(ausdr) Erkenne gemischte partielle Ableitungen aIs aquivaIent an Gegeben sei ein Ausdruck in Diff oder diff. Diese Funktion ordnet die partiellen Ableitungen in eine Standardordnung urn, so daB gemischte partielle Ableitungen aIs aquivaIent anerkannt werden konnen. mixpar (Diff (Diff (f (x, y) ,y) ,x) ); liesymm[d], liesymm[Lie].

--+

。セク@

f(x, y) Siehe auch: Diff, diff,

Iiesymm[prolongl prolong (isovektor) prolong[l] (isovektor) prolong[2] (isovektor) prolong[3] (isovektor) Ersetzt Komponenten des erweiterten Isovektors durch Terme, die die partie lien Ableitungen des urspriinglichen Isovektors enthaIten isovektor kann eine Liste oder ein Name sein. Diese Funktion erzeugt Gleichungen, die dazu benutzt werden konnen, die Komponenten des Isovektors, die den erweiterten Variablen entsprechen, so umzuschreiben, daB sie die partiellen Ableitungen der Isovektorkomponenten enthaIten, die den abhangigen und den unabhangigen Variablen entsprechen. Diese Routine wird von reduce benutzt, urn die bestimmenden Gleichungen der Kontaktsymmetrien vereinfachen zu helfen. Siehe aueh: liesymm [reduce]. liesymm[reduce] reduce (glmenge) Reduziert eine Menge von DifferentiaIformen glmenge ist eine Menge von bestimmenden Gleichungen fiir die Symmetrien eines gegebenen Systems partieller DifferentiaIgleichungen. Diese Funktion erzwingt die Unabhangigkeit der Isovektorkomponenten von aIlen solchen erweiterten Variablen, die wahrend der Konstruktion der bestimmenden Gleichungen eingefiihrt wurden. Dies erlaubt die Vereinfaehung des Systems der bestimmenden Gleiehungen, die von determine erzeugt wurden. Siehe auch: liesymm[autosimp], liesymm[determine] , liesymm [prolong]. liesymm[setup] setup ( ) setup (namen) setup (namensliste) setup (namenmenge) Definition der Koordinaten Diese Funktion ergibt eine Liste der Koordinaten, die zur Konstruktion des Dachprodukts und zur Definition der Aktionen von Funktionen wie d benutzt werden sollen. Wird kein Argument angegeben, so werden aIle existierenden Koordinaten entfernt. Die Buehfiihrungstabellen vieler Funktionen, darunter auch d, &A, Lie, hook, makeforms und wcollect werden geloseht. Diese Funktion sollte zwischen der Behandlung verschiedener Probleme aufgerufen werden, urn die zugrundeliegende Koordinatenliste so klein wie moglich zu haIten. Siehe auch: liesymm[&A], liesymm[d], liesymm[hook], liesymm[Liel, liesymm[makeformsl, liesymm[wcollectl. liesymm[TDJ TD(ausdr, x) TD[il (ausdr, x) Ein erweiterter DifferentiaIoperator x muB eine der unabhangigen Variablen sein. Diese Funktion konstruiert die Ableitung des Ausdrueks ausdr naeh x. Sie ist erweitert, da der Ausdruek aIs Funktion der abhangigen und der unabhangigen Variablen, sowie der benannten partiellen Ableitungen der Ordnung kleiner aIs i angesehen werden kann. 1st der Index i nieht angegeben, so wird der Wert 1 benutzt. Siehe aueh: liesymm[depvars], liesymm [Eta], liesymm[indepvars l. Iiesymm[ translateJ trans la te ( ) translate (name) Ubersetzt die Namen partieller Ableitungen Diese Funktion zeigt an, welche partielle Ableitung durch den Namen name angesprochen wird oder - wenn kein Argument angegeben wurde gibt die ganze Zurodnungstabelle zuriiek. is given. Siehe aueh: liesymm[depvars], liesymm[extvarsl, liesymm[indepvarsl.

194

liesymm[mixpar] - Limit Iiesymm[ vfix] vfix(ausdr, varliste, name) Verandert die Abhangigkeit von Variablen in unausgewerteten Ableitungen 0 Diese Funktion verandert die Abhiingigkeiten von Variablen fUr Funktionen, die in Ausdrucken mit dem Dif f-Operator auftauchen. Der Funktionsname name wird erkHirt a1s abhangig a1lein von den Variablen in varliste. 0 Siehe auch: Diff, liesyrnm[dvalue]. Iiesymm[wcollect] wcollect(ausdr) Ordnet die Terme so urn, daB sie a1s Summe von Produkten erscheinen 0 Diese Funktion gibt den Ausdruck geschrieben a1s Summe von Produkten zuruck, wobei a1le verschiedenen Dachprodukte genau einma1 auftreten. 0 Siehe auch: liesyrnm [&'], liesyrnm [d], liesyrnm [setup] . Iiesymm[ wdegree] wdegree(form) Berechnet den Grad des Dachprodukts der Differentia1form 0 Der Grad ist definiert bezUglich eines gegebenen Koordinatensystems; desha1b kann ein Aufruf von setup diesen Wert verandem.o setup(x,y): wdegree(d(x»; - I 0 Sieheauch: liesyrnm[&'], liesyrnm [d], liesyrnm [setup] . Iiesymm[ wedgeset] wedgeset(n) Formen vom Grad n 0 Aile Formen vom Grad n Uber den zugrundeliegenden Koordinaten werden a1s eine Foige von Ausdrucken zuruckgegeben. 0 setup (x, y, z): wedgeset (3); &'(d(y),d(z),d(x)) 0 Sieheauch: liesyrnm[&'], liesyrnm[d], liesyrnm[setup]. Iiesymm[ wsubs] wsubs(glchg, ausdr) wsubs(glchgen, ausdr) Ersetzt Teile eines Dachprodukts 0 g1chg hat die Form dachprod = wert. Damit wird eine Ersetzung von dachprod innerha1b des Ausdrucks ausdr vorgeschrieben. Zwei oder mehr Ersetzungen konnen a1s Liste oder a1s Menge g1chgen spezifiziert werden. Sie werden in der Reihenfolge abgearbeitet, in der sie angegeben sind, auch wenn es sich urn eine Menge handelt. o Sieheauch: liesyrnm[&'], liesyrnm[d].

limit limit (ausdr, var=a); limit (ausdr, var=var a, richtg) limit (ausdr, mengel limit(expr, menge, richtg) Berechnet den Grenzwert von ausdr. wenn var sich an a anniihert 0 Die ersten beiden Varianten berechnen den Grenzwert von ausdr, wenn sich var an a anniihert. Es werden auch die Grenzwerte inf ini ty und - infini ty unterstUtzt. Das optiona1e Argument richtg kann real fUr den reellen Grenzwert in beiden Richtungen (die Voreinstellung, au(l:.:r fUr unendliche Grenzwerte), complex fUr einer komplexen Grenzwert von mehreren Richtungen (in diesem Fa1l steht infinity fiir komplex Unendlich), left fUr linksseitige Grenzwerte (voreingestellt fUr a=infinity) oder right fiir rechtsseitige Grenzwerte (voreingestellt fUr a=-infinity) sein. 1st der Grenzwert nicht definiert, so wird ein numerischer Bereich zuruckgegeben, fa1ls bekannt ist, daB der Wert des Ausdrucks darin liegt, wenn man sich auf eine Umgebung des Grenzpunktes beschrankt. Sonst wird undef ined zuruckgegeben. Kann eine geschlossene Form nicht gefunden werden, so wird der Funktionsaufruf selbst wieder zuriickgegeben .. Die letzten beiden Varianten berechnen einen Grenzwert in einem Raum hoherer Dimension. menge ist eine Menge von Gleichungen der Form var=a. Die optiona1e richtg wird dann auf jede Variable angewandt.o limit(l/x,x=O); -undefined 0 limit(l/x,x=O,left);-00 0 limit (1/x,x=O, complex) ; 00 0 limit(sin(l/x) ,x=O); -1..10 limit((x'2-y'2)/(x-y),(x=l,y=1}); - 2 0 Sieheauch:Limit.

Limit Limit (ausdr, var=a) Limit (ausdr, var=a, richtg) Limit (ausdr, menge Limit (ausdr, menge, richtg) Starre Grenzwertfunktion 0 Siehe auch: limi t, value.

195



AIle Maple-Befehle linalg Paket zur linearen Algebra Fiir die Funktionen in diesem Paket sind A und B immer Matrizen, u und v Vektoren, reihe steht fiir einen Reihenindex einer Matrix und spalte fiir einen Spaltenindex. Sieheauch:&*, evalm, linalg[function], with.

linalg[add] add (A, B) add(A, B, ausdrl' ausdr2) add(u, v) add(u, v, ausdrl' ausdr2) Matrix- oder Vektoraddition Sind die skalaren Ausdriicke vorhanden, so berechnet diese Funktion die gewichtete Summe ausdr1A + ausdr2B (oder ausdqu + ausdr2v). Siehe auch: eva 1m. linalg[ add col] addcol(A, spaltel' spalte2, ausdr) Formt Linearkombinationen der Matrixspalten Diese Funktion gibt eine Kopie der Matrix A zuriick, wobei ausdr mal spaltel zu spalte2 addiert wurde. Siehe auch: linalg [addrow1. linalg[addrow] addrow(A, reihel, reihe2, ausdr) Formt Linearkombinationen der Matrixreihen Diese Funktion gibt eine Kopie der Matrix A zuriick, wobei ausdr mal reihel zu reihe2 addiert wurde. Siehe auch: linalg [addcol1. linalg[adjoint] adjoint (A) Berechnet die Adjungierte der Matrix A Das Produkt von A mit ihrer Adjungierten ist gleich dem Produkt von det (A) mit der Einheitsmatrix. Siehe auch: linalg [det1, linalg [minor1. linalg[ angle] angle(u, v) Berechnet den Winkel zwischen zwei Vektoren Diese Funktion berechnet den Winkel () als cos () = HiZGセI@ 1/2 unter Benutzung des euklidischen inneren Produkts und der dadurch induzierten euklidischen Norm. angle (vector ( [1,01 ), vector ( [1,11 ) ); ---+ Sieheauch: linalg[norm], linalg[dotprod], linalg[innerprod1.

i7r

linalg[augment] augment (A, B, ... ) augment (u, v, ... ) Fiigt zwei oder mehr Matrizen bzw. Vektoren horizontal zusammen Matrizen miissen dieselbe Anzahl von Reihen, Vektoren dieselbe Lange haben. Ein Vektor wird hier als Spaltenvektor interpretiert. Sieheauch: linalg[concat], linalg[stack). linalg[backsub] backsub(A) Riickwfutssubstitution bei einer Matrix 1st A das Ergebnis der GauBschen Vorwfutselimination angewandt auf die erweiterte Matrix eines Systems linearer Gleichungen, so komplettiert diese Funktion die Uisung des Systems durch Riickwfutssubstitution. Existiert eine Losung, so wird sie als Vektor zuriickgeliefert. 1st die Losung nieht eindeutig, so wird sie mit Hilfe globaler Symbole parametrisiert. Siehe auch: linalg [gausselim), linalg [gaussjord), linalg [linsolve1. linalg[band] band(liste, n) band (v, n) Erzeugung einer Bandmatrix Diese Funktion erzeugt eine n x n Bandmatrix wobei die Elemente der gegebenen Liste bzw. des gegebenen Vektors benutzt werden; begonnen wird mit den unteren Nebendiagonalelementen. Die Liste bzw.der Vektor muB eine ungerade Anzahl von Elementen enthalten, die n nieht iibersteigen darf. band ( [1, 2 , 3 ) , 5); Siehe aueh: 1 inalg [diag) .

196

linalg -linalg[ col space] linalg[basis] basis (v) basis (vliste) basis (vrnenge) Findet eine Basis fUr einen Vektorraum Diese Funktion ergibt eine Liste bzw. Menge von Vektoren aus den gegebenen Vektoren, so daB sie eine Basis fiir den von den gegebenen Vektoren aufgespannten Vektorraum ergeben. Fiir den Fall eines einzigen Vektors wird genau dieser Vektor wieder zuriickgegeben. Siehe auch: linalg [intbasis), linalg [surnbasis]. Iinalg[bezout] bezout(polYI, polY2, var) Erzeugt die Bezoutmatrix zweier Polynome poly! und poln sind Polynome in der Variablen var. Die Determinante dieser Matrix ist gleich der Resultante der Polynome. Siehe auch: linalg[det), linalg[sylvester), resultant. Iinalg[BlockDiagonal] diag (BI, B2, ... , Bn) Ein Synonym fiir linalg [diag] Siehe auch: linalg [diag]. Iinalg[blockmatrix] blockmatrix(m, n, BII, B12, ... , Bmn) Erzeugt eine Blockmatrix Die m x n Blockmatrix wird Zeile fiir Zeile aufgefiiIlt. Iinalg[charmat] charmat(A, >.) Konstruktion der charakteristischen Matrix Diese Funktion gibt die charakteristische Matrix >. I - A zuriick, wobei I die Eiunheitsmatrix darstellt. >. kann entweder ein Name oder ein algebraischer Ausdruck sein. Siehe auch: lina 19 [ charpo ly], lina 19 [ e i genva 1 s ], linalg[nullspace]. Iinalg[ charpoly] charpoly(A, >.) Berechnet das charakteristische Polynom einer Matrix Das charakteristische Polynom ist die Determinante der charakteristischen Matrix. >. kann entweder ein Name oder ein a1gebraischer Ausdrucksein. charpoly(matrix([[2,31, [3,4]]),x); -->-1-6x+x 2 Siehe auch: linalg [charmat], linalg [eigenvals], linalg [minpoly]. linalg[col] col (A, spal te) col (A, spaltel .. spalte2) Isoliert die Spaite einer Matrix Die erste Fonn isoliert die Spalte Nummer spalte der Matrix und gibt das Ergebnis a1s Vektor zuriick. Die zweite Form isoliert einen Bereich von Spalten und gibt diese a1s Folge von Vektoren zuriick. Siehe auch: linalg [addcol], linalg [coldim], linalg[delcols], linalg[mulcol], linalg[row], linalg[swapcol]. Iinalg[ coldim] coldim(A) Ergibt die Anzahl der Spalten der Matrix A Siehe auch: linalg[colspace], linalg [rowdim], linalg [vectdim]. Iinalg[ colspace] colspace(A) colspace(A, name) Berechnet eine Basis fUr den Spaltenraum Diese Funktion gibt eine Menge von Vektoren zuriick, die eine Basis fiir den von den Spalten der Matrix A aufgespannten Vektorraum ergeben. Die Vektoren werden in kanonischer Form mit fiihrenden Eintragen gleich I zuriickgegeben. linalg[range] ist ein Synonym fiir colspace. 1st ein Name a1s zweiter Parameter gegeben, so wird diesem der Rang von A zugewiesen. Siehe auch: linalg [coldim], linalg [colspan], linalg [nullspace], linalg [range], linalg [rank], linalg[rowspace].

197



ABe Maple-Befehle linalg[colspan] colspan(A) colspan{A, name) Berechnet die aufspannenden Vektoren des Spaltenraumes 0 Diese Funktion berechnet eine Menge von aufspannenden Vektoren flir den Spaltenraum von A, einer Matrix multivariater Polynome tiber den rationalen Zahlen. 1m Gegensatz zu colspace benutzt diese Funktion "bruchfreie" GauB-Elimination, urn die Einfliluung rationaler Ausdriicke wiihrend der Elimination zu verhindem. 1st ein Name a1s zweiter Parameter gegeben, so wird diesem der Rang von A zugewiesen. 0 Siehe auch: linalg[colspace], linalg[ffgausselim], linalg [rowspanj. linalg[companion] companion {poly, var) Ergibt die zu einem Polynom gehOrige Begleitmatrix Form.

0

poly ist ein Polynom in var in entwickelter

Iinalg[concat] concat(A, B, ... ) concat (u, v, ... ) Ein Synonym flir linalg[augmentj 0 Ftigt zwei oder mehr Matrizen bzw. Vektoren horizontal zusammen. 0 See linalg [augment). Iinalg[ cond] cond{A) cond(A, 1) cond{A, 2) cond(A, frobenius) cond(A, infinity) Konditionszahl einer Matrix beztiglich einer Norm 0 Diese Funktion berechnet die Norm von A multipliziert mit der Norm von A -1. Der zweite Parameter bezeichnet die Norm: siehe linalg [norm) zur Beschreibung der Normen. Die voreingestellte Norm ist infini ty. 0 cond(matrix([[2,3). [3,4))),1); ---->49 0 Sieheauch:linalg[norm). Iinalg[ copyinto] copyinto(A, B, m, nl Kopiert Eintrage von einer Matrix in eine andere 0 Diese Funktion kopiert die Eintrage der Matrix A in die Matrix B, angefangen an der Indexposition [m, n]. Also wird B[m, n] def Wert A[I, 1] zugewiesen. 0 Siehe auch: Iinalg [extend), linalg [submatrix). linalg[ crossprod] crossprod(u, v) crossprod(Iiste, liste) Berechnet das Kreuzprodukt der zwei gegebenen Vektoren oder Listen 0 Die Listen bzw. Vektoren mtissen genau drei Elemente enthalten. 0 crossprod ( [1,0, 0) , [0, 1, 0) ) ; ----> [0 0 1) 0 Siehe auch: linalg [dotprod), linalg [innerprod] . Iinalg[curl] curl(u, vl Berechnet die Rotation des vektor-wertigen Ausdrucks u bezliglich der in v gegebenen Variablen o Das erste Argument ist eine Liste bzw. ein Vektor dreier Ausdriicke in drei Variablen, die im zweiten Argument benannt sind; das zweite Argument ist ebenfalls eine Liste bzw. ein Vektor. 0 curl([-z-2/2,x*z,O], [x,y,z]); ---->[-x -zz) 0 Sieheauch:linalg[grad], linaig [diverge], linaig [vecpotent). Iinalg[ definite] definite{A, negative_def) definite{A, negative_semidefl definite(A, positive_defl definite(A, positive_semidefl Prlift, ob eine quadratische symmetrische Matrix positiv oder negativ (semi-) definit ist 0 Flir numerische Matrizen ergibt diese Funktion entweder true oderfalse. Flir Matrizen mit Symbolen ergibt diese Funktion eine Bedingung in Boolschen Ausdriicken; diese Bedingung muB erflillt sein, damit die Eigenschaft gilt.

198

linalg[colspan] -linalg[eigenvects] Iinalg[delcols] delcols{A, spaltel .. spalte2) Entfemt Spalten aus einer Matrix 0 Diese Funktion gibt die Untermatrix von A zuriick, die dadurch entsteht, daB die Spalten des angegebenen Bereichs entfemt werden. 0 Siehe auch: linalg [col], linalg [delrows], linalg [submatrix). Iinalg[ delrows] delrows{A, reihel .. reihe2) Entfemt Reihen aus einer Matrix 0 Diese Funktion gibt die Untermatrix von A zuriick, die dadurch entsteht, daB die Reihen des angegebenen Bereichs entfemt werden. 0 Siehe auch: linalg [delcols], linalg [row], linalg [submatrix). Iinalg[det] det{A) det{A, sparse) Berechnet die Determinante einer quadratischen Matrix 0 Die Option sparse zeigt an, daB die Determinante unter Benutzung der Entwicklung nach Minoren berechnet werden soil. 0 det{matrix( [[2,3), [3,4)))); ---> -1 0 Sieheauch: 1inalg[permanent). Iinalg[ diag] diag (BI, B2, ... , Bn) Erzeugt eine Blockdiagonalmatrix 0 Diese Funktion gibt eine Matrix zuriick, deren Diagonale aus den MatrixblOcken BI, B2, ... , Bn besteht. 0 Siehe auch: linalg[BlockDiagonal], linalg [JordanBlock). Iinalg[diverge] diverge(u, v) Berechnet die Divergenz des vektorwertigen Ausdrucks u beziiglich der in v gegebenen Variablen o Das erste Argument ist eine Liste bzw. Vektor von Ausdriicken in den im zweiten Argument gegebenen Variablen; das zweite Argument kann ebenfalls eine Liste bzw. Vektor sein. u und v miissen diese\be Lange besitzen. 0 diverge ( [x*y, y*z, x*z), [x, y, z) ); ---> y+z+x 0 Sieheauch: linalg[curl], linalg[grad], linalg[vecpotent). Iinalg[dotprod] dotprod(u, v) dotprod(u, v, orthogonal) Berechnet das Skalarprodukt zweier Vektoren oder Listen 0 Die Option orthogonal berechnet das Skalarprodukt ohne das komplex konjugierte der Elemente in v zu verwenden. o dotprod ( [1, 2, 1), [2, -1,2) ); ---> 2 0 Siehe auch: linalg [crossprod], linalg [innerprod). Iinalg[eigenvals1

eigenvals(A) eigenvals(A, implicit) eigenvals(A, radical) eigenvals(A, B) Berechnet die Eigenwerte einer Matrix 0 Diese Funktion gibt eine Foige der Eigenwerte von A zuriick. Enthlilt A Gleitkommazahlen, so wird eine numerische Methode verwandt. Sonst werden mit der Option implicit die Eigenwerte in RootOf-Schreibweise gegeben. Mit der Option radical (voreingestellt) versucht Maple, die Eigenwerte in Form exakter Radikale auszudriicken. Das letzte Schema berechnet die Nullstellen des Polynoms det(>.B - A). 0 eigenvals (matrix ( [ [2,3) , [3,4)) ) ); ---> 3 + ViO,3 - ViO 0 Siehe auch: Eigenvals, linalg [charpoly), linalg [eigenvects), RootOf.

Iinalg[ eigenvectsI eigenvects(A) eigenvects(A, implicit) eigenvects(A, radical) Berechnet die Eigenvektoren einer Matrix 0 A kann eine Matrix von rationalen Ausdriicken, Polynomen, algebraischen Zahlen, oder algbraischen Funktionen sein. Das Ergebnis ist eine Folge von Listen. Jede Liste enthlilt einen Eigenwert, seine Vielfachheit und eine Menge, die eine Basis fiir den zum Eigenwert gehorigen Eigenraum enthlilt. Enthlilt A Gleitkommazahlen, so wird eine numerische Methode verwandt. Sonst werden mit der Option implicit die Eigenwert in RootOf-Schreibweise gegeben. Mit der Option radical (voreingestellt) versucht Maple, die Eigenwerte in Form exakter Radikale auszudriicken: 0 Siehe auch: Eigenvals, linalg[eigenvals], linalg[charpoly], RootOf.

199



Aile Maple-Befehle linalg[ entermatrix] entermatrix(A} Interaktives AuffUllen einer Matrix 0 Diese Funktion fragt den Benuzter nach Werten fiir die Matrix A. Die Werte werden Reihe fUr Reihe eingetragen. Jeder Wert muB mit einem Semikolon enden. Iinalg[equal] equal (A, B} Uberpriift die Gleichheit zweier Matrizen Siehe auch: linalg [iszerol.

0

Diese Funktion ergibt entweder true oder false.

0

linalg[ exponential] exponential (A) exponential (A, t} Berechnet die Exponentialfunktion fiir Matrizen 0 A muB eine quadratische Matrix sein; t ist ein k > 0 A k t k / k!. optionaler Parametemame. Die Exponentialfunktion ist definiert als exp ( tA) = 1st kein Variablenname angegeben, so wird die erste Unbekannte (falls vorhanden) der Matrix A entfemt und als Parameter benutzt.

L

Iinalg[extend] extend (A, m, n, r} extend(A, m, n} VergriiBerung einer Matrix 0 Diese Funktion ergibt eine neue Matrix, weIche eine Kopie der Matrix A mit m zusatzlichen Reihen und n zusatzlichen Spalten ist. Jeder neue Eintrag wird gleich ausdr gesetzt, falls dieses Argument vorhanden ist. 0 Siehe auch: linalg [augment 1, linalg[copyinto], linalg[stackl. Iinalg[ffgausselim] ffgausselim(A} ffgausselim(A, namet} ffgausselim(A, name}, name2} ffgausselim(A, spalte} Bruchfreie GauB-Elimination angewandt auf eine Matrix 0 Diese Funktion fiihrt die bruchfreie GauB-Elimination mit Reihen-Pivotsuche auf A aus, einer rechteckigen Matrix multivariater Polynome iiber den rationalen Zahlen. 1st namq vorhanden, so wird diesem der Rang von A zugewiesen. G1eicht der Rang der Anzahl der Zeilen von A, so wird name2 die Determinante der quadratischen, aus den ersten rank(A) Spalten von A gebildeten, Untermatrix zugewiesen. Sonst wird null zugewiesen. Die Elimination wird mit Erreichen der Spaltenposition spalte beendet, falls dieses Argument vorhanden ist. 0 Siehe auch: linalg [gausseliml, linalg [rank), linalg[rref). linalg[6bonacci] fibonacci(n} Berechnet die nte Fibonaccimatrix

0

Siehe auch: combina t [ f ibonacc i) .

Iinalg[frobenius] frobenius(A} frobenius(A, name} Berechnet die Frobeniusform einer Matrix 0 Diese ist auch unter dem Namen "Rationale kanonische Form einer Matrix" bekannt. A muS eine quadratische Matrix sein. 1st ein Name a1s zweites Argument angegeben, so wird diesem die Transformationsmatrix P zugewiesen; p- 1 AP ist die Frobeniusform. 0 Siehe auch: linalg [ratform). Iinalg[gausselim] gausselim(A} gausselim(A, name}} gausselim(A, namet, name2} gausselim(A, spalte} GauS-Elimination angewandt auf eine Matrix 0 Diese Funktion fiihrt die GauB-Elimination mit Reihenpivotsuche auf A aus, A ist eine rechteckige Matrix mit rationalen, komplex-rationalen oder rationalen Funktionseintragen mit diesen Koeffizienten. 1st namel vorhanden, so wird diesem der Rang von A zugewiesen. 1st der Rang gleich der Anzahl von Reihen von A, so wird name2 die Determinante der quadratischen Untermatrix A zugewiesen, die durch die ersten rank{A) Spalten gebildet wird. Sonst wird Null zugewiesen. Die Elimination wird bei Erreichen der Spaltenposition spalte beendet, sofem dieses Argument vorhanden ist. 0 Siehe auch: Gausselim, linalg[ffgausseliml, linalg[rankl, linalg[rref).

200

linalg [entermatrix] -linalg [hilbert] Iinalg[gaussjord] gaussjord{A) gaussjord{A, namel) gaussjord{A, name 1 , name2) gaussjord{A, spalte) Ein Synonym fiir linalg [rre flo Gauss-10rdan-Elimination linalg [rref l.

0

Siehe auch:

Iinalg[genmatrix] genmatrix{glchgen, vars) genmatrix{glchgen, vars, beliebig) Erzeugt die Koeffzientenmatrix aus den Gleichungen 0 Diese Funktion erzeugt die Koeffizientenmatrix aus der Menge bzw. Liste linearer Gleichungen g1chgen in der Liste bzw. Menge der Unbekannten vars. 1st ein drittes Argument vorhanden, so wird das Negative des Vektors, der die rechte Seite darstellt, als letzte Spalte in die Matrix eingeftigt. 0 Siehe auch: linalg[linsolvel. linalg[grad] grad{ausdr, v) Berechnet den Gradienten des Ausdrucks beztiglich der in v gegebenen Variablen. 0 v kann eine Liste oderein Vektor sein. 0 grad(x*y*z, [x,y, zl); ---+ [yz xz yx] 0 Siehe auch: linalg [curl], linalg [diverge], linalg [hessian], linalg [laplacianl. linalg[GramSchmidt] GramSchmidt{[vI, v2, ... , vnl) GramSchmidt{vektors) Berechnet eine Liste orthogonaler Vektoren aus den gegebenen linear unabhangigen Vektoren unter Benutzung des Orthogonalisierungsprozesses von Gram-Schmidt 0 vektors ist eine Liste bzw. Menge linear unabhangiger Vektoren. Das Ergebnis wird, abhangig von der Form der Eingabe, als Liste oder Menge zuriickgegeben. Die zuriickgegebenen Vektoren sind nicht normiert. o Sieheauch: linalg[basis]' linalg[norml. Iinalg[hadamard] hadamard (A) Schranke fiir die Determinante einer Matrix 0 Das Ergebnis ist eine obere Schranke ftir den Absolutwert der Determinante einer numerischen Matrix A oder, allgemeiner, der maxnorm der Determinate einer polynomialen Matrix. A muS eine quadratische Matrix sein. 0 Siehe auch: linalg[det], maxnorm. Iinalg[hermite] hermite (A, var) hermite {A, var, name) Hermite-Normalform 0 Diese Funktion berechnet die Hermite-Normalform (reduzierte Zeilenstufenform) einer rechteckigen Matrix univariater Polynome in var tiber dem Korper der rationalen Zahlen Q, oder tiber rationalen Ausdriicken tiber Q. Wird ein Name als drittes Argument angegeben, so wird diesem die Transformationsmatrix U zugewiesen, sodaS das Ergebnis als U A geschrieben werden kann. 0 Siehe auch: Hermi te, 1 inalg [ ihermi te 1 , linalg [smi thl. Iinalg[hessian] hessian (ausdr, v) Berechnet die Hesse-Matrix eines Ausdrucks beztiglich der gegebenen Liste von Variablen 0 v ist eine Liste bzw. Menge von Variablen. Das Ergebnis ist eine n x n Matrix, wobei n die Lange von v is!. Der Eintrag (i, j) der resultierenden Matrix berechnet sich als 8vXセカ@ ausdr. • J Siehe auch: linalg [grad], linalg [jacobianl. linalg[hilbert] hilbert (n) hilbert(n, ausdr) Erzeugt eine verallgemeinerte Hilbertmatrix Der voreingestellte Wert fiir ausdr ist I.

0

0

Der Eintrag (i, j) der Matrix ist 1/( i+ j - ausdr).

201

II

Alle Maple-Befehle Iinalg[htranspose] htranspose(A) htranspose(v) Berechnet die Hennitesche, transponierte Matrix einer gegebenen Matrix 0 Die Hermitesche Transponierte ist die konjugiert Transponierte. Das Ergebnis erbt die Indexfunktion von A. Ein Vektor wird aIs einspaItige Matrix behandelt. 0 Siehe auch: linalg [transpose]. Iinalg[ihennite] ihermite(A) ihermite(A, name) Hennite-NonnaIfonn eingeschriinkt auf Matrizen mit ganzzahligen Eintragen 0 Diese Funktion berechnet die Hermite NorrnaIfonn (reduzierte Zeilenstufenfonn) einer rechteckigen Matrix ganzer Zahlen. Wird ein Name aIs drittes Argument angegeben, so wird diesem die Transfonnationsmatrix U zugewiesen, sodaB das Ergebnis aIs U A geschrieben werden kann. 0 Siehe auch: Hermi te, linalg [hermite]' linalg[ismith]. Iinalg[indexfunc] indexfunc(A) Bestimmt die Indexfunktion eines FeIdes 0 Dies kann entweder eine der gewohnlichen Indexfunktionen (anti symmetric, diagonal, identi ty, sparse oder symmetric) sein oder der Name einer vom Benutzer definierten Indexfunktion. NULL wird zuriickgegeben, faIls A keine Indexfunktion besitzt. 0 Siehe auch: indexfcn. Iinalg[innerprod] innerprod(u, AI, A2, ... , An' v) Berechnet das innere Produkt einer Folge von Vektoren und Matrizen 0 Die Dimension einer jeden Matrix und eines jeden Vektors muB so sein, daB die Multiplikationen in der angegebenen Reihenfolge durchgefUhrt werden konnen. 0 Siehe auch: linalg [crossprod], linalg [dotprod], linalg [mul tiply]. Iinalg[intbasis] intbasis(SI, s2, ... , Sn) Berechnet eine Basis fUr den Schnitt von Vektorraumen 0 Iedes der Si kann ein einfacher Vektor, eine Liste von Vektoren oder eine Menge von Vektoren sein. Zuriickgegeben wird eine Menge von Vektoren, die eine Basis filr den Schnitt bilden. 0 Siehe auch: linalg [basis], linalg [sumbasis]. IinaJg[inverse] inverse (A) Berechnet die Inverse einer Matrix

0

1st die Matrix singular, tritt ein Fehler auf.

Iinalg[ismith] ismith(A) ismi th (A, name I ' name2) Smith NonnaIfonn einer Matrix mit nur ganzzahJigen Eintragen 0 Diese Funktion berechnet die Smith-NonnaIfonn einer rechteckigen ganzahJigen Matrix. Fiir den FaIl, daB drei Argumente angegeben wurden, werden namel und name2 die Transfonnationsmatrizen U und V zugewiesen, so daB das Ergebnis aIs U AV geschrieben werden kann. 0 Siehe auch: linalg [ihermi te] , linalg [smi th], Smi tho Iinalg[iszero] iszero(A) Bestimmt, ob eine gegebene Matrix die Nullmatrix ist 0 Diese Funktion ergibt true, faIls aIle Eintrage der Matrix gleich null sind,false sonst. 0 Siehe auch: linalg [equal] . IinalgUacobian] jacobian(u, v) Berechnet die Iacobimatrix einer Vektorfunktion 0 Das erste Argument ist eine Liste bzw. ein Vektor von Variablen, die durch das zweite Argument benannt sind; das zweite Argument kann ebenfaIls eine Liste oder ein Vektor sein. u und v brauchen nicht dieselbe Lange zu haben. Der (i,j)te Eintrag der resultierenden Matrix ゥウエセN@ 0 Siehe auch: linalg [hessian]. J

202

linalg [htranspose] -linalg[matrix] linalgUordan] jordan (A) jordan (A, name) Berechnet die Jordanform einer Matrix 0 Die Jordanform ist eine Blockdiagonalmatrix von Jordan-Blockmatrizen, wobei die Diagonaleintrllge der einzelnen Jordanblocke gerade die Eigenwerte von A sind. Wird ein name angegeben, so wird diesem die Transformationsmatrix P zugewiesen, mit der die 10rdanform zu p-l J P wird. 0 Siehe auch: linalg [diag], linalg [eigenvals], linalg [JordanBlock] . linalg[JordanBlock] JordanBlock(ausdr, n) Konstruktion einer 10rdan-Blockmatrix 0 Diese Funktion ergibt eine n x n Matrix mit ausdr auf der Hauptdiagonalen, } a1s obere Nebendiagonalelemente und 0 Uberall sonst. 0 Siehe auch: linalg [diag], linalg [jordan]. Iinalg[kernel] kernel (A) kernel (A, name) Berechnet eine Basis fUr den Kern (Nullraum) der durch die Matrix A definierten linearen Transformation 0 Das Ergebnis ist eine Menge von Vektoren. Wird ein Name angegeben, so wird diesem die Dimension des Kerns zugewiesen. 0 Siehe auch: linalg [colspace], linalg[nullspace], linalg[rowspace], Nullspace. linalg[laplacian] laplacian (ausdr, v) Berechnet die Laplace-Matrix eines Ausdrucks bezUglich der in v gegebenen Variablen 0 [x,y, z]); ---+ v kann eine Liste oder ein Vektor sein. 0 ャ。ー」ゥョHクセRJケコL@ 2 y2 Z + 2 x 2 Z 0 Siehe auch: linalg [grad]. linalg[leastsqrs] leastsqrs(A, v) leastsqrs(menge, varmenge) Uisung des Problems der kleinsten Quadrate bezUglich der gegebenen Gleichungen 0 Die erste Variante berechnet den Vektor x, der der Gleichung Ax = v im Sinne der kleinsten Quadrate am besten genUgt. Die zweite Variante findet die Werte der Variablen von varmenge, die die Menge der AusdrUcke bzw. Gleichungen in menge minimiert; die Minimierung geschieht bezUglich der Norm der kleinsten Quadrate. ZurUckgegeben wird eine Menge von Gleichungen fUr die Variablen. 0 Siehe auch: linalg [linsol ve] . linalg[linsolve] linsolve(A, v) linsolve(A, v, name}, name2) linsolve (A, B) linsolve(A, B, name) Ltlsung linearer Gleichungen 0 Die erste Variante findet den Vektor x, der der Matrizengleichung Ax = v genUgt. Die Uinge von v mu8 gleich der Anzahl der Reihen von A sein. NULL wird zUrUckgegeben, falls keine Uisung existiert. Gibt es mehrere Ltlsungen, so werden globale Namen eingefUhrt, urn diese zu beschreiben. Die untere Variante berechnet die Matrix X, sodaS AX = B gilt. Gibt es keine eindeutige Ltlsung, so wird NULL zurUckgegeben. Einem dritten Argument wird der Rang von A zugewiesen. Ein viertes Argument dient dazu, den Basisnamen der globalen Variablen zu spezifizieren, mit denen die Ltlsungen parametrisiert werden. 0 Siehe auch: linalg [genmatrix], linalg [leastsqrs], solve. linalg[matrix] matrix(liste) matrix(m, n) matrix(m, n, liste) matrix(m, n, v) matrix(m, n, f) Erzeugt eine Matrix 0 Die erste Form erzeugt eine Matrix mit Elementen, die aus liste stammen, einer Liste von Listen bzw. Vektoren. Die Dimensionen der Matrix werden durch die Struktur von liste spezifiziert. Die zweite Form erzeugt eine m x n Matrix mit unbestimmten Elementen. Die dritte Form generiert eine m x n Matrix mit den in liste angegeben Elementen. Hierbei kann lisle eine Liste von Listen bzw. Vektoren sein oder eine Liste von Elementen; im letzleren FaIl wird die Matrix Reihe fUr Reihe erzeugt. Die vierte Form initiaIisiert die Matrix

203



AIle Maple-Befehle Reihe ftir Reihe und zwar mit den Elementen des Vektors. Bei der letzten Form bestimmt die Funktion f die Matrizenelemente: Aij = f(i, j). matrix ( [ [2,3] , [3,4]] ) : matrix{2,2, [2,3,3,4]): matrix(2,2, (i,j)->i+j): Sieheauch:array, linalg [vector]. Iinalg[minor] minor (A, row, col) Berechnet den Minor einer Matrix Diese Funktion gibt den Minor von A zuriick; man erhillt diesen, indem man die angegebene Reihe und Spalte entfemt. Siehe auch: linalg [delrows] , linalg [delcols], linalg [submatrix]. linalg[minpoly] minpoly(A, var) Berechnet das minimale Polynom der Matrix Das minimale Polynom ist das Polynom niedrigsten Grades. welches A annihiliert. Das Polynom ist in der Variablen var gegeben. minpoly(matrix( [[2,3], [3,4]]) ,x); ---> -1- 6x + x 2 Siehe auch: 1inalg [charpoly]. linalg[mulcol] mulco1(A, spa1te, ausdr) Multipliziert die Spalte einer Matrix mit einem Ausdruck Diese Funktion gibt eine Kopie der Matrix A zuriick. wobei die gegebene Spalte mit ausdr multipliziert wird. Siehe auch: lina1g [addco1], lina1g [mu1row]. Iinalg[mulrow] mu1row(A, reihe, ausdr) Multipliziert eine Reihe einer Matrix mit einem Ausdruck Diese Funktion gibt eine Kopie der Matrix A zUriick. wobei die gegebene Reihe mit ausdr multipliziert wird. Siehe auch: lina1g[addrow].linalg[mulcol]. Iinalg[multiply] multiply (A, B, ... ) multiply (A, v) Matrix-Matrix- oder Matrix-Vektor-Multiplikation Ein Vektorwird als Spaltenvektor aufgefaBt. Siehe auch: eva 1m, linalg [innerprod]. Iinalg[norm] norm(A) norm(A, 1) norm(A, 2) norm (A, frobenius) norm(A, infinity) norm(v) norm(v, n) norm(v, frobenius) norm (v, infinity) Berechnet die Norm einer Matrix oder eines Vektors Matrixnormen (Summen sind Summen von Absolutwerten): I Maximale Spaltensumme 2 Wurzel des groBten Eigenwertes von AA t frobenius Wurzel der Summe der Quadrate der Matrizenelemente infinity Maximale Reihensumme Vektomormen (Summen sind wiederum Summen von Absolutwerten): n nte Wurzel der Summe der nten Potenzen der Elemente frobenius Wie n = 2 infinity Maximale GroBe tiber allen Elementen Die voreingestellte Norm ist infinity fUr das gesarnte linalg-Paket. norm (matrix ( [ [2,3] , [3,4]] ), frobenius); ---> v38 Siehe auch: linalg[cond], linalg[normalize], norm. Norm. Iinalg[ normalize] normalize (v) Normierung eines Vektors Diese Funktion normiert den angegebenen Vektor beztiglich der 2Norm. normalize (vector ( [6,8] ) ); ---> [ セ@ Siehe auch: linalg [norm], linalg [GramSchmidt].

t]

204

linalg [minor] -linalg[rank] Iinalg[nullspace] nullspace (A) nullspace(A, name) Ein Synonym fiir linalg[kernel]

0

Siehe auch: linalg[kernel].

Iinalg[orthog] orthog(A) Testet auf eine orthogonale Matrix 0 Eine Matrix ist dann orthogonal, wenn das innere Produkt einer jeden Spalte mit sich selbst 1 ergibt und das innere Produkt einer jeden Spalte mit einer anderen Spalte 0 ist. Diese Funktion ergibt true, wenn gezeigt werden kann, daB die Matrix orthogonal ist und false, wenn sich herausstellt, daB die Matrix nicht orthogonal ist. In allen anderen Flillen ergibt sieh FAIL. 0 Siehe auch: testeq. linalg[permanent] permanent (A) Berechnet die Permanente einer Matrix 0 Die Permanente einer Matrix wird lihnlich wie die Determinante einer Matrix berechnet, wobei aber das Vorzeichen in der Entwicklung der Minoren nieht a1terniert. 0 permanent (matrix ( [ [2,3], [3,4]]»; --> 17 0 Siehe auch: linalg [det] . Iinalg[pivot] pivot (A, i, j) pivot (A, i, j, reihel .. reihe2) Ftihrt Pivoting tiber den Matrixeintrag A[i, j] aus 0 A[i, j] muB von null verschieden sein. Die erste Form addiert Vielfache der Reihe i zu jeder anderen Reihe hinzu, so daB die jte Spalte in jeder dieser Reihe zu Null wird. Bei der zweiten Variante wird die jte Spalte nur im angegebenen Reihenbereich zu Null gemacht. 0 Siehe auch: linalg [gausselim]. Iinalg[potential] potential (liste, varliste, name) potential (v, varliste, name) Berechnet das Potential eines Vektorfelds 0 Das erste Argument ist eine Liste bzw. ein Vektor von Ausdriicken, die ein Vektorfeld darstellen, das zweite Argument ist eine Liste von Variablen. Diese Funktion ergibt true, falls das Vektorfe1d ein skalares Potential besitzt; in diesem Fall wird dem dritten Argument das skalare Potential zugewiesen. Sonst ergibt sieh false. 0 potential ( [y*z, x*z, x*y] , [x, y, z] , 'ans' ), ans; --> true, x Y z 0 Siehe auch: linalg [grad], linalg [vecpotent]. Iinalg[randmatrix] randmatrix(m, n, options) Zufallsgenerator fUr Matrizen 0 Diese Funktion erzeugt eine m x n Zufallsmatrix. Die Option entries = f, wobei f eine Zufallsfunktion ist (voreingestellt rand (-99 .. 99»), bestimmt die Eintriige der Matrix. Optionen bestimmen auch die Struktur der Matrix: antisymmetric, dense (die Voreinstellung), sparse, symmetric und unimodular. 0 Siehe auch: linalg [matrix], linalg [randvector], rand, _seed. Iinalg[randvector] randvector(n) randvector(n, entries=f) Erzeugung eines Zufallsvektors 0 Diese Funktion erzeugt einen Zufallsvektor der Dimension n. Die Option entries = f, wobei f eine Zufallsfunktgion ist (Voreinstellung rand (-99 .. 99)), bestimmt die Eintriige des Vektors. 0 Siehe auch: linalg [vector], linalg [randmatrix]. Ilnalg[range] range (A) range (A, name) Ein Synonym ftir linalg [colspace)

0

Siehe auch: linalg [colspace].

Iinalg[rank] rank (A) Rang einer Matrix 0 Diese Funktion berechnet den rang einer gegebenen Matrix, indem sie auf die Reihen die GauBsche Eliminationsprozedur anwendet. 0 Siehe auch: linalg [colspace] , linalg[rowspace].

205

-

AIle Maple-Befehle linalg[ratfonn] ratform(A) ratform(A, name) Ein Synonym filr linalg [frobenius 1 0 Diese Funktion berechnet die rationale kanonische Form der quadratischen Matrix A. 0 Siehe auch: linalg [frobenius 1. linalg[row] row (A, reihe) row(A, reihel .. reihe2) Isoliert Reihen aus einer Matrix 0 Die erste Form isoliert die Reihe mit Index reihe und gibt diese als Vektor zuriick. Die zweite Form isoliert einen ganzen Bereich von Reihen und gibt eine Folge von Vektoren zuriick. 0 Siehe auch: linalg[addrow], linalg[col], linalg[delrows], linalg[mulrow], linalg[rowdim], linalg[swaprow], . Iinalg[rowdim] rowdim(A) Gibt die Anzahl der Reihen einer Matrix A zuriick linalg [rowspacel. linalg [vectdiml.

0

Siehe auch: linalg [coldim],

Iinalg[ rowspace] rowspace(A) rowspace(A, name) Berechnet eine Basis filr den von den Reihen aufgespannten Vektorraum 0 Diese Funktion gibt eine Menge von Vektoren zuriick. die eine Basis ftir den von Reihen der Matrix A aufgespannten Vektorraum bilden. Die Vektoren werden in kanonischer Form zuriickgegeben. d. h. mit fiihrenden Eintriigen I. Wird als zweiter Parameter ein Name angegeben. so wird diesem der Rang von A zugewiesen. 0 Siehe auch: linalg [colspacel. linalg [nullspacel. linalg[rankl. linalg[rowdiml. linalg[rowspanl. Iinalg[rowspan] rowspan(A) rowspan(A, name) Berechnet die aufspannenden Vektoren ftir den von den Reihen gebildeten Vektorraum 0 Diese Funktion berechnet eine Menge von aufspannenden Vektoren ftir den Reihenvektorraum von A. einer Matrix von multivariaten Polynomen tiber den rationalen Zahlen. 1m Gegensatz zu rowspace. benutzt diese Funktion ..bruchfreie" GauB-Elimination; damit wird die Einftihrung rationaler Ausdriicke wiihrend der Elimination unterbunden. Wird als zweiter Parameter ein Name angegeben. so wird diesem der Rang von A zugewiesen. 0 Siehe auch: linalg [colspanl. linalg [ffgausseliml. linalg [rowspacel. linalg[ rref] rref(A) rref (A, name}) rref(A, name}, name2) rref (A, spalte) Reduzierte Zeilenstufenform 0 A ist eine rechteckige Matrix rationaler Zahlen oder rationaler Funktionen mit rationalen Koeffizienten. Auf A werden elementare Reihenoperationen angewandt. urn sie auf Zeilenstufenform (GauB-Jordanform) zu reduzieren. namel. falls vorhanden. wird der Rang von A zugewiesen. Gleicht der Rang der Anzahl der Reihen von A. so wird name2 die Determinante der Untermatrix zugewiesen. die durch die ersten rank{A) Spalten gebildet wird. Sonst wird Null zugewiesen. Die Elimination terminiert an der durch spalte angezeigen Spaltenposition. falls dieses Argument vorhanden ist. 0 Siehe auch: Gaussjord. linalg[backsub], linalg[gausselim], linalg[gaussjord], linalg[hermite], linalg[pivot]' linalg[rankl. linalg[scalannul] scalarmul(A, ausdr) scalarmul(v, ausdr) Multipliziert jedes Element einer Matrix oder eines Vektors mit einem skalaren Ausdruck 0 Siehe auch: evalm. linalg [mulcoll. linalg [mulrowl. linalg [mul tiplyl.

206

linalg[ratform] -linalg[toeplitz] Iinalg[singularvals] singularvals(A) Berechnet die Singuliirwerte einer Matrix 0 Diese Funktion gibt eine Liste der Singuliirwerte der quadratischen Matrix A zuriick. Vnter den Singuliirwerten einer Matrix versteht man die Quadratwurzeln der Eigenwerte von At A. 0 singularvals (matrix ( [ [2,3) , [3,4)) ) ) ; ---> [

JI9 + 6V1O, JI9 - 6V1O]

0

Siehe auch: linalg [eigenvals), Svd.

Iinalg[smith] smith (A, var) smith (A, var, name!, name2) Berechnet die Smith-Normalform einer Matrix 0 Die Eintriige von A sind univariate Polynome in der Variablen var tiber einem Kllrper. Sind vier Argumente vorhanden, so werden den beiden Namen die Transformationsmatrizen U und V zugewiesen, so daB das Ergebnis als UAV geschrieben werden kann. 0 Siehe auch: linalg[hermite], linalg[ismith], Smith.

Iinalg[stack] stack(A, B, ... ) stack(u, v, ... ) Ftigt zwei Matrizen oder Vektoren vertikal zusammen 0 Matrizen mtissen dieselbe Anzahl von Spalten haben, Vektoren mtissen von derseIben Lange sein. Ein Vektor wird als Zeilenvektor interpretiert. 0 Siehe auch: linalg [augment], linalg [extend).

Iinalg[submatrix] submatrix(A, reihen, spalten) Isoliert eine spezifizierte V ntermatrix aus der Matrix 0 Diese Funktion gibt die V ntermatrix von A zuriick, die durch die gegebenen Reihen- und Spaltenindizes gegegeben ist. reihen und spalten kllnnen Bereiche oder Listen ganzer Zahlen sein. 0 Siehe auch: I inalg [subvector) , linalg [row], linalg [col).

Iinalg[subvector] subvector(A, reihen, spalten) Zieht einen spezifizierten Vektor aus einer Matrix heraus 0 Diese Funktion gibt den Vntervektor von A zuriick, der durch die gegebenen Reihen- und Spaltenindizes gegeben ist. Eines der Argumente reihen oder spalten muB ein einfacher Index sein; das andere kann dann ein Bereich oder eine Liste ganzer Zahlen sein. 0 Siehe auch: linalg [submatrix).

Iinalg[sumbasis] sumbasis(SI, S2, ... , Sn) Berechnet die Basis ftir die Vektorraumsumme 0 Jedes der Si kann ein einfacher Vektor sein, eine Liste von Vektoren oder eine Menge von Vektoren. ZUriickgeliefert wird eine Menge von Vektoren, die eine Basis fUr die Summe der Vektorriiume bilden, wird. 0 Siehe auch: linalg [intbasis]' linalg [basis).

Iinalg[swapcol] swapcol(A, spaltel, spalte2) Vertauscht zwei Spalten einer Matrix 0 Diese Funktion erzeugt eine neue Matrix, in der Spalte spaltel mit Spalte spalte2 vertauscht wurde. 0 Siehe auch: linalg [swaprow) .

Iinalg[swaprow] swaprow(A, reihel, reihe2) Vertauscht zwei Reihen einer Matrix 0 Diese Funktion erzeugt eine neue Matrix, in der Reihe reihel mit Reihe reihe2 vertauscht wurde. 0 Siehe auch: linalg [swapcol) .

Iinalg[sylvester] sylvester (polYI, polY2, var) Erzeugt die Sylvestermatrix zweier Polynome 0 polY} und polY2 sind Polynome in der Variablen var. Die Determinante dieser Matrix ist gleich de! Resultanten der Polynome. 0 Siehe auch: I inalg [bezou t), I inalg [det), resul tanto

Iinalg[toeplitz] toeplitz (liste) Erzeugt eine Toeplitzmatrix aus den Ausdriicken in der Liste 0 Das Ergebnis ist eine symmetrische Quadratmatrix, die so viele Reihen besitzt, wie es Elemente in der Liste gibt. Das erste Element von liste wird entlang der Diagonalen plaziert und nachfolgende Elemente werden entlang der nachfolgenden unteren und oberen Nebendiagonalen eingetragen.

207

..

AIle Maple-Befehle Iinalg[trace] trace(A) Berechnet die Spur einer quadratischen Matrix Die Spur von A ist die Summe der Diagonalelemente von A. Siehe auch: trace, Trace. Iinalg[ transpose] transpose (A) transpose (v) transpose (liste) Berechnet die Transponierte einer Matrix Das Ergebnis erbt die Indexfunktion von A. Ein Vektor bzw. eine Liste wird a1s eine einspaltige Matrix behandelt. Siehe auch: linalg[htransposel. linalg[vandermonde] vandermonde(liste) Erzeugt eine Vandermonde-Matrix aus den Elementen der Liste Diese Funktion gibt eine quadratische Matrix zuriick; die Anzahl der Reihen ist gleich der Anzahl der Elemente in der Liste. Der (i, j)te Eintrag ist gleich liste {-I. linalg[ vecpotent] vecpotent(liste, varliste, name) vecpotent(v, varliste, name) Berechnet das Vektorpotential eines Vektorfeldes Das erste Argument ist eine Liste bzw. ein Vektor der drei Ausdriicke, die ein Vektorfeld darstellen, das zweite Argument ist eine Liste dreier Variablen. Diese Funktion ergibt true, falls das Vektorfeld ein Vektorpotential besitzt und weist dann dem dritten Argument das Vektorpotentialfeld zu. Sonst ergibt sich false. Das Vektorpotential existiert genau dann, wenn die Divergenz des Vektorfelds gleich null ist. vecpotent ([-x, -z, zl, [x,y, zl, 'ans'), eval (ans); ---> true, [ ⦅セコR@ XZ 0 Sieheauch: linalg[curl], linalg[diverge], linalg[potentiall.

1

linalg[ vectdim] vectdim(v) vectdim(liste) Bestimmt die Dimension eines Vektors Die Dimension eines Vektors bzw. einer Liste ist die Anzahl der Elemente des Vektors bzw. der Liste. vectdim ( [2,3,3, 7l ); ---> 4 Siehe auch: linalg [coldiml. linalg [rowdiml. linalg[vector] vector(liste) vector(n) vector(n, liste) vector(n, f) Erzeugt einen Vektor Die erste Form erzeugt einen Vektor mit Elementen aus liste. wobei die Dimension des Vektors durch die Lange der Liste gegeben ist. Die zweite Form erzeugt einen Vektor der Lange n mit unbestimmten Elementen. Die dritte Form erzeugt einen Vektor der Lange n mit Elementen aus liste. Bei der letzten Form bestimmt die Funktion f die Vektorelemente: Vk = f(k). vector([2,4,6l): vector(3, [2,4,6l): vector(3,k->2*k): Sieheauch:array. linalg[matrixl. linalg[Wronskian] Wronskian (v, var) Wronskian(liste, var) Berechnet die Wronski-Matrix eines Vektors bzw. einer Liste von Ausdriicken Das erste Argument ist ein Vektor bzw. eine Liste von Ausdriicken in var. Der (i, j )te Eintrag des Ergebnisses ist die (i - 1)te Ableitung des jten Ausdrucks des Vektors bzw. der Liste. In In(z) Der natiirliche Logarithmus Dieser Logarithmus hat die Basis exp(I). In (exp (1) ---> 1 Siehe auch: exp, ilog. log, loglO.

InGAMMA InGAMMA(z) Der natiirliche Logarithmus der Gammafunktion Man muS erst read lib (InGAMMA) eingeben. bevor man diesen Befehl benutzen kann. InGAMMA (6); ---> In(120) Siehe auch: GAMMA.

208

) ;

linalg[trace] -logic[ convert] local local varl, var2, ... Identifiziert 10kaIe Variablen Die local-Deklaration erscheint am Beginn des Korpers einer Prozedur oder einer Pfeilfunktion Siehe auch: options, proc. log log(z) log[bl (z) Der Logarithmus mit Basis b 1st der Index b nicht vorhanden, so wird der natiirIiche Logarithmus benutzt. Siehe auch: ilog, In, 10g10. loglO 10g10(z) Der (gewohnliche) Logarithmus zur Basis 10 Man muS erst readlib (10g10) eingeben, 「・yセイ@ man diesen Befehl benutzen kann. Siehe auch: ilog10, log.

logic Paket zur Boolschen Logik Die folgenden Operatoren werden in diesem Paket benutzt: &and &implies &nor &or &iff &nand ¬ &xor Die Funktionen in diesem Paket miissen erst mit wi th eingeladen werden, 「・yセイ@ man sie benutzen kann. Bei den Beschreibungen der Funktionen dieses Pakets steht b immer fiir einen Boolschen Ausdruck. Siehe auch: logic [ functionl, with. logic[bequal] bequal (bl' b2) bequal(bl, b2, name) Priift, ob die zwei gegebenen Boolschen Ausdriicke logisch aquivaIent sind 1st name vorhanden und sind die beiden Boolschen Ausdriicke nicht logisch aquivaIent, so wird dem Namen eine Wertkombination zugewiesen, bei der die beiden Ausdriicke unterschiedliche Resultate liefem. Diese Wertkombination ist eine Menge von G1eichungen in den Symbolen von b. Sind die beiden Ausdriicke aquivaIent, so wird name gleich NULL gesetzt. Diese Funktion ergibt entweder true oder false. bequal (¬ a &or b, a &implies b); --> true Siehe auch: logic. logic[bsimp] bsimp(b) Vereinfachung Boolscher Ausdriicke Diese Funktion ergibt eine MinimaIsumme von Produktentwicklungen des Boolschen Ausdrucks b. bsimp (a &and (a &or b»; a Siehe auch: logic, logic [distribl, logic [environl.

-->

logie[canon] canon(b, namensliste) canon(b, namensliste, formname) Kanonische Darstellung von Ausdriicken Diese Funktion wandelt den Boolschen Ausdruck b in eine kanonische Form urn und zwar beziiglich der in namensliste gegebenen Symbole. formname wahlt die kanonische Form aus. Diese kann entweder CNF (konjunktive NormaIform), DNF (disjunktive NormaIform. voreingestellt) oder MOD2 (modulo 2 kanonische Form) sein. canon (a &iff b, {a, b}, MOD2); --> a + b + 1 Siehe auch: logic, logic [convert]. logic[convert] convert(b, frominert) convert(b, toinert) convert(b, MOD2) convert(b, MOD2, expanded) Wandelt einen Boolschen Ausdruck in eine andere Form urn Die frominert-Option ersetzt die starren Operatoren &and, &or und ¬ durch die Systemoperatoren and, or und not. Die toinert-Option fiihrt genau die umgekehrte Umwandlung aus. Die MOD2-0ption wandelt b in das aquivaIente modulo 2-Format urn. 1st zudem noch expanded angegeben, so wird die modulo 2-Darstellung voll entwickelt zuriickgegeben. convert (a &and b, MOD2 ); --> a b convert (a and b, toinert); --> a &and b Siehe auch: logic, convert/mod2.

209

..

AIle Maple-Befehle logic[distrib] distrib(b) distrib(b, namensmenge) Entwickelt den Booischen Ausdruck b in eine Summe von Produkten (eine Disjunktion von Konjunktionen) 0 Der entwickelte Ausdruck ist nicht unbedingt in minimaIer Form bzw. kanonischer Form gegeben. 1st namensmenge angegeben, so sollte die Entwicklung in kanonischer disjunktiver NormaIform bezllglich der Symbole in der Menge gegeben sein. o distrib (¬ (a &or b»; ---+ ¬(a)&and¬(b) 0 Siehe auch: logic, logic [canonl, logic [bsimpl, expand. logic[dual] dual (b) Konstruiert die duaIe Form eines Booischen Ausdrucks 0 Diese Funktion gibt die duaIe Form eines Booischen Ausdrucks zurllck: Aile Vorkommen von true, false, &and und &or werden durch false, true, &or bzw. &and ersetzt. Andere Booische Operatoren bleiben unverandert. o dual (a &or b); ---+ a &and b 0 Siehe auch: logic, logic [environl. logic[environ] environ(n) Stellt ein, bis zu welcher Stufe logische Ausdrllcke automatisch vereinfacht werden sollen 0 Diese Funktion bestimmt darllberhinaus auch den Typ der automatischen 10gischen Vereinfachung der Booischen Ausdrtlcke. Es gibt vier mogliche Werte fUr n: o Keine Vereinfachungen (die Voreinstellung) 1 Wende Assoziativitiitsgesetze an, urn llberfillssige Klammem zu entfemen und schreibe die Ausdllcke mittels &and, &or und ¬ urn 2 Obige Vereinfachungen, plus a &and a -. a, a &or a -. a und Vereinfachungen mit true und false 3 Umwandlung in unentwickelte modulo 2-Form o Siehe auch: logic, logic [bsimp], logic [convertl. logic[randbool] randbool(namen, formname) Konstruiert einen zufaIligen Booischen Ausdruck in der gegebenen kanonischen Form 0 namen ist eine Liste bzw. Menge von Symbolen in denen der Booische Ausdruck geschrieben werden soli. Der Name der kanonischen Form formname kann entweder CNF (konjunktive NormaIform), DNF (disjunktive NormaIform) oder MOD2 (modulo 2-NormaIform) sein. 0 randbool ([a,b] ,MOD2); ---+ ab+ 1 + b 0 Sieheauch: logic. logic[satisfy] satisfy(b) satisfy(b, namensmenge) Ergibt eine Auswertung, die einem Booischen AUSdruCk genllgt 0 Diese Funktion ergibt eine Menge von Gleichungen, die solche Werte fUr jede der Variablen von b ergeben, daB der Booische Ausdruck true ergibt. 1st namensmenge vorhanden, so wird zusiitzlich eine Gieichung fUr jedes der Symbole dieser Menge angegeben. 1st b nicht erfiillbar, so wird NULL zUrllckgegeben. 0 satisfy (a &implies b); ---+ {a false, b false} 0 Siehe auch: logic.

=

=

logic[tautology] tautology (b) tautology(b, name) Testet auf Tautologie 0 Diese Funktion prllft, ob der Booische Ausdruck b eine Tautologie ist. Sie ergibt entweder true oderjalse. FaIls name vorhanden ist und b ist keine Tautologie, so wird eine Wertekombination, welche ein negatives Resultat ergibt, diesem Namen zugewiesen. Diese Wertekombination ist eine Menge von Gieichungen in den Symbolen von b. 1st b eine Tautologie, sowirdnameNULLzugewiesen. 0 tautology ( (a &xor b) &or (a &iff b»; ---+ true 0 Siehe auch: logic. Iprint lprint(ausdrl, ausdr2' ... ) Druckt den Ausdruck in einem Iinearen Format aus 0 1m aIlgemeinen stellt eine mit dieser Funktion erzeugte Ausgabe eine gllitige Eingabe fur Maple dar. Mehrere Ausdiicke werden auf der selben Zeile ausgegeben, jeder vom anderen durch drei Leerzeichen abgetrennt. 0 Siehe auch: interface, print.

210

logierdistrib] - maximize macro macro (gll' g12, ... , gln) Eine Funktion zum Abkiirzen 0 1st die Makrodefinition f = 9 giiltig. so iibersetzt Maple alle Vorkommen von f (Parameter und 10kaIe Variablen ausgenommen) in g. wenn die Eingabe yom Bildschirm oder aus einer Datei starnmt. 0 Siehe auch: alias. subs. makehelp makehelp(begriff, textdatei) makehelp(begriff, textdatei, bib) Wandelt eine Textdatei in eine Hilfsdatei urn 0 Diese Funktion liest eine Textdatei. von der angenommen wird. daB sie Hilfsinformation zu einem bestimmten Begriff enthaIt und erzeugt ein internes Hilfsobjekt fiir diesen Begriff. Der Begriff kann von der Form name oder namel / name2 sein. Das entstandene Hilfsobjekt hat dann den Namen help / text / name bzw. help/namel/text/name2. 0 Man muB erst readlib (makehelp) eingeben. bevor man diesen Befehl benutzen kann. map map(f, ausdr, arg2, ... , argn) Wendet eine Funktion auf jeden Operanden eines Ausdrucks an 0 Diese Funktion wendet die Funktion f auf alle Operanden von ausdr an. Es ktlnne zuslitzliche Argumente an f weitergegeben werden. Die Funktion gibt einen Ausdruck zuriick. bei dem jeder Operand durch sein Bild unter f ersetztwurde.o map(f,[a,b,c]); ---+[f(a),f(b),f(c)] 0 map(f,a+b*c); ---+ f(a) + feb c) 0 Siehe auch: select. zip.

march

march -a archivverz dateinamel indexnamel ... march -c archivverz n march -d archivverz indexname march -1 archivverz march -p archivverz march -u archivverz dateinamel indexnamel .. . march -x archivverz dateinamel dateinamel .. . Maple-Bibliotheksarchivmanager 0 Dieses Programm stellt einen extemen Befehl dar zum Erzeugen. Hinzufiigen. Herausnehmen. Aktualisieren. Packen und Auftisten des Inhalts eines Archivs von Maple ... m"-Dateien. Alle Optionen sind nachfolgend beschrieben. -a Fiigt die angegebenen ... m" Dateien hinzu. dabei die gegebenen Indexnamen benutzend -c Erzeugt ein neues Archiv fiir ungefahr n Dateien -d Zersttlrt die Datei mit angegebenem Index (neu in Version 3) -1 Listet den Inhalt des Archivs auf -p Packt das Archiv; aIte Dateiversionen werden zersttlrt -u Aktualisiert die spezifizierten ... m"-Dateien an gegebenen Indexnamen -x Greift indexnamei heraus und speichert es in dateinamei o Die -d-Option ist neu in Version 3. match match(ausdr = muster, var, name) Das Auffinden von Mustern (pattern matching) 0 ausdr ist ein Ausdrnck in der Hauptvariablen var. Diese Funktion ergibt true. falls ausdr irgendwie mit muster zur iibereinstimmung gebracht werden kann und false sonst. Kann eine Ubereinstimmung hergestellt werden. so wird eine Menge von Ersetzungen der Variablen name zugewiesen; diese Ersetzungen machen das Muster zu einem Ausdruck. 0 match(2*x = a*x+b, x,s),s; ---+true.{b=O,a=2} 0 Sieheauch: solve. subs. max max (ausdq, ausdr2' ... ) Berechnet das Maximum der Argumente 0 Wird diese Funktion unausgewertet zUriickgegeben. so kann es manchmal helfen. den Wert von Digits zu vergrtl8em. 0 max(exp(Pi), pi Aexp (1) ); ---+ e'lr 0 Siehe auch: maximize. min. maximize maximize (ausdr) maximize (ausdr, vars) Berechnet das Maximum 0 Diese Funktion berechnet den maximalen Wert von ausdr bzw. eine Folge von Ausdriicken. die aile die Werte enthaIt. die als Maximalwert in Frage kommen. 1st keine Menge von Variablen angegeben. so wird der Ausdruck beziiglich seiner Unbestimmten maximiert.

211

..

AIle Maple-Befehle Man muG erst readlib (minimize) eingeben, bevor man diesen Befehl benutzen kann.

Siehe auch: extrema, minimize. maxnonn maxnorm(poly) Die Unendlichnorm eines Polynoms Gegeben sei ein entwickeltes Polynom; die Funktion gibt das Maximum der Absolutwerte der Koeffizienten zuriick. Die Koeffizienten der Polynome --t 3 Siehe auch: norm. miissen reell sein. ュ。クョッイHセRMSJケI[@ maxorder maxorder(K) maxorder(K, var) Berechnet eine ganzzahlige Basis fiir einen Zahl- oder Funktionenktirper Kist ein RootOfAusdruck bzw. eine Menge von RootOf-Ausdriicken, die die Ktirpererweiterung definieren. Der Name var kann angegeben werden, wenn es sich urn die Erweiterung eines Funktionenktirpers handelt. Man muG erst readlib (maxorder) eingeben, bevor man diesen Befehl benutzen kann. ュ。クッイ、・HrエoヲケセRMULᄏ[@ --t [1,-!+!RootOf(_Z2-5)] ュ。クッイ、・HrエoヲケセRMKLI[@ --t[1,RootOf(_Z2- x 2+ x )] Siehe auch: RootOf. MeijerG MeijerG(m, a, z) Spezialfall der aligemeinen Meijer-G-Funktion mist eine ganze Zahl, die grtiGer oder gleich 2 ist, a ist ein ree1ler Ausdruck und z ist ein komplexer Ausdruck. Me i j erG ( 2 , a, z); --t rca,z) Siehe auch: GAMMA. mellin mellin(ausdr, x, s) Mellin-Transformation Diese Funktion wendet die Mellin-Transformation auf ausdr beziiglich der Variablen x an, wobei ein Ausdruck in s berechnet wird. Dieser ist definiert als 00 ausdr x s - 1 dx. Einige Ausdriicke mit Exponentialfunktionen, Polynomen, algebraischen Funktionen, trigonometrischen Funktionen und einigen anderen speziellen Funktionen ktinnen transformiert werden. mellin(exp(-x) ,x,s); --t f(s) Siehe auch: mellintable.

10

mellintable mellintable(ausdr, ftransform, x, s) Fiigt einen Eintrag zu der Tabelle der einfachen Mellin-Transformationen hinzu Diese Funktion erzeugt einen Eintrag fUr ausdr in einer internen Tabelle der einfachen Mellin-Transformationen. ausdr ist ein Ausdruck in der Variablen x und ftransform ist seine Mellin-Transformierte in der Variablen s. Mit Hilfe dieses Eintrags kann die Funktion mel 1 in die Mellin-Transformierte von Ausdriicken der Form a In(x)kt b f(cx d ) herleiten; hierbei ist ausdr gleich f(x), a, b, c und d sind reell, kist eine positive ganze Zahl und c ist ebenfalls positiv. Man muG erst readlib (mellin) eingeben, bevor man diesen Befehl benutzen kann. member member (ausdr, liste, name) member (ausdr, menge, name) Stellt fest, ob ausdr zur gegebenen Liste bzw. Menge gehtirt Diese Funktion ergibt entweder true oder false. Das dritte Argument ist optional. 1st es vorhanden und ergibt sich true, so wird diesem Namen die Position des ersten Auftretens von ausdr in der Liste bzw. Menge zugewiesen. member (b, [a, b, cl); --t true Siehe auch: has. min min(ausdrl, ausdr2' ... ) Berechnet das Minimum der Argumente Sollte die Funktion unausgewertet zuriickgegeben werden, kann man manchmal durch Erhtihen des Wertes fiir Digi ts Abhilfe schaffen. ュゥョH・クーpILセャᄏ[@ --t7l'(e) Siehe auch: max, minimize. minimize minimize (ausdr) minimize (ausdr, varmenge) Berechnet das Minimum Diese Funktion gibt den Minimalwert von ausdr zuriick oder eine Foige von Ausdriicken, die aile potentiellen Minimalwerte enthlilt. 1st keine Menge von Variablen

212

maxnorm - modp 1 angegeben, so wird der Ausdruck beztiglich aller Unbestimmten minimiert. Man muG erst readlib(minimize) eingeben, bevor man diesen Befehl benutzen kann. Siehe auch: extrema, maximize. minpoly minpoly(r, n) minpoly(r, n, ace) Findet das Minimalpolynom mit einer ungefahren Nullstelle Diese Funktion benutzt einen Gitterreduktionsalgorithmus, urn ein Polynom vom Grad n oder kleiner zu finden, welches kleine ganzzahlige Koeffizienten und die gegebene reelle Zahl r als eine ihrer angenliherten Nullstellen besitzt. Das dritte Argument steuert die Genauigkeit und hat einen voreingetellten Wert von lOd-2, wobei d der aktuelle Wert von Digits ist. Man muG erst read lib (lattice) eingeben, bevor man diesen Befehl benutzen kann. minpoly (1.414214,2); ---> -2 + _X2 Siehe auch: lattice, linalg [minpoly].

mint mint dateiname mint -i n dateiname Der mint-Befehl Dieses Programm ist ein extemer Befehl, welches nach Syntaxfehlem und semantischen Fehlem in einer Maple-Programmdatei sucht. Es ist so lihnlich wie lint aufgebaut, dem Syntaxtestprogramm ftir C. Die Option - i n bestimmt, wie detailliert die erzeugte Information ist. n kann entweder I, 2 (voreingestellt), 3 oder 4 sein. n 2': 1 berichtet tiber gravierende Fehler, n 2': 2 tiber emste Fehler, n 2': 3 gibt Wamungen aus und n = 4 erzeugt einen Report tiber die Nutzung der Variablen. minus mengel minus menge2 'minus' (mengel, menge2) Der Differenzenoperator fUr Mengen Diese Funktion ergibt die Menge der Elemente, die in mengel und nicht in menge2 enthalten sind. {a, b} minus {b, c} ---> {a} Siehe auch: intersect, symmdiff, union. mod ausdr mod m Berechnungen tiber den ganzen Zahlen modulo m Dieser biniire Operator wertet ausdr tiber den ganzen Zahlen modulo m aus, wobei ein System von Vertretem benutzt wird, welches durch den Wert der Umgebungsvariablen 'mod' gegeben ist. mod kennt die folgenden tiber endliche Ringe und Korper definierten Funktionen fUr Polynome und zur Matrizenarithmetik: Berlekamp Expand GetAIgExt Nullspace ProbSplit Resultant Content Factor Hermite Power Quo RootOf Det Factors Interp Powmod Randpoly Roots Discrim Gausselim Irreduc Prem Randprime Smith DistDeg Gaussjord Lcm Primitive Ratrecon Sprem Divide Gcd Normal Primpart Rem Sqrfree Eval Gcdex 50 mod 11; --->6 Factor(x'2+1) mod 2; --->(x+l)2 Sieheauch:&", 'mod', modp, modp1, mods.

'mod' Umgebungsvariable Ihr Wert ist eine Prozedur, die ein System von Vertretem zur ganzzahligen Arithmetik modolu einer ganzen Zahl auswlihlt. Die untersttitzten Auswahlmoglichkeiten sind modp fUr nichtnegative Vertreter und mods fUr symmetrische Vertreter. Voreingestellt ist modp. Siehe auch: mod, modp, mods. modp modp (ausdr, m) Berechnung tiber den ganzen Zahlen modulo m: nichtnegative Vertreter Diese Funktion wertet ausdr tiber den ganzen Zahlen modulo m aus, wobei ein System von Vertretem {O, 1, ... , Iml-l} benutzt wird. modp (50,11); ---> 6 Siehe auch: mod, 'mod', mods. modpl modp1 (ausdr, m) Univariate polynomiale Arithmetik modulo m Diese Funktion stellt effiziente arithmetische und andere Operationen angewandt auf univariate Polynome tiber den ganzen Zahlen modulo m zur VerfUgung. Die folgenden Funktionen sind modp1 bekannt.

213

III

AIle Maple-Befehle Add Chrem Coeff Constant ConvertIn ConvertOut ¢

Det Gcdex Multiply Randpoly Smith Diff Interp One Randprime Sqrfree Divide Irreduc Power Rem Subtract Embed Lcm Powmod Resultant Tcoeff Eval Lcoeff Prem Roots UNormai Factors Ldegree Quo Shift Zero Monomial Degree Gcd Siehe auch: Convert In, ConvertOut, evalgf, GF, mod.

modpol modpol(ausdr, poly, var, p) Auswertung von Ausdrilcken in einem Quotientenkllrper ¢ ausdr ist ein rationaler Ausdruck in var und poly ist ein Polynom in var. p ist eine Primzahl. Diese Funktion berechnet einen kanonischen Vertreter fiIr ausdr in GF(p)[xJ/(po/y). ¢ Man muB erst read lib (modpol) eingeben, bevor man diesen Befehl benutzen kann. ¢ modpol (xl (x+l) LクセRKャ@ x, 2) ; --+ x + 1 ¢ Siehe auch: GF. mods mods (ausdr, m) Berechnung tiber den ganzen Zahlen modulo m: symmetrische Vertreter ¢ Diese Funktion wertet ausdr tiber den ganzen Zahlen modulo m aus, wobei das System von Vertretem

{- ャュセM@

J ,... , lセ@ J} benutzt wird.

¢

mods (50,11);

--+

-5

¢

Siehe auch: mod,

'mod', modp. MOLS MOLS(p, m, n) Lateinische Quadrate, die zueinander orthogonal sind ¢ Diese Funktion ergibt eine Liste von n zueinander orthogonalen Lateinischen Quadraten der GroBe pm, falls gilt n < pm. Die Lateinischen Quadrate A und B sind orthogonal, falls die Sammlung der geordneten Paare (Aij, Bij) keine sich wiederholenden Elemente besitzt. ¢ Man muB erst read lib (MOLS) eingeben, bevor man diesen Befehl benutzen kann. msolve msolve(glchgen, vars, m) msolve(glchgen, m) L1Ist Gleichungen tiber den ganzen Zahlen modulo m ¢ glchgen ist eine einfache Gleichung oder eine Menge von Gleichungen. Die Voreinstellung ist so, daB Mchstens 5 Lilsungen gefunden werden. Dies kann man durch geeignete Zuweisung der Umgebungsvariablen ..MaxSols lindern. vars benennt Variablen, die zur Parametrisierung einer Familie von L1Isungen benutzt werden sollen. Dies kann eine Menge oder ein einfacher Name sein. 0 msolve HクセS]QL@ 41); --+ {x = 6} ¢ Siehe auch: mod, isolve, numtheory[mrootl, numtheory[msqrtJ, Roots, solve. mtaylor mtaylor(ausdr, vars) mtaylor(ausdr, vars, n) mtaylor(ausdr, vars, n, liste) Berechnet eine multivariate Taylorreihenentwicklung des Eingabeausdrucks ausdr beztiglich der Variablenvars bis zur Ordnung n; dabei werden die variablen Gewichte w benutzt ¢ vars kann eine Liste bzw. Menge von Namen oder Gleichungen sein. Ein Name steht fiir die Gleichung name = O. n gibt an, wo die Reihe abgeschnitten werden soli (totaler Grad). Das vierte Argument spezifiziert die Gewichte (positive ganze Zahlen) mr die Variablen: ein Gewicht 2 halbiert die Ordnung, bis zu der die Reihe berechnet werden soli in der entspechenden Variablen. Das Ergebnis ist ein Polynom. ¢ Man muB erst readlib (mtaylor) eingeben, bevor man diesen Befehl benutzen kann. ¢ mtaylor (sin (x) *sin (y) , [x, y] ,5); --+ x Y - ix y3 - i x 3 Y ¢ Siehe auch: coeftayl, poisson, series, taylor.

nargs Die Anzabl der Argumente einer Prozedur ¢ Innerhalb der Prozedur hat der spezielle Name nargs als Wert die Anzahl der Elemente der Folge von Ausdrilcken args. ¢ Siehe auch: args, proc, procname.

214

mod pol- networks [ancestor1 networks Das Netzwerk-Paket 0 Die Funktionen dieses Pakets miissen zuerst mit wi th eingeladen werden. bevor man sie benutzen kann. Bei den Funktionsbeschreibungen dieses Pakets stehen G und H fiir Graphen. e bezeichnet eine Ecke und k steht fiir eine Kante. Ein Graph wird durch eine spezielle Prozedur vom Typen GRAPH dargestellt. 0 Siehe auch: networks [ function). type/GRAPH. with. networks[acycpoly] acycpoly(G, p) Polynom zur Azyklizitat eines ungerichteten Graphen 0 Diese Funktion gibt die Wahrscheinlichkeit an. mit der G azyklisch ist. wenn jede Kante mit Wahrscheinlichkeit p operiert. 0 Siehe auch: networks [chrompoly). networks [flowpoly). networks [rankpoly). networks [spanpoly). networks [tuttepoly). networks[ add edge ] addedge({el, e2l, G) addedge([el, e2l, G) addedge(el, e2, names=knames, weights=kweights, G) addedge(Cycle(kl, ... , k n ), G) addedge(Path(kl, ... , k n ), G) Fiigt eine oder mehrere Kanten zum Graphen hinzu 0 Eine ungerichtete Kante wird durch eine Menge von Ecken beschrieben. Eine gerichtete Kante wird durch eine Liste zweier Ecken dargestellt: die Startecke ist die erste. die Endecke die zweite. Es kann eine Liste solcher Sammlungen von Ecken angegeben werden. urn mehr als eine Ecke auf einmal einzufiigen. Die Option names gibt einen einfachen Namen oder eine Liste von Namen an. die man fiir die neu erzeugten Kanten benutzen kann. Die Option weights gibt ein einfaches Gewicht bzw. eine Liste von Gewichten fiir die erzeugten Kanten an (voreingestelltes Gewicht ist I). Die Cycle-Form fiigt einen Zyklus von Kanten ein. der die benannten Ecken verbindet. Path fiigt Kanten hinzu. die die benannten Ecken mit einem pfad verbinden. Zuriickgegeben wird eine Foige von Ausdriicken. die die Namen der neuen Kanten angibt. 0 Siehe auch: networks [addvertex) • networks [edges). networks [ends). networks [eweight). networks [headl. networks [tail). networks[addvertex] addvertex(ecken, G) addvertex(ecken, weights=eweights, G) Fiigt eine oder mehrere Ecken zum Graphen hinzu 0 ecken kann eine einfache Ecke. eine Folge. Liste oder Menge von Ecken sein. Die Option weights gibt den neuen Ecken ein einfaches Gewicht bzw. eine Liste von Gewichten (voreingestellt ist Gewicht 0). ZUriickgegeben wird eine Folge von Namen der neu erzeugten Ecken. 0 Siehe auch: networks [addedgel. networks [edges). networks [verticesl. networks [vweightl. networks[adjacency] adjacency (G) Konstruiert die Adjazenzmatrix eines Graphen 0 Diese Funktion erzeugt eine Matrix. deren Reihen und Spalten durch die Ecken (in Reihenfolge) indiziert sind und deren (i, j )ter Eintrag die Anzahl der Kanten von Ecke i nach Ecke jist. 0 Siehe auch: networks [charpolyl. networks [incidence). networks[allpairs] allpairs(G) allpairs(G, name) Kiirzester Weg in einem Graph zwischen allen moglichen Paaren 0 Diese Funktion stellt eine Implementation von floyds Algorithmus zur Bestimmung des kiirzesten Weges zwischen allen Paaren dar. Das Ergebnis ist eine TabeUe. die die kiirzesten Entfemungen zwischen einem jeden Paar von Ecken enthiilt. Einem als zweiten Parameter gegebenen Namen wird eine Tabelle von Vorfahren zugewiesen. 0 Siehe auch: networks [ancestorl. networks [daughterl. networks [eweight). networks [shortpathtreel. networks [spantreel. networks [vweightl. networks[ancestor] ancestor(e, G) ancestor (emenge, G) ancestor (G) Finde Vorfahren in einem gerichteten Baum 0 Die erste Form gibt die Menge der Vorfahren von e im Graphen zuriick. Die zweite Form gibt die Menge der Vorfahren des Teilgraphen

215

III

AIle Maple-Befehle zuriick, der durch die angegebene Menge von Ecken in G beschrieben wird. Mit nur einem Argument gibt diese Funktion die Tabelle von Vorfahren von G zuriick, durch die entsprechende Ecke indiziert. Siehe auch: networks [daughter], networks [path], networks [shortpathtree], networks [spantree]. networks[arrivals] arrivals(e, G) arrivals (emenge, G) arrivals (G) Benachbarte Ecken, die entlang eingehender Kanten gefunden werden Die erste Form gibt die Menge von Ecken zuriick, die Anfangsecken der in Richtung e laufenden Kanten sind. Ungerichtete Kanten werden a1s doppeJt gerichtet behandelt. Die zweite Form berechnet die Anfangsecken eines Teilgraphen; der Teilgraph wird durch die Menge der Ecken beschrieben. Die dritte Form gibt eine Tabelle von Anfangsecken zuriick, wobei diese durch Ecken indiziert werden. Siehe auch: networks [departures], networks [head], networks [neighbors], networks [tail]. networks[bicomponents ] bicomponents(G) Bestimmt die zweifach zusammenhangenden Komponenten eines Graphen Ein zusammenhangender Graph kann in zwei zusanlmenhangende Komponenten, die moglicherweise durch Briicken verbunden sind, zerlegt werden. Diese Funktion gibt zwei Mengen in einer Liste zuriick: die erste gibt die Briicken an, die zweite die zusammenhangenden Komponenten. Briicken werden a1s Kanten spezifiziert. Siehe auch: networks [addvertex], networks [components], networks [edges], networks [ends], networks [head], networks [tail]. networks[ charpoly] charpoly(G, x) Charakteristisches Polynom eines ungerichteten Graphen Diese Routine berechnet das charakteristische Polynom der Adjazenzmatrix von G, ausgedriickt a1s Polynom in var. Siehe auch: networks [adjacency]. networks[ chrompoly] chrompoly(G, .x) Berechnet das chromatische Polynom des Graphen G a1s ein Polynom in .x Der Wert dieses Polynoms ist die Anzahl der korrekten Eckenfarbungen von Gunter Benutzung von>. Farben. Siehe auch: networks [acycpoly], networks [flowpoly], networks [rankpoly], networks [spanpoly], networks [tuttepoly]. networks[ complement] complement (G) complement(G, H) Findet das Komplement des Graphen Bei der ersten Form ist das Komplement beziiglich des vollstandigen Graphen mit derselben Anzahl von Ecken gemeint. Bei der zweiten Form handelt es sich urn das Komplement beziiglich H. Siehe auch: networks [complete] , networks [induce]. networks[ complete] complete(n) complete (emenge) complete(m, n) complete (ml, ... , mk) Erzeugt einen vollstandigen Graphen Die Anzahl der Argumente gibt die Anzahl der Teile an. Jedes Teil wird durch eine ganze Zahl spezifiziert, die die Anzahl der Ecken in diesem Teil angibt; so erzeugt zum Beispiel die zweite Form einen vollstandigen zweiteiligen Graphen. Handelt es sich nur urn ein Teil, so kann eine Menge von Namen von Ecken angegeben werden. Siehe auch: networks [cycle], networks [petersen], networks [void]. networks[ components] components (G) Findet die zusammenhangenden Komponenten eines Graphen Diese Funktion gibt die Komponenten des Graphen G a1s eine Menge von Mengen von Ecken zuriick. Siehe auch: networks [bicomponents], networks [induce], networks [vertices].

216

networks [arrivals] - networks [cycle] networks[connect] connect (eml, em2, G) connect (eml, em2, weights=listel, G) connect (eml, em2, names=liste2, G) connect (eml, em2, directed, G) Verbindet zwei Mengen von Ecken in einem Graphen 0 Jedes der em ist eine Liste bzw. Menge von Ecken von G. Diese Funktion verbindet jede Ecke in em I mit jeder Ecke in em2 durch eine Kante. Die Namen der neuen Kanten werden als eine Folge von Ausdriicken zuriickgegeben. Die Option directed erzeugt gerichtete Kanten und zwar von eml nach em2 (voreingestellt ist ungerichtet). Die Gewichte und Namen der Ecken kiinnen in Listen angegeben werden, die mit den Optionen weights und names assoziiert sind. 0 Siehe auch: networks [addedge], networks [edges].

networks[connectivity] connectivity (G) connectivity(G, n) connectivity(G, n, name I , name2) Berechnet den Zusammenhang von Kanten in einem Graphen G 0 n ist eine untere Schranke fUr den Zusammenhang. namel, falls vorhanden, wird eine Menge von Ecken zugewiesen, von der man weiB, daB sie einen gewissen minimalen Kantenschnitt darstellt. name2, falls vorhanden, wird eine Menge von Ecken zugewiesen, von denen man weiB, daB sie iibersiittigt sind. 0 Siehe auch: networks [components], networks [countcuts], networks [flow].

networks[contract] contract (kanten, G) contract (epaare, G) Kontrahiert Kanten in einem Graphen 0 kanten ist eine einfache Kante oder eine Liste bzw. Menge von Kanten. epaare ist ein verbundenes Eckenpaar, welches eine Kante eindeutig identifiziert oder eine Liste bzw. Menge von Paaren. Diese Funktion zieht die durch das erste Argument angegebene Kanten von G zusammen. Zuriickgegeben wird der Name der Ecke, die diese Operation iiberlebt hat oder eine Menge solcher Namen, wenn es sich urn mehr als eine zusammengezogene Kante handelt. 0 Siehe auch: networks [delete], networks [edges], networks [ends], networks [shrink].

networks[countcuts] countcuts(G) Zlihlt die minimalen Netzwerkschnitte eines ungerichteten Graphen 0 Diese Funktion berechnet die Anzahl der Schnitte mit minimaler Kardinalitlit in einem ungerichteten Multigraphen. 0 Siehe auch: networks [connectivity], networks [counttrees].

networks[counttrees] count trees (G) Ziihlt die aufspannenden Baume in einem ungerichteten Graphen 0 Diese Funktion benutzt den Kirchhoffschen Matrixbaum-Satz, urn die aufspannenden Baume von G zu zahlen. 0 Siehe auch: networks [spantree].

networks[cube] cube(n) cube (ecken) cube() Erzeugt einen Hyperwilrfe1 0 Die erste Form erzeugt den nten Hyperwilrfel, einen Graphen mit 2n Ecken. Die zweite Form benennt die im Graphen benutzten Ecken. ecken ist eine Liste bzw. Menge mit einer Lange, die eine Zweierpotenz ist. Die dritte Form ist ilquivalent zu cube (3). 0 Siehe auch: networks [dodecahedron], networks [icosahedron], networks [octahedron], networks[petersen], networks[tetrahedron].

networks[cycle] cycle(n) Erzeugt einen Zyklus 0 Diese Funktion erzeugt einen Graphen, welcher einen ungerichteten Zyklus mit n Ecken und Kanten darstellt. 0 Siehe auch: networks [complete], networks [void].

217



AIle Maple-Befehle networks[cyclebase] cyclebase(G) Findet einen Zyklenbasis in einem ungerichteten Graphen 0 Nachdem ein aufspannender Baum gefunden wurde. findet diese Funktion aile fundamentalen Zylden beziiglich eines aufspannenden Baumes. ZUrUckgegeben wird eine Menge von Zyklen. wobei jeder Zyldus durch eine Menge von Ecken dargestellt wird. 0 Siehe auch: networks [components l. networks [fundcyc l. networks [spantreel. networks[daughter] daughter(e, G) daughter (G) Findet Tiichter in einem gerichteten Baum 0 Bei der ersten Form wird eine Menge von Tochtem von e im Graphen zuruckgegeben. Die zweite Form ergibt die Menge der Tochter des durch die angegeben Ecken in G induzierten Teilgraphen. Mit einem einfachen Argument berechnet diese Funktion die Tabelle der Tochter von G. durch Ecken indiziert. 0 Siehe auch: networks [ancestorl. networks [pathl. networks [shortpathtreel. networks[spantreel. networks[degreeseq] degreeseq(G) Findet die Folge der verschiedenen Grade eines Graphen 0 Diese Funktion gibt eine Liste von Eckengraden. in aufsteigender Ordnung sortiert. 0 Siehe auch: networks [indegree], networks [maxdegreel. networks [mindegreel. networks [outdegreel. networks [vdegreel. networks[delete] delete (kanten, G) delete (ecken, G) Entfemt Ecken oder Kanten aus einem Graphen 0 Diese Funktion modifiziert den gegebenen Graphen G indem die angegebenen Ecken bzw. Kanten entfemt werden. Das erste Argument kann entweder eine einfache Ecke bzw. Kante oder eine Liste bzw. Menge von Ecken bzw. Kanten sein. Der modifizierte Graph wird ebenfalls von der Routine zuruckgegeben. 0 Siehe auch: networks [complementl. networks [contractl. networks[departures] departures(e, G) departures (emenge, G) departures (G) Die benachbarten Ecken. die sich entlang ausgehender Kanten befinden 0 Die erste Form gibt die Menge von Ecken zurUck. die die Endecken von Kanten sind. die von e ausgehen. Ungerichtete Kanten werden alS doppelt gerichtet behandelt. Die zweite Form berechnet die Endecken des Teilgraphen. der durch die gegebene Menge von Ecken induziert wird. Die dritte Form ergibt eine Tabelle von Endecken. indiziert durch die Ecke. 0 Siehe auch: networks [arrivals], networks [headl. networks [neighbors l. networks [taill. networks[diameter] diameter (G) Berechnet den Durchmesser eines Graphen 0 Das Ergebnis ist gleich unendlich. wenn der Graph nicht zusammenhangend ist. Die Gewichte an den Ecken werden als Langen oder Distanzen betrachtet und milssen deshalb nichtnegativ sein. 0 Siehe auch: networks [allpairs l. networks [eweightl. networks [shortpathtreel. networks [spantreel. networks[dinic] dinic(G, el, e2) dinic(G, el, e2, name I , name2) dinic(G, el, e2, name I , name2, n) Algorithmus zur Berechnung eines maximalen F1usses 0 Diese Funktion berechnet den maximalen FluB von der QueUe el zur Senke e2. Die Gewichte der Kanten von G werden alS Kapazitllten interpretiert. 1st namel angegeben. so wird diesem die Menge der gesllttigten Kanten zugewiesen. name2 wird dann die Menge der korrespondierenden Ecken zugewiesen. Wird eine nichtnegative ganze obere Schranke n angegeben. so stoppt die Routine sobald ein FluB der Kapazitlit n gefunden wurde. auch wenn F1i1sse hoherer Kapazitlit existieren. Diese Funktion wird normalerweise von networks [flowl aufgerufen. 0 Siehe auch: networks [connecti vi tyl. networks [flowl. networks [spantreel. networks [shortpathtreel.

218

networks [cyclebase] - networks [eweight] networks[ djspantree] djspantree{G) Aufspannender Baum eines Graphen mit disjunkten Kanten 0 Diese Funktion benutzt den Unterteilungsalgorithmus von Edmond, urn eine Unterteilung von G in eine minimale Anzahl von WliIdem zu finden. So viele WliIder der endgUltigen Unterteilung wie irgend moglich, sind aufspannende Biiume. Zurilckgegeben wird eine Tabelle von Kantenmengen. 0 Siehe auch: networks [components], networks [countcuts l, networks [flowl, networks [spantreel. networks[dodecahedron] dodecahedron ( ) Erzeugt einen Graphen, welcher die Topologie eines Dodekaeder beschreibt 0 Siehe auch: networks [cube], networks [icosahedron], networks [octahedron], networks [petersen], networks [tetrahedron]. networks[draw] draw{G) draw {Concentric {elistel, eliste2, ... }, G} draw {Linear {elistel, eliste2, ... }, G} Zeichnet einen Graphen 0 Diese Funktion zeichnet die Kanten und Ecken eines Graphen. Die erste Variante ordnet die Ecken in gleichen Abstiinden kreisfOrmig an. Die Option Linear zeichnet die Gruppen von Ecken, die durch die Listen angegeben sind, in parallelen Linien. Die Option Concentric zeichnet die durch die Listen spezifizierten Gruppen von Ecken als konzentrische Kreise, wobei die erste Liste den innersten Kreis bildet. 0 Siehe auch: networks [showl. networks[ duplicate] duplicate {G} Kopiert einen Graphen

0

Siehe auch: networks [complement], networks [induce].

networks[ edges] edges (G) edges{[el, e2l, G} edges{{el, e2}, G} edges {epaar, G, all} Findet Kanten in einem Graphen 0 Die erste Form gibt eine Liste aller Kanten in G zUrilck. Die zweite Form gibt eine Liste aller gerichteten Kanten von el nach e2 zurilck. Die dritte Form formt eine Liste aller ungerichteten Kanten, die e 1 und e2 verbinden. Beim letzten Schema wird die Menge aller der Kanten zurilckgegeben, die die beiden Ecken in in epaar verbinden; dabei ist die Richtung nicht von Interesse. epaar kann eine Liste oder eine Menge sein. 0 Siehe auch: networks [addedge], networks [ends], networks [head], networks [tail],

networks [vertices]. networks[ends] ends{k, G} ends {kanten, G} ends(G} Findet die Enden einer Kante in einem Graphen 0 Gegeben sei eine einfache Kante als erstes Argument; diese Funktion gibt das Paar von Ecken zurilck, das die Enden der Kante darstellt. 1st die Ecke gerichtet, wird das Paar als Liste mit der Anfangsecke zuerst zurilckgegeben; sonst stellt das Paar eine Menge dar. 1st eine Liste bzw. Menge von Kanten als erstes Argument gegeben, so wird eine Liste bzw. Menge von Eckenpaaren zurilckgegeben. Die letzte Variante ist liquivalent zu ends {edges {G} , G} 0 Siehe auch: networks [edges], networks [headl, networks [tail]. networks[eweight] eweight{k, G} eweight{kliste, G} eweight{G} Bestimmt die Gewichte der Kanten eines Graphen 0 Diese Funktion ergibt das mit der Kante k assoziierte Gewicht bzw. die Liste von Gewichten, die mit der Liste von Kanten kliste assoziiert sind. Die dritte Variante gibt die Tabelle der Kantengewichte von G zurilck. 0 Siehe auch: networks [edges], networks [vweight].

219

AIle Maple-Befehle networks[ftow] flow{G, e}, e2} flow{G, e}, e2, maxflow=n} flow{G, e}, e2, name}, name2} flow{G, e}, e2, name}, name2, maxflow=n} Berechnet den maximalen FluB in einem Netzwerk Diese Funktion berechnet den maximalen FluB von der Quelle €l zur Senke €2. Die Gewichte der Kanten von G werden als Kapazitliten interpretiert. 1st name 1 spezifiziert. so wird diesem die Menge der geslittigten Kanten zugewiesen; name2 die Menge der Ecken dieser Kanten. Die Option maxflow sorgt dafiir. daB n den Wert des maximalen gefundenen Flusses erhlilt. Siehe auch: networks [connectivity]. networks [dinic]. networks [mincut]. networks [shortpathtree]. networks [span tree]. networks[ftowpoly] flowpoly{G, var} Berechnet das Polynom des Flusses eines ungerichteten Graphen 1st var eine ganze ZalIl m. so ist dies die AnzalIl der Fliisse in G. die nirgendwo gleich null sind, wobei ihre Kantenbezeichnungen aus den ganzen ZalIlen modulo m ausgewli1Ilt werden. Siehe auch: networks [acycpoly], networks [chrompoly]. networks [rankpoly]. networks [spanpoly], networks [tuttepoly]. networks[fundcyc] fundcyc{kmenge, G} Findet den Zyklus in einem einzyklischen ungerichteten Graphen Gegeben sei eine Teilmenge von Kanten, die einen einzyklischen Teilgraphen von G formen, dann gibt diese Funktion die Kanten. die diesen eindeutigen Zyklus formen. als eine Menge zuriick. Siehe auch: networks [components], networks [cyclebase], networks [rank], networks [span]. networks[getlabel] getlabel {G} Findet die eindeutige interne Bezeichnung des Graphen Jeder Graph besitzt eine interne Kennnung, so daB Kopien desselben Graphen voneinander unterschieden werden kiinnen. Siehe auch: networks [duplicate]. networks [new). networks[girth] girth(G) girth{G, name} Findet die Lange des kiirzesten Zyklus in einem ungerichteten Graphen G Besitzt der Graph keine Zyklen. so wird unendlich zuriickgegeben. Wird zuslitzlich ein Name angegeben, so wird diesem die Menge der Kanten zugewiesen, die einen kiirzesten Zyklus bilden. Siehe auch: networks [cycle]. networks[graph] graph {emenge, kmenge} Erzeugt einen Graphen aus einer angegeben Menge von Ecken und Kanten kmenge ist eine Menge von Eckenpaaren. Jedes Paar kann eine Liste oder Menge sein: eine Liste steht fiir eine gerichtete Kante, eine Menge fiir eine ungerichtete Kante. Siehe auch: networks [induce) , networks [new). networks[graphical] graphical {intliste} graphical {intliste, MULTI} Priift, ob eine Liste von ganzen ZalIlen eine Graphen beschreibt Diese Funktion priift, ob die Liste von ganzen ZalIlen die Gradfolge eines einfachen Graphen oder eines Multigraphen ohne Schleifen (falls MULTI angegeben ist) ist. 1st dies der Fall, so wird eine Liste von Kanten zuriickgegeben, die diesen Graphen realisieren; sonst ergibt sich FAIL. graphical ( [1,2, 1) } ; ----> [{2, 3}, {I, 2}] Siehe auch: networks [degreeseq), networks [maxdegree], networks [mindegree], networks [vdegree]. networks[gsimp] gsimp {G} Erzeugt einen einfachen Graphen aus einem Multigraphen Diese Funktion entfernt Schleifen. ersetzt gerichtete Kanten durch ungerichtete Kanten und ersetzt Mehrfachkanten durch eine einfache Kante mit der g\eichen Kapazitlit wie die alten Kanten zusammen. Zuriickgegeben wird der modifizierte Graph G. Siehe auch: networks [delete).

220

networks [flow] - networks[isplanar] networks[gunion] gunion(G, H) gunion(G, H, SIMPLE)

Vereinigung zweier Graphen ¢ Diese Funktion erzeugt einen Graphen, dessen Menge von Ecken die Vereinigung der Mengen von Ecken von G und H ist und der dariiberhinaus fiir jede Kante von G und fiir jede Kante von Heine Kante besitzt. Vielfachkanten mit denselben Endpunkten werden beibehalten; nur wenn SIMPLE angegeben wird, werden sie zu einer einfachen Kante reduziert. Siehe auch: networks [addedge], networks [addvertex].

networks[head] head(k, G) head (kanten, G) head(G)

Findet die Endpunkte von gerichteten Kanten ¢ 1st k ungerichtet, so wird NULL zurilckgegeben. 1st eine Liste bzw. Menge von Kanten kanten angegeben, so wird eine Liste bzw. Menge von Endecken zurilckgegeben. 1st nur der Graph G angegeben, so erzeugt diese Funktion eine Tabelle, in der die Endecken aller Kanten gespeichert sind. ¢ Siehe auch: networks [ends] , networks [tail].

networks[icosahedron] icosahedron ( )

Erzeugt einen Graphen, welcher die Topologie eines Ikosaeder beschreibt

¢

Siehe auch:

networks [cube], networks [dodecahedron], networks [octahedron], networks [petersen], networks [tetrahedron].

networks[incidence] incidence (G)

Erzeugt eine Inzidenzmatrix eines Graphen ¢ Die Reihen der Inzidenzmatrix stellen Ecken und die Spalten stellen Kanten dar. Eine von einer Ecke ausgehenden Kante ergibt einen Wert von -1 in der Matrix; eine eingehende oder ungerichtete Kante ergibt I. Alle anderen Eintriige sind gleich o. ¢ Siehe auch: networks [adjacency], networks [edges], networks [ends], networks [incident].

networks[incident] incident(e, G, option) incident (emenge, G, option)

Findet die Kanten, die zu einer gegebenen Menge von Ecken inzident sind Die erste Form gibt die Menge der Kanten zurilck, die zur Ecke e inzident sind. Gegeben sei eine Menge von Ecken, dann ergibt diese Funktion die Menge der Schnittecken beziiglich des Teilgraphen, der durch diese Menge von Ecken induziert wird. option kann entweder In oder Out sein, urn anzugeben welche K1asse von gerichteten Kanten betrachtet werden soli. Ungerichtete Kanten werden als doppelt gerichtet betrachtet. ¢ Siehe auch: networks [arrivals], networks [departures], networks [neighbors].

networks[indegree] indegree(e, G)

Findet den eingehenden Grad der Ecke e Diese Funktion betrachtet ausschlieBlich gerichtete Kanten. ¢ Siehe auch: networks [maxdegree], networks [mindegree], networks [neighbors], networks[outdegree], networks[vdegree].

networks[induce] induce (kmenge, G) induce (emenge, G)

Induziert einen Teilgraphen in einem Graphen Diese Funktion erzeugt einen Teilgraphen von G entweder aus einer Menge von Ecken und ihren verbindenden Kanten oder einer Menge von Kanten und ihrer Endpunkte. ¢ Siehe auch: networks [complement], networks [edges], networks [ends], networks [incident], networks [vertices].

networks[isplanar] isplanar(G)

Prilft, ob der Graph eben ist Diese Funktion ergibt true, falls der Graph eine ebene Einbettung besitzt undfalse sonst. ¢ Siehe auch: networks [bicomponents].

221



AIle Maple-Befehle networks[maxdegree] maxdegree(G) maxdegree(G, name) Findet den maximaIen Eckengrad in einem ungerichteten Graphen Diese Funktion berechnet die Gesamtzahl ungerichteter Kanten (Schleifen eingeschlossen), die zu einer Ecke inzident sind und gibt das Maximum tiber aIle Ecken zuruck. Wird ein Name angegeben, so wird diesem eine Ecke mit maximaIem Grad zugewiesen. Siehe auch: networks [indegree] , networks [mindegree], networks [outdegree], networks [vdegree]. networks[mincut] mincut(G, el, e2) mincut(G, el, e2, name) Findet den minimaIen Schnitt in einem Netzwerkftu6problem Diese Funktion gibt die kleinste Menge von Ecken zuruck, deren Entfemen aIle gerichteten Wege von der QueUe el zur Senke e2 unterbrechen wtirde. 1st ein Name angegeben, so wird diesem der Wert des Schnittes zugewiesen. Siehe auch: networks [connectivity], networks [countcuts], networks [edges], networks [flow]. networks[mindegree] mindegree(G) mindegree(G, name) Findet den minimaIen Eckengrad in einem ungerichteten Graphen Diese Funktion berechnet die Gesamtzahl ungerichteter Kanten (Schleifen eingeschlossen), die zu einer Ecke inzident sind und gibt das Minimum tiber aIle Ecken zuruck. Wird ein Name angegeben, so wird diesem eine Ecke mit minimaIem Grad zugewiesen. Siehe auch: networks [indegree] , networks [maxdegree], networks [outdegree], networks [vdegree]. networks[neighbors] neighbors(e, G) neighbors (emenge, G) neighbors (G) Findet benachbarte Ecken, wobei aIle Kanten aIs ungerichtet angesehen werden Die erste Form gibt die Menge der Ecken zuruck, die die Endpunkte einer Kante sind, die inzident zu e ist, unabhangig von der Riehtung. Die zweite Form berechnet die Nachbam des durch die gegebene Menge von Ecken induzierten Teilgraphen. Die dritte Form gibt eine TabeUe von Nachbarn zuriick, die durch die Ecken indiziert wird. Siehe auch: networks [arrivals] , networks [departures]. networks[new] newt) new (name) Erzeugt einen neuen Graphen ohne Ecken oder Kanten Wird ein Name spezifiziert, so wird diesem der neue Graph zugewiesen. Diese Funktiuon liefert den neuen Graphen zuruck. Siehe auch: networks [addedge], networks [addvertex], networks [void]. networks[octahedron] oc tahedron ( ) Erzeugt einen Graphen, der die Topologie eines Oktaeder beschreibt Siehe auch: networks [cube], networks [dodecahedron], networks [icosahedron], networks [petersen], networks [tetrahedron]. networks[outdegree] outdegree(e, G) Findet den ausgehenden Grad der Ecke e Diese Funktion betrachtet ausschlie61ich gerichtete Kanten. Siehe auch: networks [indegree], networks [maxdegree] , networks [mindegree], networks [neighbors], networks [vdegree]. networks[path] path( [el, e2], G) Findet einen Weg in einem gerichteten Baum Gibt es einen gerichteten Weg von el nach e2, so ergibt diese Funktion eine Liste aIler Ecken dieses Weges. Kann ein solcher Weg nieht gefunden werden, so wird FAIL zuruckgegeben. Siehe auch: networks [ancestor], networks [daughter], networks [shortpathtree].

222

networks [maxdegree]- networks [span] networks[petersen] petersen ( ) Erzeugt einen speziellen Graphen, den Petersen-Graph Siehe auch: networks [cube], networks [dodecahedron], networks [icosahedron], networks [octahedron], networks [tetrahedron].

networks[random] random(n) random(n, m) random(n, prob=p) Erzeugt einen Zufallsgraphen 1st ein einfaches Argument n gegeben, so erzeugt diese Funktion einen Zufallsgraphen mit n Ecken, wobei jede Kante mit Wahrscheinlichkeit auftritt. Zusatzliche Argumente geben die Anzahl der Kanten m an, oder die Wahrscheinlichkeit p, mit der jede Kante auftritt. Siehe auch: networks [complete], networks [cycle], networks [new].

!

networks[rank] rank(k, G) rank (kmenge, G) Berechnet den Rang einer Menge von Kanten Das erste Argument kann entweder eine einfache Kante oder eine Menge von Kanten sein. Der Rang ist die Anzahl der Ecken von G minus der Anzahl der Komponenten des durch die Kantenmenge induzierten Teilgraphen. Siehe auch: networks [components], networks [induce], networks [span].

networks[rankpoly] rankpoly(G, x, y) (Whitney)-Rangpolynom eines ungerichteten Graphen Der Koeffizient von xiyi im Rangpolynom ist die Anzahl der aufspannenden Teilgraphen von G, die i Komponenten mehr als G und einen Zyklusraum der Dimension j besitzen. Siehe auch: networks [acycpoly], networks [chrompoly], networks [flowpoly], networks [spanpoly], networks [tuttepoly].

networks[shortpathtree] shortpathtree(G, e) Konstruiert einen aufspannenden Baum kiirzesten Weges Diese Funktion implementiert Dijkstras Algorithmus zur Berechnung eines aufspannenden Baums mit kiirzestem Weg mit Wurzel e. Die Kantengewichte in G werden als Langen oder Entfemungen interpretiert und miissen deshalb nichtnegativ sein. Die endgiiltigen Entfemungen werden als Eckengewichte im zuriickgegebenen Graphen aufgezeichnet. Siehe auch: networks [allpairs], networks [diameter], networks [eweight], networks [spantree], networks [vweight].

networks[show] show(G) Zeigt eine Tabelle von Inforrnationen iiber einen Graphen Siehe auch: networks [draw], networks [edges], networks [eweight], networks [neighbors], networks [vertices], networks [vweight].

networks[shrink] shrink (emenge, G) shrink (emenge, G, vname) Identifiziert Gruppen von Ecken als eine einzelne Ecke Diese Funktion ersetzt die gegebene Menge von Ecken durch eine einfache Ecke in G und gibt den Namen dieser neuen Ecke zuriick. Der Name der eingelaufenen Ecke kann als drittes Argument spezifiziert werden. Siehe auch: networks [contract] .

networks[span] span(k, G) span (kmenge, G) Findet den Span einer Menge von Kanten Diese Funktion gibt die Menge von Kanten zuriick, die von der gegebenen Kante bzw. Menge von Kanten in G aufgespannt werden. Eine Kante wird von einer gegebenen Menge von Kanten aufgespannt, falls ihre beiden Endpunkte in der Menge der EndpUl,;.[e der Kantenmenge enthalten sind. Siehe auch: networks [fundcyc] , networks [induce], networks [rank].

223



AIle Maple-Befehle networks[spanpoly] spanpoly(G, p) Spanpolynom eines ungerichteten Graphen ¢ Diese Funktion ergibt die Wahrscheinlichkeit. daB G ein aufspannender Graph ist. unter der Voraussetzung. daB jede Kante mit WahrscheinIichkeit p operiert. ¢ Siehe auch: networks [acycpolyl. networks [chrompolyl. networks [flowpolyl. networks [rankpolyl. networks [tuttepolyl. networks[spantree] spantree(G) spantree(G, e) spantree(G, e, name) Findet einen aufspannenden Baum mit minimalem Gewicht ¢ Der ausgewiihlte Baum mit Wurzel e besitzt Kanten. die das totale Kantengewicht des Baums minimieren. Wird name angegeben. so wird diesem das Gesamtgewicht zugewiesen. Das Ergebnis wird als ein neuer Graph zuriickgegeben. ¢ Siehe auch: networks [shortpathtreel. networks[tail] tail (k, G) tail (kanten, G) tail (G) Findet die Startecke gerichteter Kanten ¢ Falls k ungerichtet ist. so wird NULL zuriickgegeben. Falls eine Liste bzw. Menge von Kanten kanten angegeben wurde. so wird eine Liste bzw. Menge von Startecken zuriickgegeben. 1st nur der Graph G gegeben, so ergibt diese Funktion eine Tabelle, die die Startecken aller Kanten enthaIt. 0 Siehe auch: networks [ends l, networks [headl. networks[tetrahedron] tetrahedron ( ) Erzeugt einen Graphen, der die Topologie eines Tetraeder beschreibt. ¢ Siehe auch: networks [cubel. networks [dodecahedronl. networks [icosahedronl, networks [octahedronl. networks [petersenl. networks[tuttepoly] tuttepoly(G, t, z) Tutte-Polynom eines ungerichteten Graphen 0 Das Tutte-Polynom ist eine Summe ilber alle maximalen WaIder H von G der Terme tia(H) zea(H). wobei ia( H) die interne Aktivitlit von H und ea(H) die externe Aktivitiit von His!. ¢ Siehe auch: networks [acycpolyl, networks [chrompolyl. networks [flowpolyl. networks [rankpolyl. networks [spanpolyl. networks[typelGRAPH] type(G, GRAPH) Testet auf den Typen GRAPH ¢ Ein Graph wird durch eine spezielle Prozedur vom Typ GRAPH dargestellt. Dieser Typencheck steht nur dann zur Verfilgung, wenn vorher das Paket networks eingeladen wurde. 0 Siehe auch: networks. networks[vdegree] vdegree(e, G) Berechnet den Eckengrad von e 0 Diese Funktion betrachtet nur ungerichtete Kanten. 0 Siehe auch: networks [indegree l. networks [maxdegree l, networks [mindegreel. networks [neighborsl, networks [outdegreel, . networks[vertices] vertices (G) Gibt die Menge der Ecken von G zuriick 0 Diese Funktion gibt die Menge der Ecken von G zuriick. 0 Siehe auch: networks [addvertexl, networks [edges l. networks[void] void(n) void (emenge) Erzeugt einen leeren Graphen ¢ Diese Funktion erzeugt einen Graphen mit n Ecken aber ohne Kanten. Die Namen der Ecken konnen in einer Liste angegeben werden. ¢ Siehe auch: networks [completel, networks [cyclel, networks [petersenl.

224

networks[spanpoly] - Normal networks[vweight] vweight(e, G) vweight(eliste, G) vweight(G) Findet die Gewichte der Ecken in einem Graphen 0 Diese Funktion gibt das zur Ecke e gehtirende Gewicht zuriick bzw. die Liste von Gewichten, die zur Eckenliste eliste gehoren. Die dritte Variante erzeugt eine Tabelle der Eckengewichte von G. 0 Siehe auch: networks [eweight 1, networks [vertices1. next Flihrt unverztiglich mit der niichsten Iteration der umgebenden do-Schleife fort 0 Diese Anweisung kann nur innerhalb einer Wiederholungsanweisung auftreten. 0 Siehe auch: break, do. nextprime nextprime(n) Berechnet die kleinste wahrscheinliche Primzahl, die groBer als n ist 0 Diese Funktion benutzt isprime, urn die nllchste wahrscheinliche Primzahl zu berechnen. 0 nextprime (100) ; ---+ 101 0 Siehe auch: isprime, i thprime, numtheory [safeprime 1, prevprime. nops nops (ausdr) Ergibt die Anzahl der Operanden im Ausdruck wird die Anzahl der Elemente zuriickgegeben. op.

0 0

Handelt es sich urn eine Liste oder Menge, so nops ( [4, 5, 61 ); ---+ 3 0 Siehe auch:

norm norm (poly, r, vars) norm (poly, infinity, vars) Norm eines Polynoms 0 Ftir ein gegebenes r 2 1 berechnet diese Funktion Hセi・ャイI@ l/r, wobei e tiber die Koeffizienten von poly in den Variablen vars llluft. 1st das zweite Argument inf ini ty, so wird das Maximum der lei zUriickgegeben. vars kann ein einfacher Variablenname oder eine Liste bzw. Menge von Variablennamen sein. 1st dies Argument nicht vorhanden, so wirdstattdessen indets(poly) benutzt. 0 norm(x'2+3,2); ---+ v10 0 Sieheauch: coeffs, indets, linalg [norm1, maxnorm, Norm.

Norm Norm (ausdr) Norm(ausdr, L, K) Starre Normfunktion 0 Wird diese Funktion zusammen mit evala benutzt, so berechnet sie die Norm einer algebraiscben Zahl oder algebraiscben Funktion. Bei der ersten Form wird die Norm tiber den rationalen Zahlen berechnet, falls ausdr eine algebraiscbe Zahl ist. 1st ausdr eine algebraische Funktion so wird die Norm tiber der kleinstmoglichen transzendentalen Erweiterung der rationalen Zahlen berechnet. Bei der zweiten Form wird die Norm tiber dem algebraischen Zahl- oder Funktionskorper K berechnet, wobei ausdr als ein Element von L( ausdr) angesehen wird. K und L sind Mengen von RootOf und L muB eine Teilmenge von K sein. 0 Siehe auch: evala, linalg [norm1, norm, RootOf. normal normal (ausdr) normal (ausdr, expanded) Normiert einen rationalen Ausdruck 0 Der Ausdruck wird in "faktorisierte Normalform" umgewandelt: eine Summe von Termen wird tiber einem gemeinsamen Nenner kombiniert und die entstehende rationale Funktion wird normiert, so daB ZlIhler und Nenner zueinander prime, faktorierte Polynome mit ganzzahligen Koeffizienten sind. Wird die Option expanded angegeben, so sind ZlIhler und Nenner entwicke1te Polynome. 0 normal (x/y - xl (x+y l ) ; 2 . ---+ y HセKケI@ 0 Slehe auch: denom, expand, factor, Normal, numer, simplify. Normal Normal (ausdr l Starre Normierungsfunktion 0 Wird diese Funktion zusammen mit mod benutzt, so berechnet sie eine Normalform ftir den Ausdruck tiber einem endlichen Korper. Zusammen mit evala wird die Normalform tiber einem Korper berechnet, der durch die RootO f -Terme in den Koeffizienten des Ausdrucks bestimmt wird. 0 Normal «x'3+l) / (x'2+x» o Siehe auch: evala, Expand, mod, normal, RootOf.

mod 2;

---+

セ@

x

225



AIle Maple-Befehle Normalizer Umgebungsvariable 0 Ihr Wert ist eine Prozedur zum Normieren von Ausdrilcken. Sie wird zu Anfang auf normal gesetzt. not not a Logischer Operator 0 Dieser Ausdruck ist true. falls a false ist und false. falls a true ist. Es ergibt sich FAIL. wenn a FAIL ergibt. 0 Siehe auch: and. evalb. or.

np Newman-Penrose-Paket 0 Die Funktionen in diesem Paket miissen erst mit wi th geladen werden. bevor man sie benutzen kann. Es stehen die folgenden Funktionen zur Verfiigung: X_V Y-D Y-X conj eqns V X D suball V-D X-D Y y_V Dieses Paket ist durch das Paket NPspinor ersetzt worden. welches aile diese Funktion enthlilt. o Siehe auch: NPspinor. NPspinor [ functionl.

NPspinor NPspinor-Paket 0 Dieses Paket ist eine Erweiterung des nun iiberfliissigen np-Pakets. Die Funktionen in diesem Paket miissen erst mit wi th geladen werden. bevor man sie benutzen kann. Dieses Paket benutzt globale Namen fUr mehrere NP-GroBen. Urn eine Liste aller benutzten globalen Namen zu erhalten. lasse man sich den Wert von 'NPspinor /globals' anzeigen. nachdem man das Paket geladen hat. 0 Siehe auch: NPspinor [ functionl. with. NPspinor[basis] basis (ausdr) basis (ausdr, indexliste) Berechnet die Menge der fundamentalen Spinoren (d. h. der Basisspinoren oder Spinmetriken). die in dem gegebenen Ausdruck vorkommen 0 Wird eine Liste von Iodizes fIlr Spinoren als zweites Argument gegeben. so werden nur die Basiselemente zu den angegebenen Indizes berechnet. NPspinor[checkvars] checkvars ( ) Prilft die Zuweisungen der Paketvariablen 0 Diese Funktion iiberprilft die globalen Variablen. die fUr die NP-Spinkoeffizienten und Kriimmungskomponenten benutzt werden. sowie die Spinoren i und o. Sollte eine dieser Variablen einen Wert besitzen. so wird eine Wammeldung ausgegeben. NPspinor[conj] conj(ausdr) Berechnet das komplex konjugierte eines Ausdrucks im Newman-PenroseiSpinor-Formaiismus gemiiB der gewohnlichen Regeln 0 Der Wert von conj (name) wird als namec ausgegeben.

NPspinor[contract] contract (ausdr) Wertet Kontraktionen zwischen Basisspinoren aus 0 Die Prozedur NPspinor[dyad] muB benutzt werden. urn andere Objekte in der Spinorenbasis darzustellen. bevor Kontraktionen ausgewertet werden konnen. 0 Siehe auch: NPspinor [dyadl. NPspinor[D] D(ausdr) Newman-Penrose-Pfaffscher Operator assoziiert mit dem Null-Tetrad-Vektor I Variable cons t erlaubt es. Namen als konstant zu kennzeichnen.

0

Die globale

NPspinor[deI] del (ausdr, index I , index2) Kovariante Differentiation mittels Spinoren 0 Diese Funktion berechnet die kovariante Ableitung (unter Benutzung des Newman-Penrose/Spinor-Formalismus) von obj ect explizit fiir Skalare. einige unausgewertete Prozeduraufrufe und Basis-I-Spinoren. Genau einer der freien Spinorindizes (d.h. Namen) muB ..gepunktet" sein (d. h. muB mit .If' enden). Die globale Variable const enthlilt die Menge der GroBen mitkovarianter Ableitung O. 0 Siehe auch: NPspinor [basis 1. NPspinor [Dl. NPspinor [dyad]. NPspinor[dyad] dyad (ausdr) Entwickelt einen Ausdruck nach Spinor-Dyaden 0 Diese Funktion entwickelt vollstandig aile Formen der Kriimrnungsspinoren (und ihrer komplex-konjugierten) beziiglich der Dyad-Spinoren 0 und i. 0 Siehe auch: NPspinor [basis]' NPspinor [contract], NPspinor [dell.

226

Normalizer - NPspinor[X] NPspinor[eqns] eqns () eqns(n. m} Initialisierung und Ausgabe von NP-Gleichungen 0 Die erste Form initialisiert die ,,grundlegenden" Gleichungen (die Newman-Penrose- Ricci- und Bianchi-Identitaten) eql bis eq2 9 und weist 29 der Variablen neqs zu oder es werden alle neqs Gleichungen ausgegeben, wenn sie vorher schon initialisiert wurden. Die zweite Form gibt eqn bis eqm aus, wenn die Gleichungen schon initialisiert wurden. Der Benutzer muB neqs neu setzen, wenn die Menge der Grundgleichungen erweitert werden solI. 0 Siehe auch: NPspinor [suballl. NPspinor[findsymm] findsymm(ausdr. indexliste. flag} findsymm(ausdr. indexliste} Schreibt symmetrische Teilausdrucke eines Objekts urn 0 Diese Funktion schreibt beliebige Sammlungen von Basisspinoren in den freien Indexnamen von indexliste urn, unter Zuhilfenahme der unausgewerteten Funktion Symm. Taucht ein drittes Argument auf, so wird stattdessen eine besser aussehende (aber deshalb auch starre) Dummy-Schreibweise fUr Symmetrisierungen benutzt. 0 Siehe auch: NPspinor [rewrite], NPspinor [symm]. NPspinor[makeeqn] makeeqn(ausdr} Wandelt einen Ausdruck in eqn!troff-Form urn 0 Das Verhalten dieser Funktion ist mit dem der Bibliotheksfunktion eqn fast identisch, auBer fiir Newman-Penrose-GroBen und soJchen TabeUen, die Spin oren darsteUen konnen. 0 Siehe auch: eqn. NPspinor[rewrite] rewrite (ausdr. neuname. altname} rewrite (ausdr. neuname. altname. indexliste} Schreibe einen Spinorenausdruck aIs Ausdruck mit symbolischen Konstanten 0 Diese Funktion schreibt eine gegebene Spinorbedingung urn und zwar so, daB symbolische Koeffzienten (neuname [11, ... ) benutzt werden; die alten Koeffizienten werden als ein Feld al tname abgespeichert. Wird als viertes Argument eine Liste von Namen angegeben, so wird der Ausdruck als Ausdruck dieser Indizes ausschlieBlich behandelt. 0 Siehe auch: NPspinor [symml . NPspinor[subaU] suball(ausdr} suball(ausdr. n. m} Substitutionsfunktion 0 Diese Funktion fUhrt Substitutionen aus der Menge der grundlegenden Newman-Penrose-Gleichungen (den Ricci- und Bianchi-Identitiiten) und ihrer Konjugierten aus. Die erste Form benutzt aile neqs Gleichungen; die zweite Form benutzt nur die Gleichungen eqn bis eqm. 0 Siehe auch: NPspinor [eqns 1. NPspinor[symm] symm(ausdr. indexliste} Macht ein Objekt beziiglich der in der gegebenen Liste enthaltenen freien Indizes symmetrisch oDie Indizes miissen entweder aIle gepunktet oder ungepunktet sein. 0 Siehe auch: NPspinor [f indsymm], NPspinor [rewri te] . NPspinor[V] V(ausdr} Newman-Penrose-Pfaffscher Operator assoziiert mit dem NuU-Tetradvektor n Variable cons t erlaubt es, Namen als konstant zu kennzeichnen.

0

Die globaIe

NPspinor[V..I)] V_D(ausdr} Entspricht der Kommutivitatsbeziehung die zur Lie-Klammer (V, D] gehort 0 Diese Funktion gibt eine Gleichung zuruck, deren Iinke Seite die Lie-Klammer und deren rechte Seite ihre bekannte Iineare Entwicklung nach den NP -Ableitungen ist. NPspinor[X] X(ausdr) Newman-Penrose-Pfaffscher Operator assoziiert mit dem NuU-Tetradvektor m Variable const erlaubt es, Namen aIs konstant zu kennnzeichnen.

0

Die globaIe

227

..

AIle Maple-Befehle NPspinor[X.D] X-D(ausdr) Entspricht der Kommutivitiltsbeziehung die zur Lie-Klammer [X, D] geMrt Diese Funktion gibt eine Gieichung zuriick, deren linke Seite die Lie-Klammer und deren rechte Seite ihre bekannte lineare Entwicklung nach den NP -Ableitungen ist. NPspioor[X_V] X-V (ausdr) Entspricht der Kommutivitlitsbeziehung die zur Lie-Klammer [X, V] geMrt Diese Funktion gibt eine Gieichung zuriick, deren linke Seite die Lie-Klammer ist und deren rechte Seite ihre bekannte lineare Entwicklung nach den NP -Ableitungen ist. NPspinor[y] Y(expr) Newman-Penrose-Pfaffscher Operator assoziiert mit dem Null-Tetradvektor m Die globale Variable cons t erlaubt es, Namen als konstant zu kennzeichnen. NPspinor[Y.D] Y-D(ausdr) Entspricht der Kommutivitiltsbeziehung die zur Lie-Klammer [Y, D] gehiirt Diese Funktion gibt eine Gleichung zuriick, deren linke Seite die Lie-Klammer und deren rechte Seite ihre bekannte lineare Entwicklung nach den NP -Ableitungen ist. NPspioor[Y _V] Y_V(ausdr) Entspricht der Kommutivitlltsbeziehung die zur Lie-Klammer [Y, V] geMrt Diese Funktion gibt eine Gleichung zuriick, deren linke Seite die Lie-Klammer und deren rechte Seite ihre bekannte lineare Entwicklung nach den NP -Ableitungen ist. NPspioor[Y ..x] y...x(ausdr) Entspricht der Kommutivitlitsbeziehung die zur Lie-Klammer [Y, X] geMrt Diese Funktion gibt eine Gleichung zuriick, deren linke Seite die Lie-Klammer und deren rechte Seite ihre bekannte lineare Entwicklung nach den NP -Ableitungen ist.

NULL Die leere Folge von Ausdriicken Nullspace Nullspace(A) Starre Nullraum-Funktion Wird diese Funktion zusammen mit mod benutzt, so berechnet sie den Nullraum der linearen Transformation, die durch die Matrix A modulo einer positiven ganzen Zahl definiert wird. Das Ergebnis ist eine Menge von Vektoren. Siehe auch: linalg [kernel]. numapprox Prozeduren zur numerischen Funktionenapproximation Die Funktionen dieses Pakets miisen erst mit wi th geladen werden, bevor man sie aufrufen kann. Siehe auch: numapprox [function], with. numapprox[chebpade] chebpade(expr, var=a .. b, [m, n]) chebpade(expr, var, [m, n]) chebpade(f, a .. b, [m, n]) Berechnet eine Tschebyscheff-Pade-Approximation des Grades (m, n), wobei m der Grad des Zlihlers und n der Grad des Nenners sein soli Das erste Argument kann ein Ausdruck in der gegebenen Variablen var oder eine Funktion sein. Dieser wird in eine Tschebyscheff-Reihe auf dem Intervall a .. b entwickelt (-1..1 ist voreingestellt). Zlihler und Nenner werden als Kombination der Tschebyscheff-Polynome T( n, x) dargestellt. Das dritte Argument kann eine einfache ganze Zahl m sein; dann wird n als null gesetzt. Siehe auch: chebyshev, convert [ratpoly], numapprox[minimax], orthopoly[T]. numapprox[chebyshev] chebyshev(ausdr, var=a .. b, €) chebyshev (ausdr , var, €) Tschebyscheff-Reihenentwicklung Siehe auch: chebyshev.

228

NPspinor[XJ)] - numapprox[pade] numapprox[confracform] confracform( f) confracform(ausdr) confracform(ausdr, var) Wandelt eine rationale Funktion oder Ausdruck in Kettenbruchform urn ¢ Die Kettenbruchform minimiert die Anzahl der Operationen, die notwendig sind, die rationale Funktion oder den rationalen Ausdruck auszuwerten. 1st das erste Argument eine Funktion, so wird auch eine Funktion zurilckgegeben. Sonst muS es sich urn einen rationalen Ausdruck handeln und ein solcher wird auch zurlickgegeben. Die Variable, bezllglich der ausdr ein rationaler Ausdruck ist, kann als zweites Argument angegeben werden. ¢ Siehe auch: convert [conf rac] ,

numapprox[hornerform], numtheory[cfrac]. numapprox[hornerform] hornerform( f) hornerform(ausdr) horner form (ausdr, var) Wandelt sowohl Ziihler als auch Nenner eines rationalen Ausdrucks in Hornerform urn ¢ Fiir ein Polynom ist dies die Darstellung, die ein Minimum an arithmetischen Operationen zur Auswertung beniitigt. 1st das erste Argument eine Funktion, so wird eine Funktion zurlickgegeben. Sonst muS es sich urn einen rationalen Ausdruck handeln und ein so1cher wird auch zurlickgegeben. In diesem Fall kann eine Variable als zweites Argument angegeben werden. ¢ Siehe auch:

convert [horner], numapprox [confracform]. numapprox[infnorm] infnorm(ausdr, var=a .. b, name) infnorm( f, a .. b, name) Berechnet die Tschebyscheff-Norm auf [a, b] ¢ Diese Funktion schlitzt den Maximalwert der Funktion bzw. des Ausdrucks iiber dem gegebenen Intervall abo Das erste Aegument kann eine Funktion oder ein Ausdruck sein. 1m zweiten Fall ist ausdr ein Ausdruck in der Variablen var. Wird ein Name als drittes Argument angegeben, so wird diesem der Wert von it is assigned the value of var zugewiesen, an dem das Maximum angenommen wird. ¢ infnorm (s in, Q.. 2); ---+ 1.0 ¢ Siehe auch: maxnorm, norm.

numapprox[laurent] laurent (ausdr, var=a, n) laurent (ausdr, var, n) Berechnet die Laurent-Reihenentwicklung bis zur Ordnung n des Ausdrucks in der Variablen var ¢ Die Entwicklung wird urn den Punkt a berechnet, wobei bei der zweiten Form a als Null vorausgesetzt ist. Das Ergebnis muS einen endlichen Hauptteil besitzen. ¢ laurent (1/ (x*exp (x) ) ,x, 3); ---+ x-I - 1 + セク@ +0 ¢ Siehe auch:

- ix2

(x3)

series, taylor, type/laurent. numapprox[minimax] minimax (ausdr, var=a .. b, [m, n], weight, name) minimax(f, a .. b, [m, n], gewicht, name) Berechnet die beste rationale Minmax-Approximation des Grades (m, n) zur gegebenen reellen Funktion oder Ausdruck iiber dem Intervall [a, b] 0 Diese Funktion benutzt den Remes-Algorithmus. mist der Grad des Ziihlers; n der des Nenners. Das dritte Argument kann einfach als m angegeben werden, wenn man nach einer polynomialen Approximation sucht. Das erste Argument kann entweder ein Ausdruck in der Variablen var oder eine Funktion sein. Das optionale vierte Argument gewicht ist eine Prozedur bzw. ein Ausdruck, der die positive Gewichtsfunktion benennt (voreingestellt ist I). Wird ein Name als filnftes Argument gegeben, so wird diesem der maximale Fehler der Approximation iiber [a, b] beziiglich der Gewichtsfunktion zugewiesen. ¢ minimax (sinh (x) ,x=Q .. 1,2); ---+ .00596984887 + (.8958620986 + .2673993974 x) x 0 Siehe auch: numapprox [remez].

numapprox[pade] pade(ausdr, var=a, [m, n]) pade(ausdr, var, [m, n]) Berechnet eine Pade-Approximation yom Grad (m,n) zum gegebenen Ausdruck bezllglich der Variablen var ¢ mist der Grad des Ziihlers; n der des Nenners. Der Ausdruck wird in eine a (vaT 0 bei der zweiten Form) bis zur Ordnung m + n + 1 Laurentreihe urn vaT entwickelt, dann wird die rationale Pade-Approximation berechnet. Das dritte Argument kann einfach als m gegeben werden, wenn man eine polynomiale Approximation berechnen will. ¢

=

=

229

AIle Maple-Befehle pade(sinh(x), x=O,

[3,3]);

MKセ@

セBLSK@

I-to'"

¢Sieheauch:convert[ratpolyl,

numapprox [chebpade], numapprox [laurent]. numapprox[remez] remez(gewicht, f, a, b, m, n, feld, name) Remes-Algorithm zur rationaIen Minmax-Approximation ¢ Diese Funktion wird gewtlhnlich nicht vom Benutzer direkt aufgerufen. Sie berechnet die beste rationale Minmax-Approximation vom Grad (m, n) zu einer gegebenen reellen Funktion f iiber dem IntervaII [a, b] beziiglich der positiven Gewichtsfunktion gewicht. feld ist ein Feld, welches von l..m + n + 2 indiziert ist und eine Startwertabschlitzung filr die kritische Menge (die Extremwerte der Fehlerkurve) enthlilt. name wird der maximale Fehler der Approximation iiber [a, b] beziiglich der Gewichtsfunktion zugewiesen. ¢ Siehe auch: numapprox [minimax]. numapprox[taylor] taylor (ausdr, var=a, n) taylor (ausdr, var, n) Taylor-Reihenentwicklung ¢ Siehe auch: taylor. numboccur numboccur(ausdr, teilausdr) Zlihlt, wie oft der Teilausdruck im Ausdruck vorkommt ¢ Diese Funktion ist neu in Version 3. ¢ numboccur((s+t)A2*sin(s+t) + In(s+t+l), s+t); --+2 ¢ Siehe auch: has. numer numer(ausdr) Nenner eines Ausdrucks ¢ 1st ausdr nicht in Normalform, so wird er erst in diese Form umgeschrieben. ¢ numer (x+l/x); --+ x 2 + 1 Siehe auch: denom, normal.

numtheory Paket zur Zahlentheorie ¢ Siehe auch: numtheory [ function], with. numtheory[B) B(n) B(n, x) Synonym filr bernoulli und numtheory[bernoullil Berechnet Bemoullizahlen nnd -polynome. Siehe anch: bernoulli. numtheory[bemoulli] bernoulli(n) bernoulli(n, x) Synonym fiir bernoulli ¢ Berechnet Bemoullizahlen und -polynome. Siehe auch: bernoulli. numtheory[bigomega] bigomega(n) Anzahl der Primteiler von n mit Vielfachheit gezlihlt ¢ Diese Funktion ist neu in Version 3. ¢ bigomega(50); --+3 Sieheauch:numtheory[divisorsl, numtheory[sigmal, numtheory [tau] . numtheory[cfrac] cfrac(confrac) cfrac(z, n, namec' named, options) cfrac(rat, n, var, form, option) cfrac(ausdr, n, var, diag, form, option) Kettenbruchentwicklung von Zahlen, rationalen Funktionen, Reihen sowie die Entwicklung anderer a1gebraischer Objekte Nur das erste Argument ist unbedingt notwendig. n kontrolliert die Anzahl der berechneten Teilquotienten. Der voreingestellte Wert ist 10. Die Option quotients bewirkt, daB die Funktion eine Liste von Teilquotienten zuriickgibt anstatt sie in Bruchform auszugeben. Das erste Schema berechnet die letzte Konvergente des gegebenen Kettenbruchs confrac. Beim zweiten Schema kann z eine beliebige ZahI sein: rational, reel! oder komplex. namec ist ein Name, dem eine Liste von Konvergenten zugewiesen wird, named wird eine Liste von Nennem von Konvergenten zugewiesen. Die Option centered im numerischen Fall bewirkt, daB die zentrierte Form des Kettenbruchs berechnet wird (wobei die Nenner ±1 sein ktlnnen). Das dritte Schema bringt rationale Funktionen in Kettenbruchform. rat ist eine rationale Funktion in der Variablen var

230

numapprox[remez] - numtheory[fermat] und form kann entweder simple (Voreinstellung) oder regular sein. Das vierte Schema ist fUr eine Reihe oder andere aIgebraische Ausdriicke in der gegebenen Variablen var. diag kann entweder superdiagonal (Voreinstellung) oder subdiagonal sein. form kann entweder simple, semisimple (Voreinstellung) oder simregular sein. 1 + +0 + Siehe auch: type/ series.

x+ !x 2 ix3

0

(x4)

0

prem prem(polYl, polY2, var) prem(polYl, polY2, var, narnel, name2) Pseudorest von Polynomen 0 Diese Funktion erggibt den Pseudorest r des gegebenen multivariaten Polynoms, so daB mpolYl polY2Q + r gilt, wobei der Grad von r in var kleiner als der Grad von polY2 in var ist. Der Multiplikator mist der ftihrende Koeffizient von polY2' angehoben zur Potenz (deg(poIYl) - deg(poIY2) + 1), wobei deg(poly) der Grad von poly in var ist. 1st namel vorhanden, so wird diesem m zugewiesen. 1st name2 vorhanden, so wird diesem der Pseudoquotient q zugewiesen. 0 prem (x' 3+y' 3, x*y-2, x); ---> y6 + 8 0 Siehe auch: Prem, rem, sprem.

=

Prem Prem(polYl, polY2, var) Prem(polYl, polY2, var, name I , name2) Starrer Pseudorest von Polynomen 0 Wird diese Funktion zusammen mit evala, evalgf, mod oder modpl benutzt, so berechnet sie den Pseudorest von polYl geteilt durch polY2 tiber dem gegebenen Definitionsbereich der Koeffizienten. 0 Prem (x'3+y'3, x*y-2, x) mod 3; ---> y6 + 2 0 Siehe auch: eva la, evalgf, mod, prem, RootOf, Rem, Sprem.

prevprime prevprime(n) Berechnet die griiBte wahrscheinliche Primzahl, die kleiner als n ist 0 Diese Funktion benutzt isprime, urn die vorhergehende wahrscheinliche Primzahl zu berechnen. 0 prevprime(lOO); --->97 0 Sieheauch: isprime, nextprime.

Primfield Primfield(L, K) Primfield(L) Primitives Element einer algebraischen Erweiterung 0 Wird diese Funktion zusammen mit evala benutzt, so berechnet sie ein Element a von L mit L K(a). 1st K nicht gegeben, so wird die kleinstmiigliche transzendente Erweiterung der rationalen Zahlen ausgewiihlt. Zurtickgegeben wird eine Liste von Gleichungen, die a mit Hilfe der Erzeugenden von L, sowie umgekehrt die Erzeugenden von L mit Hilfe von a ausdriicken. K und L sollten Mengen von RootOf sein. 0 Siehe auch: evala, RootOf.

=

Primitive Primitive (poly) Primitiver Polynomtest 0 Wird diese Funktion zusammen mit mod benutzt, so stellt sie fest, ob das Polynom primitiv modulo einer Primzahl ist. Sie ergibt entweder true oder false. 0 Primi ti ve (x' 2+x+ 1) mod 2; ---> true 0 Siehe auch: Irreduc, Powmod.

primpart primpart(poly, vars} primpart(poly, vars, name} Primitiver Teil eines multivariaten Polynoms 0 Der primitive Teil ist poly / content (poly , vars). vars kann ein einfacher Variablenname oder eine Liste bzw. Menge von Variablennamen sein. 1st name vorhanden, so wird diesem der Inhalt zugewiesen. 0 primpart (2 *x+4 *x*y, y); ---> 1 + 2 y 0 Siehe auch: content, icontent.

Primpart Primpart(poly, vars} Primpart(poly, vars, name} Starre Funktion zum primitiven Teil 0 Wird diese Funktion zusammen mit evala, evalgf oder mod benutzt, so berechnet sie den primitiven Teil des Polynoms in der Variablen oder in der Liste von Variablen vars tiber dem Definitionsbereieh der Koeffizienten. 1st name vorhanden, so wird diesem der Inhalt zugewiesen. 0 Siehe auch: Content, evala, evalgf, mod.

254

prem - procmake print print (ausdrl, ausdr2' ... ) Druckt Ausdriicke aus ¢ Die ausgedruckten Ausdriicke werden durch ein Leerzeichen und ein Komma abgetrennt. Die Schnittstellenvariable prettyprint bestimmt, in welchem Format die Ausdriicke gedruckt werden. Diese Funktion ergibt NULL. ¢ Siehe auch: interface, lprint, printf. printf printf(formatstring, ausdrl' ausdr2' ... ) Formatierte Ausgabe von Ausdriicken ¢ Diese Funktion verhlilt sich wie die gewohnliche C-Bibliotheksfunktion gleichen Namens. Sie benutzt im Prinzip dieselben Formatspezifikationen im ,,formatstring" wie die Programmiersprache C plus der Spezifikation %a fUr algebraische Ausdriicke. ¢ printf('The %s %a %c %i', 'answer is', x+y, '&',37); -----> The answer is x+y & 37 ¢ Siehe auch: lprint, print, sscanf.

printlevel Umgebungsvariable, die kontolliert, bis zu welcher Schachtelungstiefe Ergbnisse angezeigt werden sollen ¢ Ergebnisse von Anweisungen, die sich auf einer Ebene befinden, die hOher oder gleich dem Wert der Variablen ist, werden auf dem Schirm ausgegeben. Die hochste interaktive Ebene ist O. Der Eintritt in eine i f-Anweisung oder in eine do-Schleife erhoht die Tiefe urn I, der Eintritt in eine Prozedur urn 5. printlevel hat zu Anfang den Wert 1. Zur Fehlersuche sollte man den Wert erhohen. 0 Siehe auch: infolevel, trace, mint. priqueue initialize (name) insert (datensatz, pq) extract (pq) Funktion zur Prioritatsqueue 0 initialize erzeugt eine neue Queue (Warteschlange) und weist sie dem gegebenen Namen zu. insert fUgt den Datensatz addiert zur Prioritatsqueue pq hinzu. Das Anordnungskriterium ist satz [1] . extract entfemt den maximalen Datensatz aus der Queue pq und gibt diesen zuriick. AuBerdem ist pq [ 0] die Anzahl der Datensatze in der Queue pq. Man muB erst readlib (priqueue) eingeben, bevor man diese Befehle benutzen kann. ProbSplit ProbSplit(poly, n, var) mod p ProbSplit(poly, n, var, K) mod p Wahrscheinlichkeitstheoretisches Aufsplitten von Faktoren verschiedenen Grades 0 Wird diese Funktion zusammen mit mod benutzt, so wird ein monisches, quadratfreies univariates Polynom, welches nur Faktoren yom Grade n tiber einem endlichen Korper enthlilt, in Faktoren zerlegt. Das optionale Argument K gibt eine Korpererweiterung an, tiber der die Faktorzerlegung ausgefiihrt wird. Der Algorithmus verwendet eine wahrscheinlichkeitstheoretische Methode yon Cantor und Zassenhaus. Es wird eine Menge unzerlegbarer Faktoren zUriickgegeben. 0 Diese Funktion ist neu inVersion 3. 0 ProbSplit(x'4+1, 2, x) mod 3; ----->{x 2 +2x+2,x 2 +x+2} o Siehe auch: Berlekamp, DistDeg, Factors, Sqrfree. proc proc(args) local names; options options; anweisungen end Definition einer Prozedur 0 args ist die Foige von null oder mehr Parametem. Die Deklarationen local und options sind optional. 0 Siehe auch: args, ERROR, local, nargs, options, procname, RETURN. procbody procbody(prozedur) Erzeugt eine ,,neutrale Form" einer Prozedur ¢ Diese Routine wird benutzt, wenn man Routinen schreibt, die Prozeduren manipulieren. Man sollte die neutrale Form niemals auswerten, da diese dadurch mit ziemlicher Sicherheit zersort wird. 0 Man muB erst readlib (procbody) eingeben, bevor man diesen Befehl benutzen kann. 0 procbody(x->x'2); -----> &proc ([ x], [], [operator, arrow], &argS[1]2) 0 Siehe auch: procmake.

procmake procmake(neutralform) Erzeugt eine ausfiihrbare Prozedur aus ihrer neutralen Form 0 Man muB erst readlib (procmake) eingeben, bevor man diesen Befehl benutzen kann. ¢ procmake (procbody (x->x'2) ); -----> x -> x 2 ¢ Siehe auch: procbody.

255

Alle Maple-Befehle procname Der Name, mit dem die Prozedur aufgerufen wurde Innerhalb einer Prozedur ist procname der Name, mit dem die Prozedur aufgerufen wurde. Siehe auch: args, nargs, proc. product product (ausdr, var) product (ausdr, var=m .. n); product (ausdr, var=a) Bestimmte und unbestimmte Produkte Die erste Form berechnet das unbestimmte Produkt des Ausdrucks bezllglich der Variablen var. Die zweite Form berechnet das bestimmte Produkt des Ausdrucks lIber dem gegebenen Bereich. Die dritte Form berechnet das bestimmte Produkt tiber den Wurzeln des Polynoms, das durch den RootOf-Ausdruck a gegeben ist. product (k, k); r(k) product (k, k=l .. 7); - 5040 product (k+l, k=RootOf(x 2-x+l»; - 3 Sieheauch:convert/'*', Product, RootOf, sum. A

Product Product (ausdr, var) Product (ausdr, var=m .. n) Product (ausdr, var=a) Starre Form des Produkts Siehe auch: product, RootOf, Sum. profile profile(f), f2' ... ) Bereitet das Profilieren von Prozeduren vor Diese Funktion benennt die Prozeduren, die profiliert werden sollen. Nachdem profile ausgeftihrt wurde, fllhrt man die gewllnschten Berechnungen aus und benutzt dann showprofile. Man muB erst readlib (profile) eingeben, bevor man diesen Befehl benutzen kann. Siehe auch: showprofile, showtime, time, unprofile.

projgeom Projektive Geometrie Die Funktionen dieses Pakets mllssen erst mit wi th geladen werden, bevor man sie benutzen kann. Siehe auch: proj geom [function], geometry, geom3d, wi tho projgeom[collinear] collinear (pktl, pkt2, pkt3) Stellt fest, ob die drei gegebenen Punkte kollinear sind Diese Funktion ergibt true, false oder eine Bedingung. Siehe auch: projgeom[concur]. projgeom[concur] concur (geradel, gerade2' gerade3) Stellt fest, ob die drei gegebenen Geraden sich in einem Punkt schneiden Diese Funktion ergibt true,false oder eine Bedingung. Siehe auch: projgeom[collinear]. projgeom[conic] conic (name, [a, b, c, d, e, f]) Definition eines Kegelschnittes name ist der Name des Kegelschnitts. Die Elemente der Liste sind die Koeffizienten der homogenen Gleichung, die den Kegelschnitt definiert: a x 2 + b y2 + cz 2 + dy z + ex z + f xy Siehe auch: projgeom[line]' projgeom[point]. projgeom[conjugate] conjugate (pktl' pkt2, kegelschnitt) Stellt fest, ob die beiden gegebenen Punkte beztiglich des gegebenen Kegelschnitts konjugiert sind Diese Funktion ergibt true,false oder eine Bedingung. projgeom[ctangent] ctangent(pkt, kegelschnitt, name I , name2) Berechnet ausgehend von einem beliebigen Punkt in der komplexen Ebene die zum Kegelschnitt tangentialen Geraden Es werden eine bzw. zwei tangentiale Geraden berechnet und namel und name2 genannt. Siehe auch: projgeom[ptangent]' projgeom[rtangent], projgeom[tangentte].

256

procname - projgeom[midpoint] projgeom[fpconic] fpconic(name, pktl, pkt2, pkt3, pkt4, pkts) Berechnet den durch die fiinf Punkte laufenden Kegelschnitt name ist der Name des Kegelschnitts. Man benutze name [coords 1 fiir die Koeffizienten der den Kegelschnitt definierenden Gleichung. projgeom[hannonic] harmonic (pktl, pkt2, pkt3, name) Findet einen Punkt der zu einem Punkt beziiglich zweier anderer Punkte harmonisch konjugiert ist name ist der Name. der dem harmonisch konjugierten von pktl beziiglich pkt2 und pkt3 zugewiesen wird. Existiert kein solcher Punkt. so wird NULL zuriickgegeben. Siehe auch: proj geom [tharmonic l. geometry [harmonic l. projgeom[inter] inter (geradel, gerade2, name) Berechnet den Schnitt zweier gegebener Geraden name ist der Name des berechneten Schnittpunkts. Siehe auch: projgeom[lccutc], projgeom[lccutr], proj geom [lccutr2p l. geom3d [inter l. geometry [inter l. student [intersectionl. projgeom[join] join(pktl, pkt2, name) Berechnet die Gerade, die die beiden gegebenen Punkte verbindet name ist der Name der verbindenden Geraden. Siehe auch: proj geom [lccutr2p 1. projgeom[lccutc] lccutc(kegelschnitt, gerade, name I , name2) Berechnet den Schnitt eines Kegelschnitts mit einer Geraden in der komplexen Ebene name I und name2 sind die Namen der Schnittpunkte. Siehe auch: projgeom [lccutc2pl, projgeom[lccutrl. projgeom[lccutr] lccutr(kegelschnitt, gerade, name I , name2) Berechnet den Schnitt eines Kegelschnitts mit einer Geraden in der reellen erweiterten Ebene namel und name2 sind die Namen dec Schnittpunkte. Siehe auch: projgeom [lccutr2pl, projgeom [lccutcl. projgeom[lccutr2p] lccutr2p(conic, ptl, pt2, name I , name2) Berechnet den Schnitt des gegebenen Kegelschnitts mit der Geraden, die die beiden gegebenen Punkte verbindet; die Berechnung findet in der reellen erweiterten Ebene statt name 1 und name2 sind die Namen der Schnittpunkte. Siehe auch: projgeom [j oinl. projgeom [lccutr I. projgeom[ lccutcl. projgeom[line] line (name, [a, b, ell Definition einer Geraden name ist der Name der neu definierten Gecaden. Die Elemente der Liste sind die Koeffizienten der Gleichung, die die Gerade definiert: a x + b y + c z Siehe auch: projgeom [pointl, projgeom [conicl. projgeom[linemeet] linemeet(geradel, gerade2, r, name) Berechnet eine Gerade, die die beiden gegebenen Geraden in einem Punkt schneidet name ist der Name der neuen Geraden. deren Koordinaten geradel [coords 1+r gerade2 [coords 1 sind. Siehe auch: projgeom [onsegment l. projgeom[midpoint] midpoint(pktl, pkt2, name) Berechnet den Mitelpunkt der die beiden gegebenen Punkte verbindenden Geraden Der Mittelpunkt ist der Punkt, der zum Schnitt der unendlichen Geraden mit der Geraden, die pktl und pkt2 verbindet, harmonisch ist. name ist der Name des Mittelpunktes. Siehe auch: geom3d[midpointl, geometry [midpointl, student [midpointl.

257

..

Alle Maple-Befehle projgeom[ onsegment] onsegment(pktl, pkt2, r, name) Berechnet einen Punkt. der zu den gegebenen zwei Punkten kollinear ist und diese beiden Punkte im Verhiiltnis r teilt name ist der Name des berechneten Punktes. welcher pkt} und pkt2 im Verhiiltnis rteilt. Siehe auch: projgeom [linemeetl. geom3d [onsegmentl. geometry[onsegmentl. projgeom[point] point (name, [a, b, cl) Definition eines Punktes in der projektiven Ebene name ist der Name des Punktes mit homogenen Koordinaten a. b und c. Siehe auch: projgeom[ linel. projgeom[conic l. projgeom[polarp ] polarp(pkt, kegelschnitt, name) Bestimmt die Polargerade des gegebenen Punktes beziiglich des gegebenen Kegelschnitts name ist der Name der Polargeraden. Siehe auch: projgeom [polelinel. projgeom[poleline] poleline(lgerade, kegelschnitt, name) Bestimmt den Pol der gegebenen Geraden beziiglich des gegebenen Kegelschnitts name ist der Name des Polpunktes. Siehe auch: proj geom [polarp l. projgeom[ptangent] ptangent(pkt, kegelschnitt, name) Berechnet die Tangentialgerade des gegebenen Kegelschnitts an einem gegebenen Punkt des Kegelschnitts name ist der Name der Tangentialgeraden. Der Punkt muB auf dem Kegelschnitt liegen. Siehe auch: projgeom[ctangentl. projgeom[rtangent]. projgeom[tangentte]. projgeom[rtangent] rtangent(pkt, kegelschnitt, name}, name2) Berechnet die Tangentialgeraden des gegebenen Kegelschnitts am gegebenen Punkt in der reellen erweiterten Ebene namel und namq sind die Namen der Tangentialgeraden. Es konnen keine. eine oder zwei Tangentialgeraden vorhanden sein. Siehe auch: projgeom[ctangent]. projgeom[ptangent]. projgeom[tangentte]. projgeom[tangentte] tangentte(gerade, kegelschnitt) Stellt fest. ob die gegebene Gerade zum gegebenen Kegelschnitt tangential ist Diese Funktion ergibt true. false oder eine Bedingung. Siehe auch: projgeom[ctangentl. projgeom[ptangentl. projgeom[rtangentl. projgeom[thannonic] tharmonic(pkt}, pkt2, pkt3' pkt4) Stellt fest. ob das erste Punktepaar zum zweiten Punktepaar harmonisch konjugiert ist Diese Funktion ergibt entweder true,false oder eine Bedingung. Die gegebenen Punkte miissen kollinear sein. Siehe auch: proj geom [harmonic l. proot proot(poly, n) Berechnet die nte Wurzel eines Polynoms 1st das Polynom keine perfekte nte Potenz. so wird der Name ..NOROOT zuriickgegeben. Man muB erst readlib (proot) eingeben. bevor man diesen Befehl benutzen kann. proot(x'2+2*x*y+y'2,2); ---+ x + y Siehe auch: psqrt. protect protect (name!, name2, ... ) Verhindert die Modifikation von Namen Die meisten Systemnamen sind von sich aus schon geschiitzt. Diese Funktion ist neu in Version 3. Siehe auch: type/protected, unprotect.

258

projgeom[onsegment] - randpoly Psi Psi(z) Psi (n, z) Die Digamma- und Polygamma-Funktionen Die erste Form berechnet die Digamma-Funktion an der Stelle z. Diese Funktion ist die logarithmische Ableitung der Gammafunktion. Die zweite Form berechnet die nte Polygammafunktion, welche die nte Ableitung der Digammafunktion ist. Psi (1); - > -"'( Siehe auch: GAMMA, lnGAMMA.

psqrt psqrt(poly) Quadratwurzel eines Polynoms 1st das Polynom kein perfektes Quadrat, so wird der Name ..NOSQRT zuriickgegeben. Man muB erst readlib (psqrt) eingeben, bevor man diesen Befehl benutzen kann. psqrt (x'2+2 *x*y+y'2); - > x + y Siehe auch: proot.

quit Verlassen einer Maple-Sitzung Siehe auch: done, stop. quo quo (polYl , polY2, var) quo (polYl, polY2' var, name) Berechnet den Quotienten von polyIipolY2 Die ersten beiden Argumente sind Polynome in der Variablen var. Diese Funktion ergibt den Quotienten von polyIipolY2' 1st name vorhanden, sowirddiesemderRestzugewiesen. quo(x'4+x+l, x'2+1, x); ->x2-1 Siehe auch: divide, iquo, Quo, rem.

Quo Quo (polYl, polY2, var) Quo(polYl, polY2, var, name) Starrer Polynomquotient Wird diese Funktion zusammen mit evala, evalgf, mod oder modpl benutzt, so ergibt sie den Quotienten von polyIipolY2 Uber dem gegebenen Definitionsbereich der Koeffizienten. 1st name vorhanden, so wird diesem der Rest zugewiesen. Quo(x'4+x+l, x'2+l, x) mod 2; ->x2+1 Sieheauch:Divide, quo, Rem.

radnormal radnormal(ausdr) Vereinfacht verschachtelte Radikale Zur Zeit sind nur algebraische Zahlen (nieht aber algebraische Funktionen) unterstUtzt. Man muB erst readl ib (radnormal) eingeben, bevor man diesen Befehl benutzen kann. radnormal (sqrt (4 * I * sqrt (5) -1) ); - > 2 + v'-5

radsimp radsimp(ausdr) radsimp(ausdr, name) Vereinfacht Radikale in Ausdriicken Diese Funktion ergibt eine Normalform fUr Ausdriicke, in denen unverschachtelte Radikale rationaler Funktionen vorkommen. Sind die Radikale verschachteltet, so wird dieser Algorithmus rekursiv angewandt. 1st ein Name angegeben, so wird diesem der vereinfachte Ausdruck zugewiesen, wobei der Nenner rational gemacht wurde. radsimp ( (a '3+3*a'2+3 *a+l) '( 1/3) ); -> a + 1 Siehe auch: simplify.

rand rand() rand(m .. n) Zufallszahlengenerator Ohne Argument ergibt diese Funktion eine 12-stellige nichtnegative ganze ZufallszahL 1st ein Bereich von ganzen Zahlen gegeben, so wird eine Prozedur zuriickgegeben, die ganze Zufallszahlen im Bereich von m und n erzeugt. Wiihrend einer jeden Sitzung wird dieselbe Foige "zufaIliger' ganzer Zahlen erzeugt, solange man den Wert der globalen Variablen _seed nicht neu setzt. flip : = rand (0 .. 1): flip (); - > I Siehe auch: linalg [randmatrixl, randpoly, _seed.

randpoly randpoly(vars, options) Erzeugt ein Zufallspolynom Diese Funktion erzeugt ein Zufallspolynom in der Variabien vars; einer einfachen Variablen oder einer Liste bzw. Menge von Variablen. Die folgenden Optionen werden erkannt. Voreingestellte Werte sind in Klammem gegeben.

259

iii

AIle Maple-Befehle coeffs Prozedur zum Erzeugen der Koeffizienten (rand( -99 .. 99» degree totaler Grad eines dichten Polynoms (5) dense Erzeugung eines dichten Polynoms expons Prozedur zur Erzeugung der Exponenten (rand(6» terms Anzahl der Terme fUr ein dUnn besetztes Polynom (6) o randpoly(x, degree=23, terms=3); - - t 97 x14 + 50 x 12 rand, Randpoly.

+ 79x 9

0

Siehe auch:

Randpoly Randpoly(n, var) Randpoly(n, var, K) Randpoly(n) Starres Zufallspolynom 0 Wird diese Funktion zusammen mit mod benutzt, so ergibt sie ein Polynom mit totalem Grad n in der Variablen var, dessen Koeffizienten zufaIlig aus den ganzen Zahlen modulo einer Primzahl p ausgewahlt werden. Wird ein einfaches RootOf K angegeben, so werden die Koeffizienten aus der entsprechenden Erweiterung des Primktirpers ausgewahlt. Die dritte Form wird zusammen mit modp1 benutzt. 0 Randpoly (4, x) mod 2; - - t x4 + x 3 + x 2 0 modp1 (Randpoly (3) ,7); - - t 1000500030002 0 Siehe auch: Irreduc, randpoly, Randprime, RootOf. Randprime Randprime(n, var) Randprime(n, var, K) Randprime(n) Starres Zufallsmonom 0 Wird diese Funktion zusammen mit mod oder modp1 benutzt, so ergibt sie ein unzerlegbares Monom vom Grad n in der Variablen var Uber den ganzen Zahlen modulo einer Primzahl p. Wird ein einfaches RootOf K angegeben, so werden die Koeffizienten aus der entsprechenden algebraischen Erweiterung des Primktirpers ausgewahlt. Die dritte Form wird zusammen mit modpl benutzt. 0 Randprime (4, x) mod 2; - - t x4 + x + 1 0 modp1 (Randprime (3) ,7); - - t 1000200020003 0 Siehe auch: Randpoly, RootOf. rationalize rationalize (ausdr) rationalize(liste) rationalize (menge) Macht Ausdriicke rational 0 Ein rational gemachter Ausdruck hat keine Radikale mehr im Nenner. Das erste Argument kann ein einfacher Ausdruck oder eine Liste bzw. Menge von Ausdriicken sein. 0 Diese Funktion ist neu in Version 3. 0 Man muS erst readlib(rationalize) eingeben, bevor man diesen Befehl benutzen kann. 0 rationalize (1/ (x+2 (1/3) ) ) ; "2_,, 2 1 / 3 +2 2 / 3 0 Siehe auch: normal. 3 A

------7

x +2

ratrecon ratrecon(polYl, polY2, var, N, D, nameN, nameD) Rekonstruiert eine rationale Funktion aus ihrem Abbild poly! mod polY2 0 Diese Funktion berechnet Polynome p und q in var mit deg p ::; N und deg q ::; D, so daB gilt p / q == poly! mod polY2. Die Ltisung ist eindeutig bis auf Multiplikation mit einer Konstanten, solange N + D 2 deg polY2 gilt. Diese Funktion ergibt true, falls eine Ltisung gefunden wird und weist den Zahler der Variablen name N bzw. den Nenner der Variablen name D zu; anderufalls ergibt sichfalse. 0 Man muS erst readlib (ratrecon) eingeben, bevor man diesen Befehl benutzen kann. 0 ratrecon (x 2-2, x 3+5, x, 1, 1, 'num' , 'den' ) ,num/den; true, - 5+,,2" 0 Siehe auch: convert/ratpoly, iratrecon, Ratrecon. A

A

Ratrecon Ratrecon(polYl, polY2, var, N, D, nameN, nameD) Starre Rekonstruktion rationaler Funktionen 0 Wird diese Funktion zusammen mit mod benutzt, so rekonstruiert sie eine rationale Funktion aus ihrem Bild poly! mod polY2 Uber einem gegebenen Definitionsbereich der Koeffizienten. Sie ergibt true, falls eine Ltisung gefunden wird und weist den Zahler der Variablen nameN bzw. den Nenner der Variablen nameD zu; anderufalls ergibt sichfalse. 0 Ratrecon (x 2-2, x 3+5, x, 1,1, 'num' , 'den') mod 2, num/den; - - t true,; 0 Siehe auch: ratrecon. A

A

Re Re(z) Isoliert den Realteil des Ausdrucks 0 Man benutze assume oder evalc, falls unbekannte Variablen fUr reelle Werte stehen sollen. Beinhaltet ausdr eine Funktion f, so versucht Re die

260

Randpoly - recipoly Prozedur 'Rei f' auszufiihren. Re (exp (2 *1) ); evalc, 1m.

----->

cos(2) Siehe auch: assume,

read read dateiname Liest den Inhalt der gegebenen Datei in die Sitzung ein Von einem Dateinamen, der mit . m endet, wird angenommen, daB es sich urn eine Datei im internen Maple-Format handelt. Sonst sollte es sich urn eine gewohnliche Textdatei handeln. Der Dateiname sollte in schrage Hochkommata eingeschlossen sein. Siehe auch: convert/hostfile, readdata, readlib, reads tat, save. readdata readdata(dateiname) readdata(dateiname, typ) readdata(dateiname, typ, n) Liest Datenspalten aus der Datei Diese Funktion liest n Spalten numerischer Daten aus der Datei oder eine Spalte, falls n nicht vorhanden ist. Der Dateiname sollte in schrage Hochkommata eingeschlossen sein. typ identifiziert den Typ der einzulesenden Daten: es kann sich urn in teger oder float (voreingestellt) handeln. Zuriickgegeben wird eine Liste von Listen, welche die Daten enthaIt. Man muB erst readl ib (readda ta) eingeben, bevor man diesen Befehl benutzen kann. Siehe auch: sscanf, readline. readlib readlib( f) readlib( f, dateil, datei2, ... ) Liest eine Bibliotheksdatei, urn einen spezifizierten Namen zu definieren Die durch die globale Variable libname spezifizierten Bibliotheken werden in Folge nach einer Datei mit Namen f . m durchsucht, welche die Definition der Prozedur f enthaIt. Siehe auch: 1 ibname, read, with. readline readline(dateiname) readline(terminal) readline( ) Liest eine Zeichenkette entweder aus einer Datei oder yom Bildschirm Diese Funktion liest die nachste Zeile aus einer angegebenen Datei oder yom Bildschirm. Eine Datei wird automatisch geOffnet, wenn die erste Zeile herausgelesen werden soli. Ohne Argumente liest diese Funktion die nachste Zeile yom Eingabestrom. Eine Zeichenkette wird zuriickgegeben. Siehe auch: parse, readdata, reads tat, sscanf. readstat reads tat (zeichenkette) Liest eine Anweisung aus dem Eingabestrom und gibt das Ergebnis dieser Anweisung zuriick zeichenkette wird als Prompt ausgedruckt, bevor sie als Anweisung gelesen wird. Die Anweisung muB mit einem Semikolon oder Doppelpunkt enden. Siehe auch: read, readl ine. realroot realroot(poly) realroot(poly, ziellaenge) Findet Intervalle, die die reellen Nullstellen eines Polynoms enthalten Diese Funktion ergibt eine Liste solcher isolierender Intervalle, mit rationalen Grenzen fUr aile reellen Nullstellen des univariaten Polynoms poly. Wird ein zweites Argument angegeben, so ist die Lange des Intervalls hOchstens ziellaenge. Man muB erst readlib(realroot) eingeben, bevor man diesen {セSL@ Befehl benutzen kann. realroot (x 3-2 *x, .1); -----> [[0,0], Siehe auch: fsolve, roots, Roots, solve, sturm, sturmseq.

[It, N] ,

A

-il]]

recipoly recipoly(poly, var) recipoly(poly, var, name) Stellt fest, ob ein Polynom selbst-reziprok ist poly ist ein Polynom in der Variablen var. Diese Funktion ergibt entweder true oder false. 1st der Grad d des Polynoms poly gerade und ergibt sich true, so wird der Variablen name falls vorhanden, das Polynom p zugewiesen, fUr das var d / 2 p(var + 1/var) = poly gilt. 1st d ungerade und ergibt sich true, so wird name poly/( var + 1) zugewiesen. Man muB erst readlib (recipoly) eingeben, bevor man diesen Befehl benutzen kann. recipoly(x 4+1,x, 'p') ,p; -----> true, x 2 - 2 A

261

AIle Maple-Befehle related related(stichwort) Zeigt Stichworte, die zu einem gegebenen Stichwort in Verbindung steben 0 Die Infonnation wird aus dem On-Line-Hilfstext gewonnen. 0 Diese Funktion ist neu in Version 3. 0 related (isprime) ; ---+ SEE ALSO: nextprime, prevprime, ithprime 0 Siehe auch: example, help, info, usage. rem rem (polYI, polY2, var) rem (polYI, polY2, var, name) Beerchnet den Rest von polyIipolY2 0 Die ersten beiden Argumente sind Polynome in der Variablen var. 1st name vorhanden, so wird diesem der Quotient zugewiesen. 0 rem (x A4+x+ 1, xA2+1, x); ---+ x + 2 0 Siehe auch: divide, irem, prem, quo, Rem, sprem. Rem Rem (polYI, polY2, var) Rem (polYI, polY2, var, name) Starre Restfunktion fUr Polynome 0 Wird diese Funktion zusammen mit evala, evalgf, mod oder modpl benutzt, so ergibt sie den Rest von polyIipolY2 tiber dem gegebenen Definitionsbereich der Koeffizienten. 1st name vorhanden, so wird diesem der Quotient zugewiesen.o Rem(x A4+x+l, xA2+1, x) mod 2; ---+x oSieheauch:Divide, Powmod, Prem, Quo, rem, Sprem.

remember option remember options remember Remember-Option in Prozeduren 0 Wird diese Option fUr eine Prozedur gegeben, so wird eine Buchftihrungstabelle oder ,,Remember-Tabelle" ftir die Prozedur erstellt. Diese fUhrt Buch tiber die Ergebnisse eines jeden Aufrufs der Prozedur; wird die Prozedur also wiederholt mit denselben Argumenten aufgerufen, so wird das Ergebnis einfach aus der Tabelle herausgelesen. Diese Tabelle kann als Operand 4 der Prozedurstruktur angesprochen werden. 0 Siehe auch: forget, op, options, proc, table. residue residue (ausdr, var=a) Berechnet das algebraische Residuum des Ausdrucks in der Variablen var urn den Punkt a. 0 Das Residuum ist der Koeffizient (var - a)-l in der Laurentreihenentwicklung von ausdr. o Man muB erst readlib (residue) eingeben, bevor man diesen Befehl benutzen kann. o residue(csc(x),x=O); ----I 0 Sieheauch:numapprox[laurentJ, series, singular. restart Stellt den internen Zustand einer Sitzung wieder so her, als ob Maple gerade gestartet wurde 0 Die Werte aller Variablen werde!jl vergessen, libname wird neu gesetzt, aile geladenen Pakete sind wieder ungeladen und die Maple-Initialisierungsdateien werden neu gelesen. 0 Siehe auch: unassign. resultant resultant (polYI, polY2, var) Berechnet die Resultante zweier Polynome in der Variablen var 0 polYl und polY2 sind Polynome in der Variablen var. 0 resultant (x A2+1, x A3+1, x); ---+ 2 0 Siehe auch: discrim, gcd, Resultant, linalg [bezout], linalg [ sylvester] . Resultant Resultant (polYI, polY2, var) Starre Resultante von Polynomen 0 Diese Funktion wird zusammen mit evala, evalgf, mod oder modpl benutzt, urn die Resultante zweier Polynome in der Variablen var tiber einem gegebenen Definitionsbereich der Koeffizienten zu berechnen. 0 Resul tan t (x A2 +1 , x A3+1, x) mod 2; ---+0 0 Sieheauch:Discrim, evala, evalgf, mod, modpl, resultant.

262

related-rsolve RETURN RETURN (ausdrl , ausdr2' ... ) Explizite Riickkehr aus einer Prozedur Diese Funktion bewirkt eine unverziigliche Riickkehr aus einer Prozedur, wobei der gegebene Ausdruck bzw. die gegebene Ausdrucksfolge (moglicherweise null) zuriickgegeben werden. 1st keine RETURN-Anweisung am Ende der Prozedur vorhanden, wird der Wert der zuletzt ausgefiihrten Anweisung zuriickgegeben. Siehe auch: ERROR, proc. rhs rhs(ausdr) Gibt die rechte Seite eines Ausdrucks zuriick Der Ausdruck kann eine Gleichung, Ungleichung oder ein Bereich sein. rhs (3 .. 4); --> 4 Siehe auch: lhs, op.

rootbound rootbound(poly, var) Berechnet eine grobe Schranke fUr die maximale GroBe einer beliebigen Nullstelle (reell oder komplex) des Polynoms Fiir diese Funktion gibt es keine Hilfsinformation On-Line. Man muB erst readlib(rootbound) eingeben, bevor man diesen Befehl benutzen kann. rootbound(x'20-2,x); -->2 RootOf RootOf(ausdr) RootOf(ausdr, var) Eine Darstellung fiir Nullstellen einer Gleichung Diese Funktion ist ein Platzhalter zur Darstellung aller Nullstellen einer Gleichung in einer Variablen. Sie ist die gewohnliche Darstellung fiir algebraische Zahlen, algebraische Funktionen und endliche Korper. 1st keine Variable var angegeben, so muB ausdr entweder ein univariates Polynom oder ein Ausdruck in _z sein. Siehe auch: alias, allvalues, convert/RootOf, evala, mod, Roots, solve, type/RootOf. roots roots (poly) roots (poly, K) Nullstellen eines univariaten Polynoms Diese Funktion berechnet die exakten Nullstellen eines univariaten Polynoms iiber dem durch die Koeffizienten von poly definierten Korper oder, im zweiten Fall, iiber dem gegebenen algebraischen Zahlkorper. K kann ein einfaches RootOf oder ein Radikal sein, eine Liste oder eine Menge von RootOf bzw. Radikalen. ZUriickgegeben wird eine Liste von Paaren der Form Nullstelle, VieIfachheit. roots (x'2+9, I); --> [[ 3 I, I], [ -3 I, III Siehe auch: factor, realroot, Roots, RootOf, solve, sturm. sturmseq. Roots Roots (poly) Roots (poly, K) Starre Wurzeln eines univariaten Polynoms Wird diese Funktion zusammen mit mod oder modp1 benutzt, so berechnet die erste Form die Nullstellen des Polynoms tiber dem gegebenen Definitionsbereich der Koefifizienten. Die zweite Form, benutzt mit mod, berechnet die Nullstellen des Polynoms tiber der durch RootOf K gegebenen Erweiterung. Roots (x' 4+2, RootOf (t '2+1, t)) mod 3; --> [[RootOfC_Z 2 + 1),1], [2 RootOfC_Z 2 + 1),1]' [1, 1], [2, 1)] Siehe auch: Factors, mod, modp1, msolve, RootOf, roots.

round round(z) round(l, z) Ergibt die z am nlichsten liegende ganze Zahl, falls z reell ist Ftir komplexe z wird die Funktion sowohl auf den Real- als auch auf den Imaginlirteil angewandt. Die zweite Form ergibt die erste Ableitung der Rundungsfunktion tiberall dort, wo sie definiert ist. round ( 1 . 5); --> 2 Siehe auch: ceil, floor, frac, trunc. rsolve rsolve(glchgen, fktnen) rso1ve(glchgen, fktnen, genfunc(var)) rsolve(glchgen, fktnen, makeproc) LOst die Rekursionsgleichung bzw. die Rekursionsgleichungen auf g\chgen ist eine einfache Gleichung bzw. eine Menge von Gleichungen, die Rekursionsbeziehungen und Randbedingungen

263

iii

AIle Maple-Befehle angeben. fktnen ist ein einfacher Funktionsname bzw. eine Menge von Funktionsnamen. Diese Funktion lost die Rekursionsbeziehung(en) ftir diese Funktionen auf. Zuriickgeliefert wird ein allgemeiner Term ftir die Funktion bzw. eine Menge solcher Ausdriicke. 1st die Option genfunc (var) angegeben, so liefert die Funktion die erzeugenden Funktionen in der Variablen var der durch glchgen definierten Foigen. Die Option makeproc bewirkt, daB die Funktion eine Prozedur zur Auswertung der durch glchgen definierten Funktionen zuriickgibt. o rsolve«f(n)=f(n-1)+2*f(n-2), f(1 .. 2)=1}' f); M^⦅セHQIョKR@ o rsolve({g(n)=-2*g(n-1), g(O)=l}, gIn), genfunc(z)); - > 0 Siehe auch: asympt, genfunc, solve, ztrans.

1;2z

save save dateiname save name), name2, ... , namek, dateiname Die save-Anweisung 0 Die erste Form speichert alle wahrend der aktuellen Sitzung zugewiesenen Namen in eine Datei ab, deren Namen angegeben werden muB. Die zweite Form speichert nur die spezifizierten Variablennamen in diese Datei als Foige von Zuweisungen abo Der Dateiname sollte in Hochkommata eingeschlossen sein. Endet dateiname mit . m, so werden die Zuweisungen im intemen Maple-Format dargestellt. Andemfalls wird linear ausgedruckt. 0 Siehe auch: anames, convert/hostfile, lprint, read, writeto. savelib savelib (name) , name2, ... , namek, dateiname) Speichert Variablenzuweisungen in einer Bibliothek ab 0 Diese Funktion durchforstet die in der globalen Variable libname angegebene Foige von Dateiverzeichnissen nach einem Verzeichnis, welches es dem Benutzer erlaubt, Dateien abzuspeichem. Eine Zuweisung flir jede Variable wird in der gegebenen Datei abgespeichert und zwar im ersten gefundenen geeigneten Verzeichnis. Die Variablennamen sollten in rechte einzelne Hochkommata, der Dateiname sollte in schraggestellte Hochkommata eingeschlossen sein. Endet dateiname auf . m, so werden die Zuweisungen in Maples intemem Format abgespeichert. Sonst wird linearer Ausdruck verwendet. 0 Siehe auch: libname, readlib, save. search search(kette, zielkette) search(kette, zielkette, name) Suche nach Teilketten 0 Diese Funktion liefert true, falls die Zeichenkette zielkette innerhalb der Zeichenkette kette auftritt und false sons!. 1st die Suche erfolgreich und ist ein Name angegeben worden, so wird diesem der Index des ersten Auftretens der Zielkette zugewiesen. Man muB erst readl ib (search) eingeben, bevor man diesen Befehl benutzen kann. search('mathematics', 'at', r), r; ->true,2 oSieheauch:searchtext, SearchText. searchtext searchtext(zielkette, kette) searchtext(zielkette, kette, m .. n) Suche nach einer Teilkette (GroB-Kleinschreibung wird nicht beriicksichtigt) Wird die Kette zielkette innerhalb der Kette kette gefunden, so gibt diese Funktion den Ort des ersten Auftretens der Zielkette zuriick. Sonst wird 0 zuriickgegeben. Ein optionaler Bereich schrankt die Suche auf die Teilkette ein, die mit Position m beginnt und mit Position n endet. Eine positive ganze Zahl zeigt eine Position an, die von links gezlihlt wird, eine negative ganze Zahl zeigt Zahlung von rechts an. Der voreingestellte Bereich ist die ganze Kette (1 .. -1). Diese Funktion ignoriert unterschiedliche GroB- und Kleinschreibung. 0 Diese Funktion ist neu in Version 3. 0 searchtext ( 'bC' , 'abcdABCD' ); - > 2 Siehe auch: SearchText, substring. Searchtext Searchtext(zielkette, kette) Searchtext(zielkette, kette, m .. n) Suche nach einer Teilkette (GroB-Kleinschreibung wird beriicksichtigt) 0 Wird die Kette zielkette innerhalb der Kette kette gefunden, so gibt diese Funktion den Ort des ersten Auftretens der Zielkette zuriick. Sonst wird 0 zUriickgegeben. Ein optionaler Bereich schrankt die Suche auf die Teilkette ein, die mit Position m beginnt und mit Position n endet. Eine positive ganze Zahl zeigt eine Position an, die von links gezlihlt wird, eine negative ganze Zahl zeigt Zahlung von rechts an. Der voreingestellte Bereich ist die ganze Kette (1 .. -1). Diese Funktion beriicksichtigt unterschiedliche GroB- und Kleinschreibung. 0 Diese Funktion ist neu in Version 3. 0 SearchText ( 'BC', 'abcdABCD'); - > 6 0 Siehe auch: search text, substring.

264

save - showprofile sec sec{z) Die Sekansfunktion

0

Siehe auch: arcsec.

sech sech{z) Die hyperbolisehe Sekansfunktion

0

Siehe auch: arcsech.

_seed Saat fUr Zufallszahlen 0 Indem man diese globale Variable setzt, verandert man die Folge von Zufallszahlen, die von solchen Prozeduren wie rand erzeugt wird. Wiihrend einer jeden Sitzung wird die selbe Folge von "zufalligen" Zahlen erzeugt, solange man der Saat keinen neuen Wert zuweist. 0 Siehe aueh: linalg [randmatrixl. rand, randpoly.

select select ( f, ausdr) select{f, ausdr, args) Wahlt die Operanden einer Liste, Menge Summe oder Produkt aus, die f genUgen 0 fist eine Funktion mit Boolsehen Werten. Zurilckgegeben wird ein Ausdruek vom selben Typ wie ausdr. Zusatzliehe Argumente args konnen an f weitergegeben werden. 0 select (type, [-l,4,3.,7,Pi], posint); ---+[4,7] seq seq{ausdr, var = a .. b) seq {ausdr, var = x) Erzeugt eine Folge 0 Die erste Form gibt die Folge zurilck, die man dadureh erhaIt, daB man die Zahlen a, a + 1, ... , b (oder bis zur letzten nieht b Uberschreitenden Zahl) fUr die Variable var in den gegebenen Ausdruek einsetzt. Die zweite Form laBt var sukzessive Operanden des Ausdrucks xannehmen.o seq{k 2, k=1 .. 4); ---+ 1,4,9,160 seq{e+l, e=[1,3,5]); ---+ 2,4,6 0 Siehe aueh: $, do, op. A

series series {ausdr, var) series {ausdr, var=a) series (ausdr, var=a, n) series (leadterm(ausdr), var=a, n) Verallgemeinerte Reihenentwieklung 0 Diese Funktion bereehnet eine abgeschnittene Reihenentwicklung von ausdr bezUglich der Variablen var urn den Punkt a bis hinauf zur Ordnung n. 1st a nieht spezifiziert, so wird urn 0 herum entwiekelt. 1st a gleieh inf ini ty, so wird eine asymptotisehe Entwicklung bereehnet. Fehlt n, so wird der Wert der globalen Variablen Order benutzt. 1st das erste Argument ein Funktionsaufruf von leadterm, so wird nur der Term mit niedrigstem Grad der Reihe von ausdr bereehnet. 0 ser ies (tan (x) ,x, 4) ; ---+ x + ix3 + 0 (x4) 0 series (leadterm (tan (x) ) ,x); ---+ x 0 Siehe aueh: coeftayl, convert/polynom, convert/series, numapprox, Order, powseries, taylor, type/laurent, type/series, type/taylor. shake shake (ausdr) shake (ausdr, n) Bereehnet ein begrenzendes Intervall 0 Diese Funktion ersetzt die Konstanten im Ausdruck durch ein Intervall mit einer Weite der Ordnung lO-n+l, und benutzt dann evalr, urn diese Intervalle weiterzuverfolgen. 1st n nieht gegeben, so wird der Wert von Digi ts benutzt. 0 Man muB erst readl ib (shake) eingeben, bevor man diesen Befehl benutzen kann. 0 shake ( 1, 2) ; ---+ [.90 .. 1.10] 0 Siehe auch: Digi ts, evalr.

Shi Shi(z) Das hyperbolisehe Sinusintegral

0

Shi(z)

= J; sinh tit dt

0

Siehe aueh: Chi, Si.

showprofile showprofile () Spiele die Ergebnisse des Profilierens vor 0 Diese Funktion gibt aus, wieviel Reehenzeit und Speieherplatz die profilierten Prozeduren benutzt haben. 0 Man muB erst readl ib (pro file) eingeben, bevor man diesen Befehl benutzen kann. 0 Siehe aueh: profile, showtime, time, unprofile.

265

AIle Maple-Befehle showtime showtime( ) Ftihrt tiber alle berechneten Werte Bueh und zeigt an, wieviel Zeit und Speicherplatz ein jeder Befehl verbraueht hat 0 Man muB showtime () oder on eingeben, urn diese Funktion zu aktivieren. Die Ausgabe aufeinanderfolgender Anweisungen wird in den Variablen 01, 02, etc abgespeiehert. Der Befehl of f deaktiviert diese Funktion. 1st diese Funktion aktiviert, so sind " " und " " " nieht ausftihrbar. 0 Man muB erst readl ib ( showt ime) eingeben, bevor man diesen Befehl benutzen kann. 0 Siehe auch: history, time. Si Si(z) Das Sinusintegral

0

Si(z) =

J; sin tit dt

0

Siehe auch: Ci, Shi, Ssi.

sign sign(poly) sign(poly, varliste) sign(poly, varliste, name) Berechnet das Vorzeiehen des flihrenden Koeffizienten eines multivariaten Polynoms beztiglich der angegebenen Liste von Variablen 0 Wird die Liste der Variablen weggelassen, so werden aIle Unbestimmten benutzt. Wird ein Name aIs drittes Argument angegeben, so wird diesem der ftihrende Koeffizient zugewiesen. 0 sign (3 *x-2 *y, [y, xl); --> -1 0 Siehe aueh: indets, lcoeff, signum. signum signum(z) signum(1, z) Vorzeiehenfunktion flir reell- und komplexwertige Ausdriieke 0 Diese Funktion ist 1 flir jede positive reel Ie Zahl, -1 ftir jede negative reelle Zahl und 0 ftir O. Ftir eine von null versehiedene komplexe Zahl z wird z I Iz I bereehnet. Die zweite Form gibt die Ableitung der Vorzeiehenfunktion anderStellezzuriick.o signum(4*I); -->/ 0 Sieheaueh:csgn, evalc, sign. Signum Signum (ausdr) Starre Vorzeiehenfunktion 0 Wird diese Funktion zusammen mit evalr benutzt, so bestimmt sie das Vorzeichen des Ausdrueks mit Hilfe von Bereichsarithmetik. 0 evalr (Signum (Pi Aexp (1) - exp (1) APi) ); --> -1 0 Siehe auch: evalr.

simplex Paket flirs Simpiexverfahren zur linearen Optimierung 0 Bei den Beschreibungen der Funktionen dieses Pakets steht C immer ftir eine Liste bzw. Menge linearer Restriktionen (Gleichungen oder Ungleiehungen). Diese Implementation des Simplexalgorithmus basiert auf dem Text Linear Programming von ChvataI, 1983, W. H. Freeman and Company, New York. 0 Siehe auch: simplex [ function], with. simplex[basis] basis(C) Berechnet eine Liste von Variablen, eine pro Gleichung, welche der Basis entspricht, die vom Simplexalgorithmus benutzt wird 0 C ist eine Menge linearer Gleichungen so wie sie von simplex [setupl erzeugtwerden. 0 Sieheauch: simplex [setup]. simplex[ convert/equality] convert (liste, equality) convert (menge, equality) Wandelt Ungleiehungen in Gleiehungen urn 0 Das erste Argument kann eine Liste bzw. Menge von Gleichungen oder Ungleichungen sein. Diese Funktion kann nur nach dem Laden des s implex-Pakets aufgerufen werden. 0 Siehe auch: convert / equal i ty. simplex[ convert/std] convert(C, std) Wandelt zur Simplexmanipulation in Standardform urn 0 Diese Funktion liefert eine Liste bzw. Menge von Restriktionen, die man erhlilt, wenn man aIle Konstanten auf die reehte Seite einer jeden Gleichung bzw. Ungleiehung in C bringt. Diese Funktion kann nur naeh dem Laden des simplex-Pakets aufgerufen werden. 0 convert({y

{y-3x::;2}

266

showtime - simplex [maximize1 simplex[converUstdle] convert(C, stdle) Wandelt Restriktionen in die Fonn } 0 simplify(l-sin(x) A2 + In(x A2), trig); ---> cos(x)2 + In (x2) 0 simplify (x A6*y-3 *x A4 *y+3 *xA2 *y+3, {x A2-y A2=1}, [x,y]); ---> 3 + y7 + y 0 Siehe auch: collect, combine, expand, factor, grobner, normal, radsimp.

sin sin(z) Die Sinusfunktion. 0 Siehe auch: arcsin. singular singular (ausdr) singular (ausdr, vars) Finde Singularitliten eines Ausdrucks 0 vars kann ein Variablenname bzw. eine Liste von Variablennamen sein. Diese Funktion gibt eine Folge von Ausdriicken fiir die Singularitliten zuriick, wobei jede Singularitat als eine Menge von Gleichungen dargestellt ist. Die globalen Variablen -N oder -NN konnen dazu benutzt werden, beliebige ganze bzw. natiirliche Zahlen im Ergebnis anzuzeigen. 0 Man muB erst readl ib (s ingular) eingeben, bevor man diesen Befehl benutzen kann. 0 singular (csc (t)); ---> {t = _N 7r}, {t = oo} 0 Siehe auch: discont, residue, roots, solve. sinh sinh(z) Die hyperbolische Sinusfunktion. 0 Siehe auch: arcsinh. sinterp sinterp(f, varliste, m, p) Diinn besetzte multivariate modulare Polynominterpolation 0 fist eine Prozedur, die n ganze Zahlen sowie eine Primzahl p als Eingabe akzeptiert und einen Wert in den ganzen Zahlen modulo p berechnet. varliste ist eine Liste von n Variablennamen. Diese Funktion ergibt ein Polynom in den aufgelisteten Variablen, dessen Werte modulo der Primzahl p gleieh den entsprechenden Werten von f sind. mist eine Schranke flir den totalen Grad des zUriickgelieferten Polynoms. 1st die Interpolation nieht erfolgreich, so wird FAIL zuriickgegeben. 0 Man muB erst readl ib (s in terp) eingeben, bevor man diesen Befehl benutzen kann. 0 Siehe auch: interp.

269

AIle Maple-Befehle Smith Smith(A, var, namel, name2) Starre Smith-Nonnalfonn Wird diese Funktion zusammen mit mod benutzt, so berechnet sie die Smith-Nonnalfonn einer rechteckigen Matrix univariater Polynome in var. 1m Fall von vier Argumenten, werden den beiden Namen die Transfonnationsmatrizen U und V zugewiesen, mit denen das Ergebnis als U A V geschrieben werden kann. Siehe aueh: Hermi te, linalg[smith]. solve solve (glchgen) solve (glchgen, vars) solve (unglchgen, var) solve (glchg, fktname) solve (identity (glchg, x), vars) Lost Gleichungen auf analytischem Wege auf Die ersten beiden Fonnen IOsen eine Gleichung bzw. ein Gleiehungssystem naeh der gegebenen Variablen bzw mehreren Variablen auf. Ein Ausdruck wird als gleich Null gesetzt angenommen. Mehrere Gleichungen mit mehreren Unbekannten sind als Mengen gegeben. 1st vars nieht spezifiziert, so werden alle Unbestimmten benutzt. Zuriiekgegeben wird eine Menge von LOsungen. 1st mehr als eine Variable vorhanden, so wird jede der LOsungen als Menge gegeben. Die maximale Anzahl der zuriickgegebenen Losungen kann durch Wertzuweisung der Umgebungsvariablen ..MaxSols (Voreinstellung lOO) kontrolliert werden. Diese Funktion kann aueh Ungleiehungen aufiosen und Reihen umkehren. Bei der vierten Fonn sollte fktname nur als eine Funktion in der Gleichung benutzt werden. In diesem Fall ergibt solve eine Foige einer oder mehrerer Prozeduren, die diese Gleichung IOsen. Die identi ty-Fonn versueht, eine Losung in vars zu finden, die glchg flir einen beliebigen Wert der speziellen Variablen x gentigt. x sollte nieht zu vars gehoren. solve (x' 2 =3, x); ---> V3,-V3 solve({x+y=2,x=y}); --->{y=l,x=l} solve (arctan(x) {x < O} solve (y=series (x*cos (x) ,x=O, 5), x); ---> y + セケS@ + 0 (y5) solve (identity(sin(x+t) = a*sin(x) + b*cos (x), x), {a,b}); ---> {b sin(t),a cos(t)} Sieheauch: assign, dsolve, fsolve, grobner[gsolve], isolate, isolve, linalg[linsolve], match, msolve, root, rsolve.

=

=

sort sort(liste) sort(liste, f) sort (ausdr) sort (ausdr, vars) sort (ausdr, vars, f) Sortiert die Elemente einer Liste in aufsteigender Ordnung bzw. die Tenne eines Polynoms in einem algebraischen Ausdruck in absteigender Ordnung f definiert eine Sortierordnung. Diese kann ' (x-RootOr(_Z2+3)) (x + RootOr(_Z2 +3)) Siehe aueh: factor, RootOf. sprem sprem(polYl, polY2, var) sprem(polYl, polY2, var, namel, name2) Diinn besetzter Pseudorest von Polynomen Diese Funktion ist mit prem identiseh bis auf die Tatsaehe, daB das Vielfaehe m die kleinste Potenz des fiihrenden Koeffizienten von polY2 in var ist, so daB der DivisionsprozeB keine Briiehe in den Pseudoquotienten bzw -rest einfUhrt. 1st namel vorhanden, so wird diesem das Vielfaehe zugewiesen. 1st name2 vorhanden, so wird diesem der Pseudoquotient zugewiesen. Siehe auch: prem, rem, Sprem. Sprem Sprem(polYl, polY2, var) Sprem(polYl, polY2, var, namel, name2) Starrer diinn besetzter Pseudorest von Polynomen Wird diese Funktion zusammen mit evala, evalgf, mod oder modpl benutzt, so berechnet diese Funktion den Pseudorest von polYl dividiert durch poly 2 iiber dem gegebenen Definitionsbereich der Koeffizienten, wobei der kleinstmogliche Multiplikator wie bei sprem gewahlt wird. Siehe aueh: Prem, Rem, sprem. sqrfree sqrfree(poly) sqrfree(poly, vars) Quadratfreie Faktorierung eines multivariaten Polynoms vars ist der Name der Hauptvariablen oder eine Liste bzw. Menge von Hauptvariablen. Tritt dieses Argument nieht auf, so werden aIle Namen im Polynom verwendet. Das Ergebnis ist eine Liste, deren erstes Element der InhaIt und deren zweites Element eine Liste von Faktor-Exponenten-Paaren ist, die eine quadratfreie Faktorierung darstellen. sqrfree(x'4+4*x'3+3*x'2-4*x-4); --> [1, [ [ x 2 - 1,1] , [x + 2, 2 Siehe aueh: convert! sqrfree, factors, isqrfree, Sqrfree.

J]]

Sqrfree Sqrfree(poly) Starre quadratfreie Faktorierung Diese Funktion wird zusammen mit eva la, mod oder modpl benutzt und gibt eine Liste zuriick, deren erstes Element der InhaIt und deren zweites Element

271

AIle Maple-Befehle eine Liste von Faktor-Exponenten-Paaren ist, die eine quadratfreie Faktorierung darstellen. ¢ Sqrfree(x 4+x 3-x-l) mod 3; -+[l,[[x+l,lj,[x+2,3JJ] ¢ Sieheauch: DistDeg, Factors, sqrfree. A

A

sqrt sqrt(ausdr) Berechnet die Quadratwurzel des Ausdrucks ¢ Es werden Quadratwurzeln aus perfekten ganzzahligen Quadraten oder Quadraten von Polynomen herausgezogen. ¢ sqrt (8*x 2) ; -+ 2 V2 x ¢ Siehe auch: type/ sqrt. A

sscanf sscanf(kette, formatkette) Erkennt und verarbeitet Zahlen und Zeichenketten innerhalb einer Zeichenkette ¢ Diese Funktion arbeitet sich durch kette, wobei Zahlen und Teilketten gemi\B der in fmt gegebenen Spzeifikationen zur Ubereinstimmung gebracht werden. Diese Funktion verhlUt sich genauso wie die C-Standardbibliotheksfunktion gleichen Namens. Sie benutzt die im wesentlichen gleichen Formatbeschreiber wie die C-Programmiersprache und zusiitzlich noch %a fUr algebraische Ausdrilcke. Diese Funktion liefert eine Liste der erkannten Objekte. ¢ sscanf ( '3 2. km x+y', • %d %f %s %a'); -+ [3,2., km, x + yj ¢ Siehe auch: printf, parse, readline.

Ssi Ssi(z) Das verschobene Sinusintegral ¢ Ssi(z) = Si(z) - 7r/2 ¢ Man muB erst readHb(Ssi) eingeben, bevor man diesen Befehl benutzen kann. ¢ Siehe auch: Si.

ssystem ssystem(befehl) ssystem(befehl, n) Ruft einen Befehl im unterliegenden Betriebssystem auf und gibt das Ergebnis zurilck ¢ befehl ist eine Maple-Zeichenkette. 1st ein zweites Argument angegeben, so werden hOchstens n Sekunden CPU-Zeit zur AusfUhrung von befehl erlaubt. Zurilckgegeben wird eine Liste von zwei Elementen. Das erste Element ist der zurilckgegebene Code der BefehlsausfUhrung; das zweite ist eine Zeichenkette, die das Ergebnis des Befehls repriisentiert. Diese Funktion wird von einigen Plattformen nicht unterstiitzt. ¢ Diese Funktion ist neu in Version 3. ¢ Siehe auch: !, sys tern. stats Maple V Version 3 Statistikpaket ¢ Dieses Paket ist in Version 3 komplett neu gestaltet worden. Die meisten Funktionen befinden sich in einem der sechs Teilpakete: describe, fit, random, statevalf, statplots und transform. Der wi th-Befehl ladt Teilpakete genauso wie Pakete. Wir geben hier zum Beispiel drei Arten an, die Funktion mean aus dem Teilpaket describe aufzurufen: stats[describe, mean] (data) with(stats): describe [mean] (data); with(stats): with(describe): mean(data); Bei den Beschreibungen der Funktionen dieses Pakets stellt data immereine Liste statistischer Daten dar. Jeder Dateneintrag kann ein einfacher Eintrag, eine Klasse, eine fehlende Beobachtung oder ein gewichteter Dateneintrag sein. Ein einfacher Eintrag ist eine Zahl oder ein symbolischer Ausdruck. Eine Klasse wird durch einen Bereich a .. b gegeben. Sie stellt ein einfaches Datenobjekt dar mit einem Wert, der grti8er oder gleich a aber strikt kleiner als b ist. Das Klassenmerkmal einer Klasse ist der Mittelpunkt des Bereichs. Der Name missing steht fiir eine fehlende Beobachtung. Ein Eintrag derFormWeight (eintrag, n) steht fiireinen Eintrag mit Gewichtn. ¢ Siehe auch: stats [describe], stats [fit], stats [importdata], stats [random], stats [statevalf], stats [statplots], stats [transform], with. stats Statistikpaket ¢ Viele Funktionen dieses Pakets verlangen nach einer ,,statistischen Matrix". Dies ist eine Matrix von Daten, deren erste Reihe die Namen aller Spalten beinhaltet. Dies ist der "Schliissel" der Matrix. Bei den Beschreibungen der Funktionen dieses Pakets ist dat immer eine statistische Matrix. ¢ Siehe auch: stats [ function], with.

stats[addrecord] addrecord(dat, liste) addrecord(dat, A) Fiigt Datensiitze zu einer statistischen Matrix hinzu ¢ Diese Funktion erzeugt eine neue statistische Matrix, die aus der gegebenen Matrix dat besteht, zusammen mit einer Liste bzw.

272

sgrt-stats[describe, count] Matrix von neuen Beobachtungen, die angehangen wird. Zuruckgegeben wird die neue statistische Matrix. ¢ Siehe auch: stats [getkey], stats [putkey], stats [removekey].

stats[average] average (dat. keYI. keY2 • . . . ) average (A) average (listliste) average (liste) average (feld) average (xI. x2. . .. ) Berechnet Durchschnittswerte ¢ Der Durchschnitt bier ist das arithemetische Mittel: die Summe geteilt durch die Anzahl der Elemente. Gegeben sei eine statistische Matrix, dann berechnet diese Funktion die Durchschnittswerte der Datenspalten, die mit keYl' keY2, ... angesprochen werden. 1st eine Matrix gegeben, so wird der Durchschnittswert einer jeden Spalte gesondert berechnet und das Ergebnis wird als eine Liste zuruckgegeben. Eine Liste von Listen derselben Lilngen wird wie eine Matrix behandelt. Es kann auch eine einfache Liste, ein Feld der Dimension eins oder eine Folge angegeben werden. ¢ average ( [ [2 • 3) • [4. 5) ) ); ---+ [3,4] ¢ average (1.2.3); ---+ 2 ¢ Siehe auch: stats [mean), stats [median), stats [mode), stats [variance). stats[ChiSquare] ChiSquare(F. n) Die Cbi-Quadrat-Verteilung ¢ n stellt die Anzahl der Freiheitsgrade dar; es mu8 sich urn eine ganze Zahl handeln. Diese Funktion berechnet den Wert von x so daB:

¢

ChiSquare(O.5. 3); ---+2.365973884

¢

Sieheauch:stats[RandChiSquare).

stats[correlation] correlation(dat. keYI. keY2) correlation(listel. liste2) Berechnet den Korrelationskoeffizienten ¢ Diese Funktion berechnet die Korrelation zwischen zwei Listen von Daten. Die Daten ktlnnen auch durch Angabe zweier Schlussel fUr eine statistische Matrix beschrieben sein. ¢ correlation ( [2.1. 3. 5). [5.7.8); ---+ .9188196337 ¢ Siehe auch: stats [covariance), stats [Rsquared). stats[covariance] covariance (dat. keYI. keY2) covariance (listel. 1iste2) Berechnet die Kovarianz Diese Funktion berechnet die Kovarianz zwischen zwei Listen von Daten. Die Daten ktlnnen auch durch Angabe zweier Schlussel in einer statistischen Matrix gegeben sein. covariance ( [1.2.3) • [2.3.4) ); ---+ I ¢ Siehe auch: stats [correlation), stats [variance). stats[describe]

Teilpaket zur Datenanalyse Die Kurzformen dieser Funktionen ktlnnen benutlt werden, indem man wi th (descr ibe) nach der Eingabe von wi th (s ta ts) eingibt. Dieses Teilpaket ist neu in Version 3. ¢ Siehe auch: stats [describe, function), with.

stats[describe, coefficientofvariation] coefficientofvariation(data) coefficientofvariation[n) (data) Berechnet den Variationskoeffizienten ¢ Der Variationskoeffizient ist die Standardabweichung dividiert durch das Mittel. Klassen werden durch ihr Klassenmerkmal dargestellt; missing Daten werden ignoriert. 1st n gleich 0 (die Voreinstellung), so wird die Standardabweichung fUr die ganze Bevtllkerung berechnet; ist n gleich I, so wird sie fur eine Probe berechnet. coefficientofvariation ( [3. Weight (5.2). 7); ---+

iv'2

stats[describe, count] count (data) ZlIhlt die Dateneintrlige ¢ Gewichte werden entsprechend gezllhlt; missing Daten werden nicht gezllhlt. count ( [7. Weight (5.9). missing); ---+ 10 ¢ Siehe auch: stats [describe, countmissing).

273

..

Alle Maple-Befehle stats[describe, countmissing] countmissing(data) Z1ihlt missing Dateneintriige count ( [7, Weight (5,9), missing); --+1 Siehe auch: stats [describe. count). stats[describe, covariance] covariance (datal, data2) Berechnet die Kovarianz zwischen zwei statistischen Listen Die zwei Listen mUssen dieselbe Anzahl von Eintriigen besitzen. mit identischen Gewichten fUr entsprechende Eintriige. Klassen werden durch Klassenmerkmale dargestellt. covariance ( [1,2,3), [3,6,9); --+ 2 Siehe auch: stats [describe. linearcorrelation). stats[describe, decile] decile [n) (data) decile[n) (data, luecke) Berechnet Dezile einer statistischen Liste n sollte zwischen 1 und 9 sein. mi s sing Daten werden ignoriert. luecke ist entweder false oder eine Zahl die die GrtlBe der LUcken zwischen Klassen angibt. 1st sie false (voreingestellt). so wird angenommen. daB die Klassen sich soweit ausbreiten. daB sie sich berUhren. Man setze luecke auf O. falls die Grenzen der Klassen nicht veriindertwerdensollen. decile[4) ([$11. .20); --+ 14 stats[describe, geometricmean] geometricmean(data) Berechne das geometrische Mittel der Daten Das geometrische Mittel ist die nte Wurzel des Produkts der Elemente der statistischen Liste. wobei die Liste n Elemente enthiilt. Klassen werden durch ihr Klassenmerkmal dargestellt; missing Daten werden ignoriert. geometricmean ( [3, Weight (5,2), 7); --+ 525 1 / 4 Siehe auch: stats [describe. harmonicmean). stats [describe. mean). stats [describe. quadraticmean). stats[describe, harmonicmean] harmonicmean(data) Berechnet das harmonische Mittel der Daten Das harmonische Mittel ist das Reziproke des arithmetischen Mitte1s der Reziproken der Listenelemente. Klassen werden durch ihr Klassenmerkmal dargestellt; missing Daten werden ignoriert. harmonicmean ( [3, Weight(5,2), 7); --+ 12°: Sieheauch: stats[describe. geometricmean], stats [describe. mean). stats [describe. quadraticmeanl. stats[describe, kurtosis] kurtosis (data) kurtosis[n) (data) Berechnet dIm Momentenkoffizienten der Kurtosis der Daten Dieser ist definiert als das vierte Moment Uber dem Mittel dividiert durch die vierte Potenz der Standardabweichung. 1st n gleich o (voreingestellt). so wird die Standardabweichung fUr die gesarnte Population berechnet; ist n gleich I. wird sie nur fUr eine Stichprobe berechnet. Klassen werden durch ihr Klassenmerkmal 、セ・ウエャ[@ missing Daten werden ignoriert. kurtosis ( [Weight (1,3) ,3,5) ); --+ 1634 Siehe auch: stats [describe. moment). stats [describe. skewnessl. stats[describe, Iinearcorrelation] linearcorrelation(datal, data2) Berechnet den Koeffizienten der linearen Korrelation zweier Datenlisten Die zwei Listen mUssen dieselbe Anzahl von Eintriigen besitzen. mit identischen Gewichten fUr entsprechende Eintriige. Klassen werden durch Klassenmerkmale dargestellt. linearcorrelation ( [1,2,3) , [3,6,9); --+1 Sieheauch:stats[describe. covariance). stats[describe, mean] mean (data) Berechnet das arithmetische Mittel der Daten Das arithmetische Mittel ist definiert als die Summe der Terme dividiert durch die Anzahl der Terme. Klassen werden durch ihr Klassenmerkmal dargestellt; missing Daten werden ignoriert. mean ( [3, Weight (5,2), 7); --+ 5 Siehe auch: stats [describe. geometricmean). stats [describe. harmonicmeanl. stats [describe, medianl, stats [describe, model, stats [describe, quadraticmean), stats [describe, standarddeviation).

274

stats[describe, countmissing] - stats[describe, quantile] stats[describe, meandeviation] meandeviation(data) Berechnet die mittlere Abweichung der Daten ¢ Dies ist die durchschnittliche absolute Abweichung yom Mittel. Klassen werden durch ihr Klassenmerkmal dargestellt; mi s sing Daten werden ignoriert. ¢ meandeviation ( [3, Weight (5,2), 71); --+ 1 stats[describe, median] median (data) median (data, luecke) Berechnet den Median der Daten ¢ Entweder wird der Mittelwert oder das arithmetische Mittel der beiden Mittelwerte zuriickgegeben. mi s sing Daten werden ignoriert. luecke ist entweder fals e oder eine Zahl. die die GrllBe der Liicken zwischen Klassen angibt. 1st sie false (voreingestellt). so wird angenommen. daB die Klassen sich soweit ausbreiten. daB sie sich beriihren. Man setze luecke auf O. falls die Grenzen der Klassen nicht verllndert werden sollen. ¢ median ( [1 , 31 ) ; --+ 2 ¢ Siehe auch: stats [describe. decilel. stats [describe. meanl. stats [describe. model. stats [describe. quantilel. stats [describe. quartilel. stats[describe, mode] mode (data) Berechnet den Modus der Daten ¢ Der Modus ist das am hliufigsten auftretende Element. Gibt es mehrere Elemente mit modaler Haufigkeit. so werden aile diese Elemente als Foige von Ausdriicken zuriickgegeben. missing Daten werden ignoriert. ¢ mode ([2,2,6,8,61); --+ 2, 6 ¢ Siehe auch: stats [describe. meanl. stats [describe. medianl. stats[describe, moment] moment [ml (data) moment[m, al (data) moment[m, a, nl (data) Berechnet das mte Moment iiber a ¢ a kann eine Zahl oder eine beschreibende Statisitik wie z. B. mean sein. Der voreingestellte Wert ist O. Falls n gleich 0 ist (die Voreinstellung). so wird das Moment fiir die ganze Bevlllkerung berechnet; ist n gleich 1. so wird es fUr eine Stichprobe berechnet. Klassen werden durch ihr Klassenmerkmal dargestellt; missing Daten werden ignoriert. ¢ moment [3, mean 1 ( [Weight (1,3) ,3,51); --+ セ[@ ¢ Siehe auch: stats[describe. kurtosis], stats[describe. skewnessl. stats[describe, percentile] percentile[n) (data) percentile[nl (data, luecke) Findet den Dateneintrag. der dem gegebenen Prozentil entspricht ¢ Fruit das Prozentil zwischen zwei Dateneintrage. so wird das Ergebnis mittels Interpolation berechnet. missing Daten werden ignoriert. n sollte eine ganze Zahl zwischen 1 und 99 sein. luecke ist entweder false oder eine Zahl. die die GroBe der Liicken zwischen Klassen angibt. 1st sie false (voreingestellt). so wird angenommen. daB die Klassen sich soweit ausbreiten. daB sie sich beriihren. Man setze luecke auf O. falls die Grenzen der Klassen nicht verllndert werden sollen.o percentile [75) ([$11 .. 20); --+ 0 Sieheauch: stats[describe. decilel. stats [describe. quantile]. stats [describe. quartile).

¥-

stats[describe, quadraticmean] quadraticmean(data) Berechnet das quadratische Mittel der Daten 0 Das quadratische Mittel ist die Quadratwurzel des arithmetischen Mittels der Quadrate der Datenelemente. Klassen werden durch ihr Klassenmerkmal dargestellt; missing Daten werden ignoriert. ¢ quadraticmean ( [3, Weight (5,2), 71); --+ 3V3 0 Siehe auch: stats [describe. geometricmean). stats [describe. harmonicmeanl. stats [describe. meanl. stats[describe, quantile] quantile[ql (data) quantile[ql (data, ) Findet das angegebene Quantil der Daten ¢ FruIt das Quantil zwischen Dateneintrage. so wird das Ergebnis mittels Interpolation berechnet. missing Daten werden ignoriert. q soUte ein Bruch zwischen 0 und I sein. luecke ist entweder false oder eine Zahl. die die GrIlBe der Liicken zwischen Klassen angibt. 1st sie false (voreingesteUt). so wird angenommen. daB die Klassen sich soweit ausbreiten. daB sie sich berilhren. Man setze luecke auf O. falls die Grenzen der Klassen nicht verllndert werden sollen. 0 quantile [ 3 /41 ( [$11. . 20 1 ); --->

275



AIle Maple-Befehle

¥

Siehe auch: stats [describe, decile), stats [describe, percentile), stats [statplots, quantile), stats [describe, quartile).

stats[describe, quartile] quartile[n) (data) quartile[n) (data, luecke) Berechnet das nte Quartil der Daten n sollte 1,2, oder 3 sein. luecke ist entweder false oder eine Zahl, die die GroBe der LUcken zwischen Klassen angibt. 1st sie f al se (voreingestellt), so wird angenommen, daB die Klassen sich soweit ausbreiten, daB sie sich beruhren. Man setze luecke auf 0, falls die Grenzen der Klassen nicht verlindert werden sollen. quartile [3) ( [$11. .20) ) ; ---+ Siehe auch: stats [describe, decile), stats [describe, median), stats [describe, percentile), stats [describe, quantile).

¥

stats[ describe, range] range (data) Gibt den kleinsten Bereich zurUck, der die Gesamtheit der Daten enthiilt missing Daten werden ignoriert. range ( [1 " 3, 4, 6); ---+ 1 " 6

stats[describe, skewness] skewness (data) skewness[n) (data) Berechnet den Momentenkoeffizienten der Schiefheit Dieser ist definiert als das dritte Moment Uber dem Mittel dividiert durch die dritte Potenz der Standardabweichung. 1st n gleich 0 (die Voreinstellung), so wird die Standardabweichung fUr die gesamte Population berechnet; ist n gleich I, so wird sie fUr eine Stich probe berechnet. Klassen werden durch ihr Klassenmerkmal dargestellt; missing Daten werden ignoriert. skewness ( [Weight (1,3) ,3,5) ) ; ---+ Sieheauch: stats[describe, kurtosis), stats[describe, moment).

N

stats[describe, standarddeviation] s tandarddeviat ion (data) standarddeviation[n) (data) Berechnet die Standardabweichung der Daten 1st n gleich 0 (die Voreinstellung), so wird die Standardabweichung fUr die gesamte Population berechnet (Division durch n); ist n gleich I, so wird sie fUr eine Stichprobe berechnet (Division durch n - 1). Klassen werden durch ihr Klassenmerkmal dargestellt; missing Daten werden ignoriert. standarddeviation ( [3, Weight (5,2), 7); ---+,j2 Siehe auch: stats [describe, mean].

stats[ describe, variance] variance (data) variance[n] (data) Berechnet die Varianz der Daten Die Varianz ist das Quadrat der Standardabweichung. 1st n gleich 0 (die Voreinstellung), so wird die Standardabweichung fUr die gesamte Population berechnet; ist n gleich I, so wird sie fUr eine Stichprobe berechnet. Klassen werden durch ihr Klassenmerkmal dargestellt; missing Daten werden ignoriert. variance ( [3, weight (5,2) , 7] ); ---+ 2 Siehe auch: stats [describe, standarddeviation].

stats[evalstat] eva1stat(dat, glchgl, glchg2' ... ) FUgt Daten zu einer statistischen Matrix hinzu Jede Gleichung ergibt eine neue Spalte ausgedrUckt mit Hilfe der anderen Spalten. Diese Funktion gibt eine neue statistische Matrix zuruck, die dadurch gegeben ist, daB fUr jede gegebene Gleichung eine Spalte zu dat hinugefUgt wird.

stats[Exponential] Exponential ()d Exponential (A, schranke) Die Exponentialverteilung Gegeben sei ein einfaches Argument A; diese Funktion gibt eine Prozedur zuruck, die die entsprechende Exponentialverteilung berechnet. Die zweite Form berechnet den Wert der Exponentialverteilung mit Parameter A an der gegebenen oberen Grenze. Siehe auch: stats [RandExponential].

stats[Fdist] Fdist(F, r, s) Die Verteilung des Varianzverhiiltnisses r und s sind Zlihler- bzw. Nennerfreiheitsgrade. Diese Funktion berechnet x so daB:

276

stats[describe, quartile] - stats[mean] f((r + s)/2) - f(r/2)f(s/2)

F¢ Fdist ( .8,2,6); stats [Ftest1.

---->

1'"

2.129927840

0

rr/2 s s/2ur/2-1 (s + ru)(B+r)/2 セ@

¢ Siehe auch: stats [RandFdist],

stats[fitl Teilpaket zur Regression ¢ Dieses Teilpaket ist neu in Version 3. Die Funktion leastsquare in diesem Teilpaket ersetzt drei Funktionen in Version 2: stats [linregress], stats[multregress1 und stats[regression1. 0 Man gebe with(fit) nach Eingabe von with (stats) ein, urn die Funktion leastsquare ohne vorhergehenden Pfad aufrufen zu kiinnen. ¢ Siehe auch: stats [fit, function1, with.

stats[fit, leastsquare] leastsquare[varliste1 (listdata) least square [varliste, gl, koeffmenge1 (listdata) Legt eine Kurve durch Daten hindurch mit Hilfe der Methode der kleinsten Quadrate ¢ Die erste Form berechnet eine Iineare Gleichung in den gegebenen VariabIen, die die Daten im Sinne der kleinsten Quadrate am besten approximiert. Die zweite Form erlaubt es, eine Gleichung und eine Menge von Koeffizienten anzugeben.¢ leastsquare[[x,y11([[1,2,31, [3,5,711); ---->y 1+2x o leastsquare[[x,y]. y=m*x+b, (m,b}]([[1,2,3]. [3,5,711); ---->

=

y=I+2x

stats[Ftest] Ftest(x, r, s) Berechnet die Wahrscheinlichkeit, mit der die F-Verteilung x liberschreitet ¢ r und s sind die Ziihler- bzw. Nennerfreiheitsgrade der F- Vereteilung. 0 Ftes t (2 . 13 , 2, 6); ----> .1999915605 ¢ Siehe auch: stats [Fdist1.

stats[getkey] getkey(dat) Gibt den Schllissel einer statistischen Matrix zurUck ¢ Der Schllissel wird aIs eine Liste zurlickgegeben. 0 Siehe auch: stats [putkeyl, stats [removekeyl.

stats[importdata] importdata(dateiname) importdata(dateiname, n) Liest statistische Daten aus einer Datei ¢ In der Datei sollten Zahlen durch Leerzeichen oder ZeilenurnbrUche getrennt sein. Die Zahlen werden aIs G1eitkommazahlen eingelesen. Fehlende Daten kiinnen durch einen * in der Datei angezeigt werden. Diese werden dann im Ergebnis durch das Wort missing dargestellt. 1st n gleich I (Voreinstellung), so werden die Daten in einer Folge von Ausdrlicken zurlickgegeben. 1st n gro8er aIs I, so werden die Daten aIs n Listen zUrlickgegeben. ¢ Diese Funktion ist neu Version 3. ¢ Siehe auch: readdata.

stats[linregress] linregress(dat, keYI=keY2) linregress(yliste, xliste) Lineare Regression ¢ Diese Funktion legt eine Gerade durch die in zwei SpaIten einer statistischen Matrix gegebenen Daten. Zurlickgegeben wird eine Liste mit Startpunkt und Steigung. ¢ linregress ( [3,5,7,9]. [1,2,3,41); ----> (1.,2.] ¢ Siehe auch: stats [multregress I, stats [regressionl.

stats[mean] mean (data) mean (data, geometric) mean (data, harmonic) mean (data, quadratic) mean(listel, liste2, discrete) mean ( [[ausdr, a .. b1, ... 1, var, continuous) Berechnet verschiedene Mittel ¢ data kann aIs Liste bzw. Vektor gegeben sein. Die erste Form berechnet ein arithmetisches Mittel, wie stats [averagel. Das geometrische (geometric) Mittel ist die nte Wurzel des Produkts der Daten, wobei n Datenelemente vorhanden sind. Das hannonische (harmonic) Mittel ist das Reziproke des arithmetischen Mittels der Reziproken der Daten, das quadratische (quadra tic) Mittel ist die Quadratwurzel des arithmetischen Mittels der

277

..

Alle Maple-Befehle Datenquadrate. Die fiinfte Form mit der discrete-Option berechnet die Summe der Produkte der entsprechenden Elemente von listel und liste2. Die letzte Form verlangt nach einer Liste von Listen als erstes Argument. Jede Teilliste hat zwei Elemente: einen Ausdruck in der Variablen

J:

xf(x) dx wird flir jedes Paar [f(x), a.. b] var. und einen Bereich. Das gewichtete Integral berechnet und diese Werte werden dann aufsummiert. Es gibt keine On-Line-Hilfsinformation filr diese Funktion. mean ( [2,3,4], geometric); --+ 24 1 / 3 mean ( [2,3,4], harmonic); --+ mean ( [1, 2 , 3l, [4, 5, 6l, discrete); --+ 32 mean ( [ [cos (x) ,0 .. Pi/2ll , x, continuous); --+ .5707963268 Siehe auch: stats [averagel. stats [meanl, stats [medianl. stats [variancel.



stats[median] median (dat, keYI, keY2, ... ) median (A) median(listliste) median(liste) median (fe1d) median(xI, x2, ... ) Berechnet den Median Der Median ist der Eintrag mit Index round(n/2) einer sortierten Liste von n Objekten. 1st eine statistische Matrix gegeben. so ergibt diese Funktion den Median der Datenspalten, die den Schlilsseln keYl' keY2, ... entsprechen. 1st eine Matrix gegeben, so wird der Median einer jeden Spalte berechnet und das Ergebnis wird als Liste zuriickgegeben. Eine Liste von Listen derselben Uinge wird als Matrix behandelt. Es kann auch eine einfache Liste, ein Feld der Dimension eins oder eine Foige gegeben sein. median ( [7 , 2 , 1 , 9 1); --+ 2 dat := array([[x,y], [1,2], [7,8], [3,4ll): median (dat, x,y);--+ [3,4] Siehe auch: stats [averagel, stats [meanl. stats [model. stats[mode] mode (A, ugrenze, inkr) mode(listliste, ugrenze, inkr) mode(liste, ugrenze, inkr) mode (feld, ugrenze, inkr) mode (xl, x2, ... ) Berechnet den Modus Der Modus ist das am hliufigsten vorkornmende Element. 1st eine Matrix gegeben, so wird der Modus einer jeden Spalte berechnet und das Ergebnis wird als Liste zUriickgegeben. Eine Liste von Listen derselben Llinge wird alS Matrix betrachtet. Es kann auch ein Feld der Dimension eins. eine einfache Liste oder eine Foige gegeben sein. Teeten mehrere Modi auf, so werden sie alle in einer Liste zuriickgeliefert. Sind eine untere Grenze und ein Bereichsinkrement angegeben, so ist der Modus gleich dem Zahlbereich mit der maximalen Haufigkeit von Beobachtungen. mode ( [1, 2 , 2 , 4 , 4l ); --+ [2,4] mode([1,2,2,4,4],1,2); --+[1..3] Sieheauch:stats[average], stats [meanl. stats [medianl. stats[multregress] multregress(dat, glchg) multregress(dat, glchg, const) Vielfache Regression glchg ist eine Gleichung der Form Y [Xl, X2, ..• ], wobei Y und die Xi die Schlilsselnamen in dat sind. Die erste Form paBt die Daten an eine G1eichung der Form Y= aiXi an. Bei der zweiten Form ist auch ein konstanter Term zuliissig. Zuriickgegeben wird eine Liste der ai, wobei der konstante Term. falls er verlangt wurde, zuerst auftritt. Siehe auch: stats [linregressl. stats [projection], stats [regressionl.

=

E

stats[N] N(x) N(x, 11-, v) Die Normalverteilung 11- und v sind Mittel und Varianz der Verteilung. Ihre voreingestellten Werte sind 0 bzw. 1. Diese Funktion berechnet das Integral:

セQGB@

exp

v27rv N (2.5,4.1,7.3) ; stats [RandNorma1l.

278

(_(U-I1-)2)

-00

--+ .2768628314

du

2v

Siehe auch: stats [Q],

stats[median] - stats[RandNormal] stats[projection] projection (dat, glchg) projection (dat, glchg, const) Erzeugt eine Projektionsmatrix ¢ glchg ist eine Gleichung der Form y = [Xl, X2, ... j, wobei die Xi die Schliisselnamen in dat sind. Diese Funktion erzeugt eine Projektionsmatrix gemliB der Vorschrift X(xt X)-l X t Die Projektionsmatrix projiziert die aktuellen y-Werte auf die vorhergesagten y-Werte. 1st const aIs drittes Argument gegeben, wird die Projektionsmatrix so konstruiert, aIs ob sich eine Konstante in der Gleichung belinden wiirde. Siehe auch: stats [multregressl.

stats[putkey] putkey(A, key) Fiigt einen Schliissel zu einer Matrix hinzu ¢ key ist eine Liste von Namen, die den Schliissel fiir die Daten bilden. Diese Funktion fiigt den Schliissel aIs erste Reihe zu A hinzu, wobei die neue statistische Matrix zuriickgegeben wird. ¢ Siehe auch: stats [getkeyl, stats [removekeyl.

stats[Q] Q(x) WaIrrscheinlichkeiten einer StandardnormaIverteilung Diese Funktion lindet die WaIrrscheinIichkeit, daB X > X ist fiir eine StandardnormaIverteilung. ¢ Q (3); - - t .001349898032 Siehe auch: stats [Nl.

stats[RandBeta] RandBeta(a, b) RandBeta(a, b, n) Berechnet einen ZufaIlszahlengenerator fiir die Betaverteilung der Ordnung a und b ¢ n gibt an, bis auf wieviele Stellen genau das Ergebnis sein soli. Zuriickgegeben wird eine Prozedur. Siehe auch: stats [RandFdistl, stats [RandGammal.

stats[RandChiSquare] RandChiSquare(v) RandChiSquare(v, n) Erzeugt einen ZufaIlszahlengenerator fiir die Chi-Quadrat-Verteilung mit v Freiheitsgraden ¢ n gibt an, bis auf wieviele Stellen genau gerechnet werden soli. Zuriickgegeben wird eine Prozedur. ¢ Siehe auch: stats [ChiSquarel.

stats[RandExponential] RandExponential(u) RandExponential(u, n) Erzeugt einen Zufallszahlengenerator fiir die Exponentialverteilung, wobei das mittlere ZeitintervaIl zwischen den Ankiinften u betragt n gibt an, bis auf wieviele Stellen genau gerechnet werden soil. Zuriickgegeben wird eine Prozedur. Siehe auch: stats [RandPoissonl.

stats[RandFdist] RandFdist (vI, v2) RandFdist(vl, v2, n) Erzeugt einen ZufaIlszahIengenerator fiir die F- Verteilung mit VI und V2 Freiheitsgraden ¢ n gibt an, bis auf wieviele Stellen genau gerechnet werden soil. Zuriickgegeben wird eine Prozedur. ¢ Siehe auch: stats [Fdistl, stats [RandBetal, stats [RandGamrnal.

stats[RandGamma] RandGamrna(a) RandGamrna(a, n) Erzeugt einen ZufaIlszahlengenerator fiir die Gammaverteilung der Ordnung a ¢ n gibt an, bis auf wieviele Stellen genau gerechnet werden soli. Zuriickgegeben wird eine Prozedur. Siehe auch: stats [RandBetal, stats [RandFdistl.

stats[RandNonnal] RandNormal(p., 0') RandNormal(p., 0', n) Erzeugt einen ZufaIlszahlengenerator fiir die NormaIvereteilung mit Mittel p. und Standardabweichung 0' ¢ n gibt an, bis auf wieviele Stellen genau gerechnet werden soil. ZUriickgegeben wird eine Prozedur. Siehe auch: stats [N].

279

Alle Maple-Befehle stats[random) random[verteilungj () random[verteilungj (n) random[verteilungj (n, f) random[verteilungj (n, f, methodname) random [verteilungj (generator) random[verteilungj (generator[dj) Teilpaket zur Erzeugung von Zufallszahlen 0 Diese Teilpaket erzeugt Zufallszahlen gemiill vorgegebener Verteilungen. verteilung kann eine beliebige Verteilung aus den unter stats [statevalfj aufgelisteten Verteilungen sein. n ist die Anzahl der gewiinschten Zufallszahlen (die Voreinstellung ist I). fist eine Prozedur, welche Zufallszahlen zwischen 0 und 1 uniform erzeugt; defaul t kann filr die voreingestellte Methode spezifiziert werden. methodname benennt die Methode zur Transformation des uniformen Stroms. Die VoreinstellUng ist inverse (benutze die inverse kumulative Verteilungsfunktion). Andere Methoden sind buil tin (benutze eine spracheigene Methode; nur filr bestimmte Verteilungen moglich) oder auto (benutze eine spracheigene Methode, falls vorhanden). Die letzten beiden Schemata geben eine Prozedur zuriick, welche Zufallszahlen gemiill einer vorgegebenen Verteilung erzeugt. d gibt die Anzahl der gewiinschten Stellen an (dervoreingestellte Wert ist der Wert von Digi ts). Die Kurzformen dieser Funktionen konnen benutzt werden nachdem man with (stats) gefolgt von wi th (random) eingegeben hat. 0 Diese Teilpaket ist neu in Version 3. 0 random [normald [0, 1jj (2) ; -----> 1.175839568, -.5633641309 0 Siehe auch: stats [statevalf]' with.

stats[RandPoisson] RandPoisson().) RandPoisson()., n) Erzeugt einen Zufallszahlengenerator filr die Poissonverteilung, wobei ). die mittlere Anzahl der Vorkommnisse eines Ereignisses pro Zeitintervall ist 0 n gibt an, bis auf wieviele Stellen genau gerechnet werden soli. Zuriickgegeben wird eine Prozedur. 0 Siehe auch: stats[RandExponentialj. stats[RandStudentsT] RandStudentsT(v) RandStudentsT(v, n) Erzeugt einen Zufallszahlengenerator fiir die Students T- Verteilung mit v Freiheitsgraden 0 n gibt an, bis auf wieviele Stellen genau gerechnet werden soli. Zuriickgegeben wird eine Prozedur. o Siehe auch: stats [StudentsT]. stats[RandUniform] RandUniform(a .. b) RandUniform(a .. b, n) Erzeugt einen uniformen Zufallszahlengenerator ftir den Bereich [a, b) 0 n gibt an, bis auf wieviele Stellen genau gerechnet werden soli. Zuriickgegeben wird eine Prozedur. 0 Siehe auch: stats [Uniform]. stats[regression] regression(dat, glchg) Verallgemeinerte Regressionsroutine 0 glchg ist eine Gleichung in den Schltisselnamen der statistischen Matrix und einigen unbekannten Koeffizienten. Die Gleichung sollte in den unbekannten Koeffizienten linear sein. Diese Funktion bestimmt Werte filr die Koeffizienten und gibt eine Menge von Gleichungen zuriick, die diese Werte beschreiben. o dat := array([[y,x], [10,1], [50,2], [250,4]]): regression(dat, y=a*exp (x) +b); -----> {a = 4.467757980, b = 6.970513279} 0 Siehe auch: stats [linregress], stats [mu1tregress], stats [statp1ot]. stats[removekey] removekey(dat) Entfernt den Schliissel aus der statistischen Matrix 0 Diese Funktion entfernt die erste Reihe aus einer statistischen Matrix und gibt eine neue Matrix zuriick, die eine reine Datenmatrix ist. 0 Siehe auch: stats [getkey], stats [putkey]. stats[Rsquared] Rsquared(listel, 1iste2) Rsquared(dat, keYI, keY2) Quadrat des Korrelationskoeffizienten 0 Die Daten konnen als zwei Listen gegeben sein oder durch Angabe zweier Schltissel einer statistischen Matrix. Die Rsquared-Statistik ist der

280

stats[random] - stats [statevalf, idcdf] Anteil der Varianz in einer der Variablen, der durch die Variation in den anderen Variablen erkUirt werden kann. 0 Rsquared ( [l, 2 , 4] , [5, 6 , 7] ); ---+ セ@ 0 Siehe auch: stats [correlation], stats [variance].

stats[sdev] sdev(dat, keYl, keY2, ... ) sdev(A) sdev(listliste) sdev(feld) sdev(xl, X2, ... ) Standardabweichung 0 Gegeben sei eine statistische Matrix, dann berechnet diese Funktion die Standardabweichung der Datenspalten mit Schliisseln keYl' keY2' .... 1st eine Matrix gegeben, so wird die Standardabweichung einer jeden Spalte berechnet und das Ergebnis als Liste zuriickgegeben. Eine Liste von Listen derselben Uinge wird als Matrix behandelt. Es kann auch eine einfache Liste, ein Feld der Dimension eins oder eine Foige gegeben sein. 0 sdev (l, 3,5); ---+ 2 0 Siehe auch: stats [variance], stats [serr]. stats[serr] serr(dat, keYl, keY2, ... ) serr(A) serr (listliste) serr(v) serr(xl, x2, ... ) Standardfehler 0 Gegeben sei eine statistische Matrix, dann berechnet diese Funktion den Standardfehler der Datenspalten mit Schlllssei keYl' keY2' .... 1st eine Matrix gegeben, so wird der Standardfehler einer jeden Spalte berechnet und das Ergebnis wird als Liste zuriickgegeben. Eine Liste von Listen derse1ben Llinge wird als Matrix behandelt. Es kann auch eine einfache Liste, ein Vektor oder eine Folge gegeben sein. 0 serr ( [l, 7, 4] ); ---+ via 0 Siehe auch: stats [sdev], stats [variance].

stats[statevalf] Teilpaket zur numerischen Auswertung von Verteilungen 0 Viele Verteilungen werden sowohl von diesem Teilpaket als auch vom Teilpaket random unterstlltzt. Stetige Verteilungen: studentst[n] beta[nl, n2] fratio[nl' n2] logistic[a, b] cauchy[a, b] gamma[a, b] 10gnormal[JL, u] uniform[a, b] chisquare[n] laplaced[a, b] normald[JL, u] weibull[a, b] exponential[a, a] binomiald[n, p] hypergeometric[nl, n2, n] Diskrete Verteilungen: discreteuniform[a, b] negativebinomial[n, p] empirical[problist] poisson[JL] Die Kurzformen der Funktionen in diesem Paket konnen nach Eingabe von wi th (s ta teval f) benutzt werden, wenn man vorher wi th (5 ta ts) eingegeben hat. 0 Dieses Teilpaket ist neu in Version 3. 0 Siehe auch: stats [randoml. stats [statevalf, functionl. with. stats[statevalf, cdf] cdf[distributionl (ausdr) Berechnet den Wert der kumulativen Dichtefunktion der gegebenen stetigen Verteilung an der Stelle ausdr 0 cdf [uniform [0, 4]] (3); ---+.7500000000 stats[statevalf, dcdf] dcdf[distribution] (ausdr) Berechnet den Wert der kumulativen WalIrscheinlichkeitsfunktion der gegebenen diskreten VerteilunganderStelleausdr 0 dcdf[poisson[211 (3); ---+ .8571234607 stats[statevalf, icdf] icdf[distributionl (ausdr) Berechnet die Inverse der kumulativen Dichtefunktion der gegebenen stetigen Verteilung an der Stelle ausdr 0 icdf [uniform [0,411 (3/4); ---+ 3.000000000 stats[statevalf, idcdf] idcdf[distributionl (ausdr) Berechnet die Inverse der kumulativen WalIrscheinlichkeitsfunktion der gegebenen diskreten Verteilungan derStelle ausdr 0 idcdf [poisson[211 (0.857); ---+ 2.

281

AIle Maple-Befehle stats[statevalf, pdf] pdf [distributionl (ausdr) Berechnet den Wert der Wahrscheinlichkeitsdichtefunktion der gegebenen stetigen Verteilung an der Stelle ausdr pdf [uniform [0, 4ll (3); --+ .2500000000 stats[statevalf, pf] pf[distributionl (ausdr) Berechnet den Wert der Wahrscheinlichkeitsfunktion der gegebenen diskreten Verteilung an der Stelleausdr pf[poisson[2ll (3); --+ .1804470442 stats[statplot] statplot(dat, produkt) statplot(dat, glchg) Graphische Darstellung statistischer Resultate Das zweite Argument kann ein Produkt oder eine Gleichung sein. Ein Produkt wie z. B. x*y ergibt die Orientierung x gegen y flir den Graphen der Datenpunkte in dat. Eine Gleichung der Form y = f(x) bewirkt, daB f(x) und die Datenpunkte im selben Graphen gezeichnet werden. Dies ist zum graphischen Darstellen von Regressionsresultaten niitzlich. Siehe auch: stats [regressionl. stats[ statpiots1 Teilpaket zur Erzeugung statistischer Diagramme Die Kurzformen dieser Funktionen konnen benutzt werden, sobald man with(statplots) nach vorhergehender Eingabe von wi th (stats) eingegeben hat. Dieses Teilpaket ist neu in Version 3. Siehe auch: stats[statplots, functionl, with.

stats[statplots, boxplot] boxplot(data) boxplot[xwert, breitel (data) Zeichnet ein Schachteldiagramm, welches die Daten zusammenfaBt missing Daten werden ignoriert. Das Diagramm zeigt den Median, die ersten und dritten Quartile und AusreiBer. xwert ist die x-Koordinate des Mittelpunkts der Schachtel (voreingestellt ist 0) und breite ist die Breite der Schachtel (Voreinstellung 1). Siehe auch: stats [statplots, notchedboxl. stats[statplots, changecolour] changecolour[farbe] (plot) Verandert die Farbe eines Diagramms Diese Funktion kann auf ein beliebiges Diagramm angewandt werden. farbe kann ein beliebiger vordefinierter Name einer Farbe oder eine vom Benutzer definierte Farbe sein. Eine Liste von Farben befindet sich auf Seite 24. stats[statplots, histogram] histogram(data) Zeichnet ein Histogramm, welches die Daten zusammenfaBt Die Datenpunkte werden als senkrechte Linien gezeichnet; Datenklassen werden als Schachteln gezeichnet. Die Hohen entsprechen den Gewichten. missing Daten werden ignoriert. Siehe auch: stats[transform, tallyl, stats[transform, tallyinto]. stats[statplots, notchedbox] notchedbox(data) notchedbox[xwert, breitel (data) Zeichnet ein Kerbendiagramm, welches die Daten zusammenfaBt missing Daten werden ignoriert. Das Kerbendiagramm zeigt den Median, die ersten und dritten Quartile und AusreiBer. xwert ist die x-Koordinate des Mittelpunkts der Schachtel (voreingestellt ist 0) und breite ist die Breite der Schachtel (Voreinstellung I). Siehe auch: stats [statplots, boxplot]. stats[statplots, quantile] quantile (data) Tragt jeden Dateneintrag der Liste zusammen mit seinem Quantilwert auf 0 Klassen werden als Rechtecke gezeichnet; missing Daten werden ignoriert. Siehe auch: stats [describe, quantilel. stats[statplots, quantile2] quantile2(datal, data2) Quantil-Quantil-Diagramm Nachdem die Listen so transformiert wurden, daB sie dasselbe Gesamtgewicht haben, wird das Datenobjekt, welches dem Quantil t in iiste2 entspricht, gegen das Datenobjekt entsprechend Quantil t in liste! gezeichnet. Klassen gegen Klassen werden als Rechtecke dargestellt; missing Daten werden ignoriert. Siehe auch: stats [describe, quantile].

282

stats(statevalf, pdf] - stats(transform, apply] stats[statpiots, scatterld] scatterld(data) scatterld[stilname] (data) Zeichnet ein eindimensionales Steeudiageamm dee Daten 0 Klassen weeden als Linien gezeichnet; missing Daten weeden ignoriert. stilname beeintluBt die Darstellung dee Daten: projected (voeeingestellt) zeichnet aile Daten am selben y-Wert; stacked schichtet wiedeeholte Daten als Histogeamm auf; j it tered zeichnet die Daten an gesteeuten y- Werten. 0 Siehe auch: stats [statplots, scatter2d]. stats[statplots, scatter2d] scatter1d(data x , data y ) Zeichnet ein zweidimensionales Streudiageamm dee Daten 0 Entspeechende Elemente dee Listen weeden als Punkte, Linien odee Rechtecke gezeichnet. Punkte gegen Punkte werden als Punkte gezeichnet; Punkte gegen Klassen werden als Linien gezeichnet; Klassen gegen Klassen werden als Rechtecke gezeichnet. 0 Siehe auch: stats [statplots, scatter1d]. stats[statplots, symmetry] symmetry (data) Zeichnet ein Symmetriediagramm der Daten 0 Flir eine einfache Datenliste wird die Gerade y = x zusammen mit Punkten der Form (m - ai, an-HI - m) gezeichnet, wobei ai das ite Element der sortierten Daten ist und m der Median. missing Daten werden ignoriert; Klassen werden nicht behandelt. stats[statplots, xscale] xscale[r] (plot) Skaliert die x-Werte eines zweidimensionalen Diagramms mit dem Faktor r 0 r muB positiv sein. Diese Funktion kann auf ein beliebiges zweidimensionales Diagramm angewandt werden. o Siehe auch: stats [statp1ots, xshift], stats [statplots, xyexchange]. stats[statplots, xshift] xshift[r] (plot) Verschiebt die x-Werte eines zweidimensionalen Diagramms urn r 0 Diese Funktion kann auf ein beliebiges zweidimensionales Diagramm angewandt werden. 0 Siehe auch: stats[statplots, xscale], stats[statplots, xyexchange]. stats[statplots, xyexchange] xyexchange(plot) Vertauscht die x- und y-Koordinaten in einem zweidimensionalen Diagramm kann auf ein beliebiges zweidimensionales Diagramm angewandt werden. stats[statplots, xscale], stats[statplots, xshift].

0 0

Diese Funktion Siehe auch:

stats[StudentsT] StudentsT(F, n) StudentsT(x, n, area) Die Students T- Verteilung 0 n ist die Anzahl der Freiheitsgrade; es muB sich hierbei urn eine positive ganze Zahl handeln. Die erste Variante berechnet einen Wert x, so daB: F =

+ 1)/2) Jrnr(n/2)

r((n

I" (

1+

-00

Die zweite Form berechnet F zu gegebenem x. o StudentsT ( . 6172133998,2, area); stats[RandStudentsT].

0

u2 )

-

n

-(n+I)/2

du

StudentsT ( .7,2); ---> .6172133998 .6999999998 0 Siehe auch:

--->

stats[transform1 Teilpaket zur Datenmanipulation 0 Die Kurzformen dieser Funktionen konnen benutz! werden, sobald man wi th (trans form) nach vorhergehender Eingabe von wi th (s ta ts) eingegeben hat. 0 Dieses Teilpaket ist neu in Version 3. 0 Siehe auch: stats [transform, function], with. stats[transform, apply] apply [ f] (data) Wendet die Funktion f auf aile Elemente von data an 0 f sollte eine Funktion mit einem 1,3 .. 0 Siehe auch: Argument sein. 0 apply [t->t/2] ( [3,2,6 .. 8] ); ---> {セL@ stats [transform, mul tiapply].

4]

283

AIle Maple-Befehle stats[transform, c1assmark] classmark(data) Ersetzt Klassen durch ihr KlassenmerkmaI 0 Das KlassenmerkmaI einer Klasse ist ihr Mittelpunkt. Andere Daten bleiben unverlindert. 0 classmark ( [1. .5, 7, missing]);

-

[3,7, missing]

stats[transform, cumulativefrequency] cumulat ive frequency (data) Bereehnet die PartiaIsummen der Haufigkeiten der gegebenen Daten 0 ZUriiekgegeben wird eine Liste.o cumulativefrequency([3, Weight(4,2), missing]); -[1,3,4] 0 Siehe aueh: stats [transform, frequency]. stats[transform, deletemissing] deletemissing(data) Entferne fehlende Daten 0 Fehlende Daten werden dureh die Zeiehenkette missing identifiziert.o deletemissing( [3, Weight(4,2) , missing, 1. .2]); _ [3, Weight (4, 2), 1..2] stats[transform, divideby] divideby[num] (data) divideby[f] (data) Dividiert jedes Element dureh die gegebene Zahl oder besehreibende Statistik 0 1st das indizierte Element nieht numeriseh, so wird angenommen, daB es eine Prozedur des Teilpakets stats [describe] ist. In diesem FaIl ist der Divisor das Ergebnis von stats [describe, f] (data). missing Daten lindern sich nieht. 0 divideby[2] ( [3,2,6 .. 8] ); 1, 3 .. 0 Siehe aueh: stats [describe], stats [transform, apply], stats [transform, remove].

[!,

4]

stats[transform, frequency] frequency (data) Ersetze jeden Datenpunkt durch seine Haufigkeit 0 Es wird eine Liste zuriiekgegeben. o frequency([3, Weight(4,2) , missing]); -[1,2,1] oSieheaueh: stats [transform, cumulativefrequency]. stats[transform, moving] moving[n] (data) moving[n, f] (data) moving[n, f, gewichtliste] (data) Ersetze jedes Datenelement dureh eine Funktion seiner Naehbarelemente 0 Die besehreibende Statistik f wird auf jedes Datenelement und seine n Nachbam angewandt. Nur komplette Nachbarsehaften werden beriieksiehtigt, die zUriiekgegebene Liste hat aIso n - 1 Elemente weniger. missing Daten werden beriieksiehtigt. FaIls f weggelassen wird, wird mean angenommen. Es kann eine Liste von Zahlen angegeben werden, die Gewiehte flir die Elemente der Naehbarsehaft vorsehreiben. 0 moving [2] ( [1,3,7] ); [2,5] 0 Siehe aueh: stats [describe]. stats[transform, multiapply] multiapply[f] (listdata) Wendet die Funktion f tiber mehrere Listen statistiseher Daten hinweg an 0 Jede Teilliste muB dieselbe Anzahl von Elementen besitzen. Sind n Teillisten vorhanden, so sollte f eine Funktion von n Argumenten sein. Daten der ersten Liste werden aIs erstes Argument ftir f benutzt, Daten der zweiten Liste aIs zweites Argument und so weiter. 0 mul tiapply [ (s, t) ->2 *s*t] ( [ [2,5] , [3,4]]); [12,40] 0 Sieheaueh: stats[transform, apply]. stats[transform, remove] remove [num] (data) remove [ f] (data) Zieht die gegebene Zahl oder besehreibende Statistik von einem jeden Element ab 0 1st das indizierte Argument nieht numeriseh, so wird angenommen, daB es sieh urn eine Prozedur des Teilpakets stats [describe] hande1t. In diesem FaIl ist die abgezogene Zabl das Ergebnis von stats[describe, f] (data). missing Daten bleiben unverlindert. o remove [2] ([6, 1 .. 2, Weight(3,6)]); -(4,-1..0,Weight(1,6)] 0 Siehe aueh: stats [describe], stats [transform, apply], stats [transform, divideby].

284

stats [transform, c1assmark] - stats [variance] stats[transform, scaleweight] scaleweight[ausdr] (data) Multipliziere die Datengewichte mit dem gegebenen Ausdruck scaleweight [2] ( [6, 1 .. 2, Weight (3,6) ] ); セ@ [Weight(6, 2), Weight (1 .. 2,2), Weight(3, 12)] stats[transform, split] split [n] (data) Teile die Datenliste in n Listen desselben Gewiehts auf Zuriickgegeben wird eine Liste von Listen. sp1it[2]([l,2,3]); セ{QLw・ゥァィエHRI}S@ stats[transform, standardscore] standardscore(data) standardscore[n] (data) Ersetze jedes Datenobjekt dureh das Standardergebnis Das Standardergebnis von Objekt x ist (x - {L) / (T, wobei {L das Mittel und (T die Standardabweichung der Daten ist. 1st n gleich o (die Voreinstellung), so wird die Standardabweichung der gesamten Population berechnet; ist n gleich }, so wird sie flir eine Stichprobe berechnet. mi s sing Daten bleiben unverandert. standardscore( [3, weight (5, 2), 7]); セ@ [-v'2, WeighteD, 2), v'2] stats[transform, statsort] statsort(data) Sortiert die Daten in aufsteigender Ordnung missing Daten werden ans Ende gesetzt; Klassendiirfensichnichtiiberlappen. statsort([l, missing, 2 .. 4, 9, 1]); セ@ [1, 1,2 .. 4,9, missing] Siehe auch: sort. stats[transform, statvalue] statvalue(data) Setze das Gewicht eines jeden Datenobjekts auf I missing Daten bleiben unverandert. statvalue( [4, Weight(5 .. 6, 3), Weight (7,2)]); セ@ [4,5 .. 6,7] stats[transform, tally] tally (data) Gruppiere Daten mit demselben Wert zusammen tally ( [3, 4 .. 5, 3, 3, 7, 4 .. 5, 3]); セ@ [Weight(3, 4), 7, Weight( 4 .. 5,2)] stats[ transform, tallyinto] tallyinto(data, partition) ta11yinto[name] (data, partition) Ordne Daten in einem vorgegebenen Schema an partition ist eine Liste disjunkter KIlIl!len und Zahlen. missing Daten bleiben unverandert. 1st ein Name gegeben, so werden de Datenobjekte, die nieht zu einem Objekt des Sehemas passen, in einer Liste gesammelt und dieser Variablen zugewiesen. tallyinto ( [1,2,3,4], [1 .. 3,3 .. 5]); __ [Weight(l .. 3, 2), Weight(3 .. 5, 2)] stats[Uniform] Uniform(a, b) Die gleiehmlillige Verteilung Diese Funktion liefert eine Prozedur zur Berechnung der Siehe auch: gleichmlilligen Verteilung iiber [a, b]. uniform (1,5) (4.2); セ@ stats [RandUniform].

t

stats[variance] variance (dat, key}, keY2, ... ) variance (A) variance (listliste) variance (feld) variance (xl, x2, ... ) Bereehnet die Varianz Gegeben sei eine statistisehe Matrix, dann bereehnet diese Funktion die Varianz der Datenspalten mit den Sehliisseln key!, keY2' .... 1st eine Matrix gegeben, so wird die Varianz einer jeden Spalte bereehnet und das Ergebnis wird als Liste zuriickgegeben. Eine Liste von Listen derselben Lange wird als Matrix betrachtet. Es kann auch eine einfache Liste, ein Feld der Dimension eins oder eine Foige gegeben sein. var i anc e ( [1, 3 , 5] ); セ@ 4 Siehe aueh: stats [covariance], stats [sdev].

285

AIle Maple-Befehle status Globale Variable, welche Statusinformation zur Sitzung enthiilt 0 Ihr Wert ist eine Folge von acht Zahlen, weIche als Feld abgespeichert sind und entsprechend indiziert werden: s ta t us [ 1] Gesamtzahl der angeforderten Speicherplatzworte Gesamtzahl der tatsachlich in Anspruch genommenen Worte s ta tus [2] s ta tus [3] Anzahl der verbrauchten CPU-Sekunden s ta tus [4] Anzahl von Worten zwischen "bytes used" -Meldungen status [5] Anzahl von Worten zwischen Einsammlung unbenutzen Speicherplatzes status [6] Anzahl der Worte, die beim letzten Einsammeln zuriickgegeben wurden s ta tus [7] Anzahl der Worte, die nach dem letzten Einsammeln erhiiltIich sind Wie oft ist unbenutzter Speicherplatz eingesammelt worden s ta tus [ 8] Die Statusvariable wird auf den neuesten Stand gebracht, sobald eine Meldung der Form "bytes used" produziert wird und bei jeder Einsammlung von unbenutztem Speicherplatz. 0 Siehe auch: gc, time, words. stop Beendet eine Maple-Sitzung

0

Siehe auch: done, qui t.

student Das Student-Paket 0 Diese Paket ist eine Sammlung von Routinen, die so gestaltet sind, daB sie Probleme schrittweise liisen. 0 Siehe auch: student [ function], with. student[ changevar] changevar(glchg, ausdr) changevar(glchg, ausdr, var) changevar(glmenge, ausdr, varliste) Nimmt eine Variablentransformation vor 0 Diese Funktion fiihrt eine Variablentransformation fUr Integrale, Summen oder Grenzwerte durch. Das erste Argument ist eine Gleichung, die die neue Variable als Funktion der alten Variablen darstellt bzw. eine Menge soIcher Gleichungen, wenn es sich urn mehrfache Integrale handelt. Taucht in dem Ausdruck weder eine Summe noch ein Intergral oder Grenzwert auf, so verhiilt sich diese Funktion wie student [powsubs]. 0 Siehe auch: Int, Limi t, student [powsubs], student [Doubleint], student [TripleInt], subs, Sum. student[combine] combine (ausdr) combine (ausdr, name) Kombiniert mehrere Terme zu einem einzigen Term

0

Siehe auch: combine.

student[ completesquare] completesquare(poly) completesquare(poly, vars) Fuhrt eine quadratische Erglinzung durch 0 FUr ein univariates Polynom braucht der Variablenname nieht angegeben zu werden. FUr ein Polynom in mehreren Variablen soUte entweder ein Variablenname angegeben werden, oder es soUte eine Liste bzw. Menge von Variablennamen gegeben werden. In diesem Fall wird die Funktion nacheinander auf jede der Variablen angewandt. o completesquare(z'2+2*z); --->(z+1)2-1 student[convert] convert (ausdr, '@'); convert (ausdr, nested); Konvertiert die Kompositionsnotation fUr Funktionen 0 Die erste Variante wandelt eine geschachtelte Funktionskomposition in einen aquivalenten Ausdruck unter Benutzung des Kompositionsoperators @urn. Die zweite Variante bring! einen @-Ausdruck in geschachtelte Form. Diese Formen kiinnen nur nach Laden des s tuden t -Pakets benutzt werden. 0 convert ( f@g , nested); ---> f(g) 0 Siehe auch: @, convert. student[D] D( f)

D[i] (f) D[i, j, ... ](f) Differentialoperator 0 Siehe auch: D.

286

status - student[intparts1 student[ distance] distance (pktl, pkt2) distance (ausdrl' ausdr2) Bereehnet die Entfemung zweier Punkte in einer Dimension oder in hiiheren Dimension 0 Ein Punkt ist eine Liste von Werten. 1m Eindimensionalen kiinnen die reehteekigen Klammem weggelassen werden. 0 dis tance ( [0,0), [3,4)); --+ 5 0 Siehe aueh: geom3d[distance], geometry[distance], student [midpoint], student [type/Point].

student[Doubleint] Doubleint(ausdr, x, y) Doubleint(ausdr, x, y, name) Doubleint(ausdr, x=a .. b, y=c .. d) Starre Form der doppelten Integration 0 name identifziert ein Integrationsgebiet. Man benutze value, urn diese Funktion zur Auswertung zu zwingen, wenn beide Bereiehe angegeben sind. 0 Doubleint(f(x,y),y,x,S); --+ ffDf(x,y)dydx 0 Sieheauch: Int, student [Tripleint], value.

student[equate] equate (links, rechts) Erzeugt eine Menge von Gleiehungen aus Listen, Feldern und Tabellen 0 Diese Funktion konstruiert eine Menge von Gleiehungen, indem entspreehende Komponenten von links und reehts gleiehgesetzt werden. Diese Argumente kiinnen einfaehe Ausdriieke, Listen, Vektoren, Matrizen oder Tabellen von Ausdriieken sein. 1st rechts ein einfaeher Ausdsruek, so wird dieser als die reehte Seite aller Gleiehungen benutzt. 1st reehts nieht vorhanden, so wird 0 benutzt. o equate([a,b],l); --+{a=l,b=l}o equate([a,b]' [1,2]);--+ {a = 1, b = 2} 0 Siehe aueh: subs.

student[extrema] extrema (ausdr, einschr) extrema (ausdr, einschr, vars) extrema (ausdr, einschr, vars, name) Findet die relativen Extrema eines multivariaten Ausdrueks unter den gegebenen Einsehriinkungen mit Hilfe der Lagrangesehen Multiplikatoren 0 Diese Funktion ist mit extrema identiseh. 0 Siehe aueh: extrema.

student[Int] Int(ausdr, x) Int(ausdr, x = a .. b) Starre Integrationsfunktion 0 Siehe auch: Int.

student[integrand] integrand (ausdr) Ergibt den Intergranden eines unausgewerteten Integrals 0 Werden mehrere Intergranden oder gar keine Integranden in diesem Ausdruck gefunden, so ist das Ergebnis eine Menge. 0 integrand (Int (f (x) ,x) ); --+ f(x) 0 Siehe auch: Int, student [Doubleint], student [Tripleintl.

student[intercept] intercept(gll, gl2, {varl, var2}) intercept (gll) Berechnet die Schnittpunkte der beiden gegebenen Kurven 0 1st nur eine Gleichung gegeben, so wird der Schnitt mit der y-Achse zuriickgegeben. In diesem Fall muS die abhiingige Variable isoliert auf der linken Seite der Gleichung erscheinen. Ein drittes Argument gibt die Menge der Koordina= y= 0 Siehe auch: tenvariablen an. 0 intercept (x+y=l, 3 *x-y=l) ; --+ geom3d[ inter], geometry [inter], projgeom[ inter], student [slope].

{x

t,

t}

student[intparts] intparts(integral, u) Wendet die Methode der partiellen Integration auf ein unausgewertetes Integral an 0 integral hat die Form In t (u * dv, var). Zuriickgegeben wird u *v - In t (du *v, var). o intparts (Int (x*exp (x), x), x); --+ x eX - f eX dx 0 Siehe auch: student [changevar], student [powsubsl.

287

AIle Maple-Befehle student[isoiate] isolate(gl, ausdr) isolate(gl, ausdr, n) Bringt einen Teilausdruck auf die linke Seite einer Gleichung Diese Funktion l1ist gl nach ausdr auf, wobei Mchstens n Transformationsschritte durchgeflihrt werden. Diese Funktion ist mit isolate identisch. Siehe auch: isolate. student[leftbox] leftbox(ausdr, x=a .. b, n, options) Zeichnet eine Approximation an das Integral, wobei die linken Endpunkte die H1ihe des Rechtecks angeben Diese Funktion zeichnet die Kurve und eine Folge von Rechtecken, welche das bestimmte Integral des Ausdrucks tiber dem Intervall approximieren sollen. Die H1ihe eines jeden Rechtecks ist durch den Funktionswert am linken Endpunkt eines jeden Intervalls gegeben. n gibt die Anzahl der Rechtecke an (voreingestellt is! 4). Die gew1ihnlichen 2D-Plotoptionen k1innenbenutztwerden. leftbox(sqrt(2*x), x=O .. 5, 10); Sieheauch:plot, student [leftsum], student [middlebox], student [rightbox]. student[leftsum] leftsum(ausdr, x=a .. b) leftsum(ausdr, x=a .. b, n) Berechnet eine numerische Approximation an ein Integral unter Benutzung der linken Intervallendpunkte Das Ergebnis wird als starre Sum zuriickgegeben. n gibt die Anzahl der Intervalle an (voreingestellt ist 4). leftsum(sqrt(2*x), x=O .. 5, 10); --+ (t セ]ッ@ Vi) Siehe auch: student [leftbox], student [middlesum], student [rightsum], student [simpson], student [trapezoid], Sum. student[Limit] Limit (ausdr, var=a) Limit (ausdr, var=a, richtung) Limit (ausdr, mengel Limit (ausdr, menge, richtung) Starre Grenzwertfunktion Siehe auch: limi t, Limit, value. student[Lineint] Lineint(ausdr, y, x) Lineint(ausdr, y, x=a .. b) Lineint(ausdr, y=y(x), x) Lineint(ausdr, x, y, t) Lineint(ausdr, x=x(t), y=y(t)) Starre Form des Geradenintegrals Die unabhlingige Variable wird zuletzt angegeben. Ein Bereich ftir die letzte Variable kann angegeben werden; siehe zweites Schema. Man kann value benutzen, urn eine Auswertung dieser Funktion zu erzwingen. Diese Funktion ist neu in Version 3. Lineint (f (x,y) ,x,y, t);

--+

jf(x(t),y(t))

(ftx(t))2

+ (fty(t)) 2 dt

Siehe auch: Int, value.

student[makeproc] makeproc(ausdr, x) makeproc ( [xl, Yll. [x2, Y2]) makeproc([x, Y], slope=m) Wandelt einen Ausdruck in eine Maple-Prozedur urn Die erste Form ergibt eine Funktion, die ausdr ergibt, wenn sie an der Stelle x ausgewertet wird. Die zweite Form gibt eine Funktion zuriick, die Punkte auf der Verbindungsgeraden der beiden Punkte berechnet. Die dritte Form ergibt eine Funktion, die Punkte auf der Geraden mit Steigung m berechnet, die durch den gegebenen Punkt verlliuft. makeproc ( [0,3], slope=2); --+ x -+ 2 x + 3 Siehe auch: unapply. student[maximize] maximize (ausdr) maximize (ausdr, vars) Berechnet das Maximum Diese Funktion stimmt mit maximize tiberein. Siehe auch: maximize.

288

student[isolate] - student[rightsum] student[middleboxl middlebox(ausdr, x=a .. b, n, options) Zeichnet eine Approximation an ein Intergral, wobei die mitteleren Punkte als Hohen benutzt werden 0 Diese Funktion zeichnet die Kurve und eine Foige von Rechtecken, we1che das bestimmte Integral des Ausdrucks tiber dem Intervall approximieren. Die Hohe eines jeden Rechtecks wird durch den Funktionswert am Mittelpunkt eines jeden Intervalls bestimmt. n gibt die Anzahl der Rechtecke an (voreingestellt ist 4). Die gewohnlichen 2D-Plotoptionen konnen benutzt werden. 0 middlebox(sqrt (2*x), x=O .. 5, 10); 0 Siehe auch: plot, student [leftbox], student [middlesum], student [rightbox]. student[middlesum] middlesum(ausdr, x=a .. b) middlesum(ausdr, x=a .. b, n) Berechnet eine numerische Approximation an ein Integral, wobei die Mittelpunkte der Intervalle benutzt werden Das Ergebnis wird als starre Sum zUriickgeliefert. n gibt die Anzahl der Intervalle an (voreingestellt ist 4). 0 evalf (middlesum (sqrt (2 *x), x=O .. 5 , 10) ); ---> 10.56807645 0 Siehe auch: student [leftsum], student [middlebox], student [rightsum], student [simpson], student [trapezoid], Sum. student[midpoint] midpoint (pktl' pkt2) midpoint (ausdrl, ausdr2) Berechnet den Mittelpunkt des durch die beiden Punkte gegebenen Geradensegments Die Argumente sollten entweder Listen der Lange 2 oder Ausdriicke sein. o midpoint ( [1,3] , [5,7] ); ---> [3,5) 0 Siehe aueh: geom3d [midpoint] , geometry [midpoint] , proj geom [midpoint] , student [distance], student [type/Point]. student[minimize] minimize (ausdr) minimize (ausdr, vars) Bereehnet das Minimum Diese Funktion stimmt mit minimize tiberein. minimize.

0

Siehe aueh:

student[powsubs] powsubs(gl, ausdr) powsubs(gll, gl2, ... , ausdr) Ersetzt die Faktoren eines Ausdrueks Diese Funktion ersetzt ein jedes Vorkommen der linken Seite der Gleiehung als Teilausdruek von ausdr dureh die reehte Seite der Gieiehung. Werden mehrere Ersetzungsvorschriften angegeben, so werden diese nieht gleiehzeitig sondem naeheinander abgearbeitet. Diese Funktion unterseheidet sich von subs darin, daB sie in bezug auf a1gebraisehe Faktoren und nieht in bezug auf zugrundeJiegende Datenstrukturen definiert ist. powsubs(x+1=z, In=log10, In{(x+1)A2+3)); --->loglO(z2+3) Siehe aueh: asubs, subs. student[rightbox] rightbox(ausdr, x=a .. b, n, options) Zeichnet eine Approximation an ein Intergral, wobei die reehten Endpunkte a1s Hohen benutzt werden 0 Diese Funktion zeiehnet die Kurve und eine Folge von Reehtecken, we1che das bestimmte Integral des Ausdrueks tiber dem Intervall approximieren. Die Hohe eines jeden Reehtecks wird dureh den Funktionswert am reehten Endpunkt eines jeden Intervalls gegeben. n gibt die Anzahl der Reehtecke an (voreingestellt ist 4). Die gewohnliehen 2D-Plotoptionen konnen benutzt werden. rightbox(sqrt(2*x), x=0 .. 5, 10); Sieheaueh: plot, student [leftbox], student [middlebox], student [rightsum]. student[rightsum] rightsum(ausdr, x=a .. b) rightsum(ausdr, x=a .. b, n) Bereehnet eine numerische Approximation an ein Integral, wobei die reehten Intervallendpunkte benutzt werden Das Ergebnis ist eine starre Sum. n gibt die Anzahl der Intervalle an Vi) (voreingestellt ist 4). leftsum (sqrt (2 *x), x=O .. 5, 10); ---> (t iZセQ@ Siehe aueh: student [1eftsum], student [middlesum], student [rightbox], student [simpson], student [trapezoid], Sum.

289

AIle MapJe-Befehle student[showtangent] showtangent(ausdr, var = a) Zeichnet eine Funktion und ihre Tangente Diese Funktion erzeugt einen Graphen der Funktion, weIche durch den Ausdruck ausdr in der Variablen var definiert ist zusammen mit ihrer Tangente imPunktvar=a. showtangent(x 2+8, x=2); Siehe auch: plot. A

student[simpson] simpson (ausdr, x=a .. b) simpson(ausdr, x=a .. b, n) Berechnet eine numerische Approximation an ein Integral mit der Simpson·Regel Das Ergebnis ist eine starre Sum. n gibt die Anzahl der Intervalle an (voreingesteIIt ist 4). evalf (simpson (sqrt (2 *x), x=O .. 5, 10)); ---+ 10.50033649 Siehe auch: student [leftsum], student [middlesum], student [rightsum], student [trapezoid], Sum. student[slope] slope(gl) slope(gl, y, x) slope(gl, y(x)) slope(pktl, p kt2) Berechnet die Steigung der Geraden, die entweder durch eine Gleichung oder durch ein Paar von zweidimensionalen Punkten gegeben ist y ist die abhangige Variable und x ist die unabhangige Variable. Bei der ersten Form muG die Gleichung von der Form y = f(x) sein und y wird aIs abhangige Variable angesehen. slope(9*x-3*y=1,y(x)); ---+ 3 Siehe auch: student [intersect], student [type/Point]. student[Sum] Sum (ausdr, var) Sum(ausdr, var=m .. n) Sum(ausdr, var=a) Starre Summationsfunktion Siehe auch: sum, Sum, value. student[trapezoid] trapezoid (ausdr, x=a .. b) trapezoid (ausdr, x=a .. b, n) Berechnet eine numerische Approximation an ein Integral mit Hilfe der TrapezregeJ Das Ergebnis ist eine starre Sum. n gibt die Anzahl der Intervalle an (voreingesteIIt ist 4). trapezoid(sqrt(2*x), x=O .. 5, 10); ---+ Hセl]Q@ Vi) + tv'5V2 Siehe auch: student [leftsum], student [middlesum], student [rightsum], student [simpson], Sum. student[Tripleint] Tripleint(ausdr, x, y, z) Tripleint(ausdr, x, y, z, name) Tripleint(ausdr, x = a .. b, y = c .. d, z = q .. r) Starre Form der dreifachen Integration name identifiziert ein Integrationsgebiet. Man benutze value, urn eine Auswertung zu erzwingen, wenn aile Bereiche gegeben sind. Tripleint (x*y*z, x=O" 1, y=O .. l, z=O .. l); ---+ f01 f01 f01 XY z dx dy dz Siehe auch: Int, student [Doubleint], value. student[typeIPoint] type (pkt, point) type (pkt, 'student/Point') Priift, ob es sich urn den Typ Punkt handelt Ein Punkt ist als eine Liste von Koordinatenwerten definiert (wie [a, b, c] ). Die Lange der Liste bestimmt die Dimension des Raumes. Die Kurzform des Typenchecks ist nur zum interaktiven Gebrauch erhliltlich, nachdem das student-Paket geladen wurde. In Prozeduren muG der voIIstandige Typenname 'student/Point' benutzt werden. type([1,2], Point); ---+true Sieheauch:student[distancel, student [midpoint 1, student [slope], type/point. student[value] value (ausdr) Wertet starre Funktionen aus Diese Funktion stimmt mit value iiberein. Siehe auch: value.

290

student[simpson] - Svd sturmseq sturmseq(poly, var) Berechnet eine Stunnsche Kette f1ir das Polynom poly in der Variablen var Diese Funktion gibt eine Liste von Polynomen zuriick. Man muB erst readlib (sturm) eingeben, bevor man diesen Befehl benutzen kann. Siehe auch: sturm. Subres Subres(polYl, polY2, var) Folge der Teilresultanten polynomiaIer Reste Wird diese Funktion zusarnmen mit evala benutzt, so berechnet sie die Folge der Teilresultanten der Reste von poly! und POIY2. Es wird eine Tabelle von Polynomen zuriickgegeben, die durch den Grad indiziert wird. Siehe auch: Resultant. subs subs (glchgl, glchg2, ... , ausdr) subs (glchgen, ausdr) Ersetzt Teilausdriicke in Ausdriicken Jede Gleichung stellt eine Substitutionsvorschrift dar. Jedes Auftreten der linken Seite einer Gleichung in ausdr wird durch die rechte Seite der Gleichung ersetzt. Eine Folge von Substitutionen wird nacheinander, eine Liste bzw. Menge von Substitutionen wird gleichzeitig ausgeflihrt. subs (x+Y=z, (x+y) セTI[@ --+ z4 Siehe auch: asubs, op, student [powsubs 1, subsop, trigsubs. subsop subsop(glchgl, glchg2, ... , ausdr) Ersetzt die angegebenen Operanden in Ausdriicken Jede Gleichung ist von der Fonn n=ex, wobei eine Ersetzungsrege1 fUr den nten Operanden gegeben ist. subsop (1=s+1, 2=t セRL@ x+y); --+ S + 1 + t 2 Siehe auch: subs, op. substring substring (kette, m .. n) Zieht eine Teilkette aus einer Zeichenkette heraus Die Teilkette beginnt mit dem mten und endetmitdemntenZeichen. substring (abcde, 3 .. 6); --+cde Sieheauch: cat, length, search. sum sum (ausdr, var) sum (ausdr, var=m .. n) sum (ausdr, var=a) Bestimmte und unbestimmte Summen Die erste Variante berechnet die unbestimmte Summe von ausdr bezilglich der Variablen var. Die zweite Fonn berechnet die bestimmte Summe tiber dem Bereich der ganzen Zahlen von m bis n. Die dritte Fonn berechnet die Summe tiber aIle k); --+ Wurzeln eines Polynoms, wobei a ein RootOf-Ausdruck is!. sum ( VJォセRL@ 2 k 3 - 3 k 2 + k sum (2 セョL@ n=O .. 4); --+ 31 Siehe auch: Sum.

Sum Sum (ausdr, var) Sum (ausdr, var=m .. n} Sum (ausdr, var=a} Starre Summationsfunktion Diese Funktion ergibt den unausgewerteten Summationsausdruck. Siehe auch: sum, value. surd surd (ausdr, n} Berechnet die nte reelle Wurzel des reellen Ausdrucks ausdr Diese Funktion ist neu in Version 3. Man muB erst read lib (surd) eingeben, bevor man diesen Befehl benutzen kann. surd ( 5 , 2); --+ V5 Svd Svd(A} Svd(A, nameL, left} Svd(A, narneR, right} Svd(A, narneL, nameR} Berechnet die SinguUirwerte und -vektoren einer numerischen Matrix Die erste Fonn ergibt ein 1 X min(n, m) Feld mit den Singullirwerten von A, einer n x m numerischen Matrix. 1st narneL vorhanden, so werden diesem die Iinken Singullirvektoren zugewiesen, narneR werden die rechten Singullirvektoren zugewiesen. Dies ist eine starre Funktion. Man benutze eval f, urn die Singullirwerte zu berechnen. Siehe auch: linalg [s ingularvals 1.

291

AIle Maple-Befehle symmdiff symmdiff(mengel, menge2} symmdiff(mengel, menge2, menge3, ... } Die Funktion ftir symmetrische Differenzen von Mengen Die erste Form ergibt die Menge von Elementen, die in genau einer der beiden Mengen vorkommen: (mengel U menge2) (mengel n menge2) Allgemeiner gilt die folgende Regel: ein Element ist in der zuruekgelieferten Menge enthalten genau dann, wenn es in einer ungeraden Anzahl der gegebenen Mengen vorkommt. Man muG erst readl ib ( symmdi f f) eingeben, bevor man diesen Befehl benutzen kann. symmdiff({a,b},{b,c}}; --->{a,c} Sieheaueh:intersect, minus, union.

symmetric Die symmetrisehe Indexfunktion ftir Felder und Tabellen Diese Indexfunktion ordnet die Komponenten eines Index in eine systembestimmten kanonisehen Ordnung an. Eine haufige Anwendung sind symmetrisehe Matrizen, wo das (i, j)te Element dem (j, i)ten Element gleicht. Siehe aueh: antisymmetric, array, geometry [symmetric], table. system system(befehl) Ruft einen Befehl des zugrundeliegenden Betriebssystems auf Das Ergebnis ist der Rtickgabewert oder der zurtickgegebene Status des ausgefiihrten Befehls. Diese Operation wird von einigen Plattformen nieht unterstiitzt. Siehe aueh: !. table table (indexfkt, liste} Erzeugt eine Tabelle Diese Funktion erzeugt explizit eine Tabelle. indexfkt benennt eine Indexfunktion ftir die Tabelle. Die spraeheigenen Indexfunktionen sind antisymmetric, diagonal, identity, sparse und symmetric. Die Elemente von liste spezifizieren die Anfansgwerte. Diese konnen Gleiehungen der Form index=eintrag oder einfaehe Ausdrueke sein; in diesem Fall werden die entspreehenden Indizes als 1,2, 3 usw. angenommen. Beide Argumente sind optional. Eine Tabelle kann aueh implizit dureh Zuweisung an einen Indexnamen erzeugt werden. Siehe aueh: antisymmetric, array, copy, diagonal, entries, identi ty, indices, sparse, symmetric. tan tan(z} Die Tangensfunktion Siehe auch: arctan.

tanh tanh(z} Die hyperbolisehe Tangensfunktion Siehe aueh: arc tanh. taylor taylor (ausdr, var=a, n) taylor (ausdr, var, n) Taylorreihenentwicklung Diese Funktion berechnet die Taylorreihenentwieklung von ausdr beztiglieh der Variablen var bis zur Ordnung n und zwar urn den Punkt a. 1st a nieht vorhanden, so wird vaT = 0 angenommen. taylor (exp (x), x=O, 4); ---> 1 + x + tx2 + セクS@ + 0 (x4) Siehe aueh: coeftayl, mtaylor, numapprox [laurent], series, type/taylor.

tcoeff tcoeff(poly) tcoeff(poly, vars) tcoeff(poly, vars, name) Naehfolgender Koeffizient eines multivariaten Polynoms vars kann eine einzelne Unbestimmte oder eine Liste bzw. Menge von Unbestimmten sein. 1st vars nieht spezifiziert, so werden aile Unbestimmten von poly benutzt. Auf das Polynom muG vorher collect beztiglieh der geeigneten Variablen angewandt worden sein. Wird ein Name als drittes Argument angegeben, so wird diesem der naehfolgende Term von poly zugewiesen. tcoef f (2 *x" 3 - 4); --->-4 Siehe aueh: coeff, coeffs, collect, indets, lcoeff, ldegree. Tcoeff Tcoeff(poly) Starrer folgender Koeffizient Wird diese Funktion zusammen mit modpl benutzt, so berechnet sie den folgenden Koeffizienten eines univariaten Polynoms tiber einem gegebenen Definitionsbereich. Siehe aueh: Coeff, Lcoeff, tcoeff.

292

symmdiff- thaw tensor Eine Sammlung von Prozeduren zur Berechnung von Kriimmungstensoren in einer Koordinatenbasis Die globaIe Variable Ndim kontrolliert die Anzahl der Dimensionen. Der Anfangswert ist 4. Die folgenden Prozeduren stehen zur Verfiigung. Sie geben aIle NULL zuriick. invmetricO kontravarianter metrischer Tensor hij dlmetricO erste partielle Ableitungen des kovarianten metrischen Tensors gijk d2metricO zweite partiellen Ableitungen des kovarianten metrischen Tensors gijkl Christoffel-Symbole der ersten Art cijk Christoffell 0 Christoffel20 Christoffel-Symbole der zweiten Art Cijk RiemannO kovariante Komponenten des Riemann-Tensors Rijkl RicciO kovariante Komponenten des Ricci-Tensors Rij RicciscaIar() Ricci-SkaIar R EinsteinO kovariante Komponenten des Einstein-Tensors Gij WeylO kovariante Komponenten des Weyl-Tensors cijkl tensor() ruft aIle obigen Prozeduren auf display(name) druckt die von null verschiedenen Komponenten des benannten Tensors displayO druckt die von null verschiedenen Komponenten aIler Tensoren Die dritte SpaIte benennt die globaIen Variablen, denen die Ergebnisse einer jeden Berechnung zugewiesen werden. Man muB erst readl ib (tensor) aufrufen, bevor man diese Funktionen benutzen kann. Siehe auch: cartan, debever.

testeq testeq(ausdrl = ausdr2) testeq(ausdrl. ausdr2) tes teq (ausdq) Testet die AquivaIenz von Ausdriicken wahrscheinlichkeitstheoretisch Das Ergebnis false ist immer richtig; das Ergebnis true kann mit einer geringen Wahrscheinlichkeit inkorrekt sein. 1st der zweite Ausdruck nicht vorhanden, so wird angenommen, daB es sich urn 0 handeln soli. FAIL wird zuriickgegeben, wenn der Ausdruck nicht in der Klasse der behandelbaren Ausdriicke liegt oder wenn ein geeigneter Modulus nieht gefunden werde konnte. testeq (sin (2 *t) • 2*sin(t) *cos (t»; ---+ true

testfloat testfloat(ausdrl. ausdr2' grenze, options) Vergleieht Ausdriicke mit Gleitkommazahlen Diese Funktion verifiziert, daB die im berechneten Ausdruck ausdrl vorkommenden Gleitkommazahlen sich innerhaIb eines gegebenen Bereichs der entsprechenden Werte des Referenzausdrucks ausdr2 befinden. grenze ist eine in ..ulps" angegebenene nichtnegative reelle Zah\. Ein ..ulp" relativ zu einer Zahl s ist eine Einheit in der nten signifikanten Stelle von s, wobei n der Wert von Digits ist. ZurUckgegeben wird eine Liste von Testergebnissen. Die zur Verfiigung stehenden Optionen sind: digi ts=n benutze diesen Wert fUr die Stellen model=l behandle komplexe Zahlen aIs einfache Zahlen (voreingestellt) model=2 behandle komplexe Zahlen als Paare ree1ler Zahlen test=l benutze einen relativen Fehlertest (voreingestellt) test=2 benutze einen absoluten Fehlertest Man muB erst readlib (testf1oat) eingeben, bevor man diesen Befehl benutzen kann . test float ( [2.1,3.2], [2,3], 1, digits=2); ---+ [true, [/a/se, 2., u/psll Siehe auch: comparray, fnormal.

Testzero Umgebungsvariable Ihr Wert ist eine Prozedur zum Testen eines Ausdrucks auf Null. Der Anfangswertistproc() eva1b(normal(args[1]) = 0) end

TEXT TEXT(kettel, kette2, ... ) Druckt eine Folge von Zeichenketten aus Jede Zeichenkette wird im Prettyprint-Modus auf einer eigenen Zeile ausgegeben. Wird diese Funktion unter der Arbeitsblatt-Schnittstelle aufgerufen, so spielt ein eigenes Fenster das TEXT-Objekt vor. Siehe auch: type/TEXT. thaw thaw (var) Taut einen als Variable eingefrorenen Ausdruck wieder auf ZUriickgegeben wird der urspriingliche Ausdruck. Man muB erst readlib (freeze) eingeben, bevor man diesen Befehl benutzen kann. Siehe auch: freeze.

293

..

AIle Maple-Befehle thiele thiele(xliste, yliste, ausdr) Thie1es Formel zur Interpolation mit Kettenbriichen xliste ist eine Liste unterschiedlicher x-Werte und yliste eine Liste unterschiedlicher y-Werte. Diese Funktion berechnet eine rationale Funktion in Kettenbruchdarstellung, welche die Punkte (x[I],y[IJ), ... , (x[n],y[nJ) interpoliert. Sie gibt den Wert dieser Funktion an ausdr zuriick, welcher oft ein Variablenname ist. Man muB erst readlib (thiele) eingeben, bevor man diesen Befehl benutzen kann. thiele ( [1,2,3] , [3,4,1] ,x); ----> 3 5x _-:/x Siehe auch: interp, sinterp.

+

time time( ) Gesamte CPU-Zeit, die seit dem Start der Sitzung verbraucht wurde Diese Funktion ergibt eine Gleitkommazahl, welche den CPU-Verbrauch in Sekunden angibt. Diese Zahl wird als status [3] abgespeichert. Siehe auch: profile, showtime, status, words. totorder Das Paket zur totalen Anordnung von Namen Die Funktionen in diesem Paket miissen in Version 2 erst mit wi th geladen werden, bevor man sie benutzen kann. Siehe auch: totorder [ function], with.

totorder[forget] forget(rell' rel2' ... ) Entfernt Beziehungen innerhalb einerOrdnung Siehe auch: forget, totorder [tas sume] .

totorder[init] init () Initialisiert die totale Ordnung, wobei aile vorher definierten Ordnungen vergessen werden Siehe auch: totorder [forget] .

totorder[ ordering] ordering ( ) Druckt die gegenwiirtige totale Ordnung aus Siehe auch: totorder [tassume] .

totorder[ tassume] tassume(re11, rel2, ... ) Definiert eine Ordnung auf einer Folge von Namen tas sume (a x2 Sieheauch: expand, subs.

294

thiele-type/'**' traperror traperror(ausdr) traperror(ausdr!, ausdr2' 000) Deckt eine Fehlersituation auf 0 Tritt ein Fehler wahrend der Auswertung oder Vereinfachung des Ausdrucks bzwo der Ausdriicke auf, so gibt diese Funktion eine Zeichenkette zuriick, welche den ersten aufgetretenen Fehler spezifiziert. Tritt kein Fehler auf, wird das Ergebnis des Ausdruck zuriickgegeben. Eine Miiglichkeit, einen Fehler in einer Prozedur aufzudecken, besteht darin, das Ergebnis von testerror mit der globalen Variablen lasterror zu vergleichen. 0 Siehe auch: ERROR, lasterror.

trigsubs trigsubs(ausdr) trigsubs(glchg) trigsubs(glchg, ausdr) trigsubs(O) Verwaltet eine Tabelle giiltiger trigonometrischer Identitaten 0 Die erste Form ergibt eine Liste trigonometrischer Ausdriicke, welche gleich ausdr sind. Die zweite Form testet, ob sich die Identitat glchg in der Tabelle befindet. Sie gibt entweder die Zeichenkette 'found' oder 'not found' zuriick. Die dritte Version wendet glchg auf ausdr an, falls glchg sich in der Tabelle befindet. Die letzte Form ergibt die Menge der trigsubs bekannten Funktionen. 0 Man muB erst readlib (trigsubs) eingeben, bevor man diesen Befehl benutzen kann. 0 trigsubs(sin(t+Pi/2) = cos(t)); --->'found' oSieheauch:subs. true Boolsche Konstante

trunc trunc(z) trunc(l, z) Rundet z auf die 0 am nachsten liegende ganze Zahl auf (bzw. ab), wenn z reell ist 0 Fiir reelle z ist dies der ganzahlige Teil von z. Fiir komplexe z wird die Funktion sowohl auf die Real- als auch auf die Imaginlirteile angewandt. Die zweite Form ergibt die erste Ableitung der Rundungsfunktion iiberall dort, wo sie definiert ist. 0 trunc ( 5 . 1 + 5 09 * I); ---> 5 + 5 I 0 Siehe auch: cei 1, floor, frac, round.

tutorial tutorial () tutorial(n) On-Line-Lemprogramm zur Einfiihrung in Maple an, mit dem man beginnen will.

0

Das optionale Argument n gibt das Kapitel

type type (ausdr, typ) type (ausdr, typmenge) Funktion zum Typencheck 0 Diese Funktion ergibt true falls ausdr vom Typ typ ist und false sonst. 1st das zweite Argument eine Menge von Typnamen, so wird true zuriickgegeben, falls ausdr von einem Typ ist, der in der Menge vorkommt. 0 Siehe auch: convert, has type, type/name, whattype.

type/'!' type (ausdr, ' ! ' ) Stellt fest, ob es sich urn einen Fakultatsausdruck handelt 0 Der Typ eines arithmetischen Ausdrucks ist definiert als die letzte Operation, die von Maple ausgefiihrt werden wiirde, falls der vollstandig entwickelte Ausdruck ausgewertet werden sollte. type/'*' type (ausdr, ' *, ) Stellt fest, ob es sich urn einen Multiplikations- oder Divisionsausdruck handelt 0 Der Typ eines arithmetischen Ausdrucks ist definiert als die letzte Operation, die von Maple ausgefiihrt werden wiirde, falls der vollstandig entwickelte Ausdruck ausgewertet werden sollte. 0 type (a *b+ 1, , * , ); ---> false type/'**' type (ausdr , ' * * , ) Stellt fest, ob es sich urn einen Exponentialausdruck handelt o type (a'b, '**'); --->true

0

Dies ist aquivalent zu type / ' , , .

295



AIle Maple-Befehle typel'+' type (ausdr, '+') Stellt fest, ob es sich urn einen Additions- oder Subtraktionsausdruck handelt ¢ Der Typ eines arithmetischen Ausdrucks ist definiert als die letzte Operation, die von Maple ausgefUbrt werden wiirde, falls der vollstlindig entwickelte Ausdruck ausgewertet werden sollte. ¢ type (a *b-l, '+'); -true typel,A, type (ausdr, ,A,) Stellt fest, ob es sich urn einen Ausdruck yom Typ ,A, handelt ¢ Der Typ eines arithmetischen Ausdrucks ist definiert als die letzte Operation, die von Maple ausgefUbrt werden wiirde, falls der vollstlindig entwickelte Ausdruck ausgewertet werden sollte. Dies ist liquivalent zu type / ' * * , . type (a** (b+l), ,A,); _ true ¢ typel'.' type (ausdr, '.') Stellt fest, ob es sich urn einen Verkettungsausdruck handelt typel' .. ' type (ausdr, ' .. ') Stellt fest, ob es sich urn einen Bereichsausdruck handelt ¢ type (a .. b, ' .. '); true typel'=' type (ausdr, '=') Stellt fest, ob es sich umeine Gleichung handelt

¢

typel'x'2, operator); Siehe auch: type/procedure.

--+

true

type/'or' type (ausdr, 'or') Testetaufeinenor-Ausdruck Sieheauch:type/'and', type/logical, type/'not'. typeIPLOT type (ausdr, PLOT) Testet auf eine PLOT-Datenstruktur Bine PLOT-Datenstruktur wird von einem zweidimensionalen Plotbefehl wie z.B. plot erzeugt. Siehe auch: plot, type/PLOT3D. typeIPLOT3D type (ausdr, PLOT3D) Testet auf eine PLOT3D-Datenstruktur Dreidimensionale Plotbefehle wie z. B. plot3d erzeugen soleh eine PLoT3D-Datenstruktur. Siehe auch: plot3d, type/PLOT. type/point type (ausdr, point) Testet auf einen Punkt Diese Funktion ergibt true, falls ausdr eine Gleichung mit einem Namen auf der linken und einem algebraischen Ausdruck auf der reehten Seite ist, bzw. falls ausdr eine Menge soleher Gleichungen darstellt. type ({a=x+y, b=l), point); --+ true Siehe auch: student [type/Point J.

300

type/negative - type/radfun type/polynom type (ausdr, polynom) type (ausdr, polynom(typ)) type (ausdr, polynom(typ, vars)) Testet auf ein Polynom typ benennt den Typen des Definitionsbereichs filr die Koeffizienten und vars benennt die Unbestimmten. vars kann eine einfache Variable oder eine Menge bzw. Liste von Variablen sein. type (x"5+2*ln (y), polynom (anything, x) ); ----> true Siehe auch: type/cubic, type/linear, type/monomial, type/quadratic, type/quartic, type/ratpoly. type/posint type (ausdr, posint) Testet auf eine positive ganze Zahl Siehe auch: type/integer, type/positive, type/negint, type/nonnegint. type/positive type (ausdr, positive) Testet auf eine positive Zahl Siehe auch: type/negative, type/no=eg, type/numeric, type/posint. type/primeint type (ausdr, primeint) Stochastischer Test auf Primzahlen Diese Funktion ergibt true, falls ausdr eine ganze Zabl ist und isprime (ausdr) true ergibt, sonstergibt sichfalse. type (211, primeint); ----> true Siehe auch: isprime, type/integer. type/procedure type (ausdr, procedure) Testet auf eine Prozedur type (type, procedure); type/operator.

---->

true Siehe auch:

type/protected type (ausdr, protected) Priift, ob ausdr ein geschiltzter Name ist Die meisten Systemnamen sind von sich aus schon geschiitzt. Diese Option ist neu in Version 3. Siehe auch: protect, unprotect. type/quadratic type (ausdr, quadratic) type (ausdr, quadratic(vars)) Stellt fest, ob es sich urn eine quadratische Funktion in den angegebenen Variablen handelt vars kann eine einfache Variable oder eine Liste bzw. Menge von Variablen sein. 1st vars nicht angegeben, so muB der Ausdruck vom Gesamtgrad zwei in allen seinen Unbestimmtem sein. Siehe auch: type/cubic, type/linear, type/polynom, type/quartic. type/quartic type (ausdr, quartic) type (ausdr, quartic(vars)) Stellt fest, ob es sich urn eine Funktion vom Grad 4 in den angegebenen Variablen handelt vars kann eine einfache Variable oder eine Liste bzw. Menge von Variablen sein. 1st vars nicht angegeben, so muB der Ausdruck vom Gesamtgrad vier in allen seinen Unbestimmtem sein. Siehe auch: type/cubic, type/linear, type/polynom, type/quadratic. type/radext type (ausdr, radext)) type (ausdr, radext(typ)) Testet auf einen Wurzelausdruck Die erste Form ist liquivalent zu type/radical. Die zweite Form stellt fest, ob es sich urn einen Wurzelausdruck handelt, bei dem der Teilausdruck unter der Wurzel vom gegebenen Typ ist. Siehe auch: type/algext, type/radnum, type/radnumext. type/radfun type (ausdr, radfun) type (ausdr, radfun(typ)) type (ausdr, radfun(typ, vars)) Testet auf eine Wurzelfunktion Eine Wurzelfunktion ist ein Ausdruck in den Variablen vars iiber dem Bereich typ, der durch Wurzeln erweitert ist. vars kann ein einfacher Name oder eine Liste bzw. Menge von Namen sein. Siehe auch: type/algfun, type/radext.

301

-

AIle Maple-Befehle type/radfunext type (ausdr, radfunext) Priift, ob es sich urn eine Erweiterung einer Wurzelfunktion handelt 0 Eine Erweiterung einer Wurzelfunktion ist eine Wurzel einer Kombination rationaler Funktionen mit Wurzeln rationaler Funktionen, wobei die Wurzeln als Radikale angegeben sind. Dies ist aquivalent zum Aufruf von type/radextundvontype/radfun.o type(x (1/2), radfunext); --->true o Siehe auch: type/radext, type/radfun, type/radical, type/radnumext. A

type/radical type (ausdr, radical) Testet auf Potenzen, wobei der Exponent ein Bruch ist 0 Siehe auch: type/' type/fraction, type/radnum, type/radext, type/sqrt.

A

"

type/radnum type (ausdr, radnum) Testet auf eine algebraische Zahl, dargestellt mit Hilfe von Radikalen 0 Diese Funktion testet auf eine rationale Zahl, eine Wurzel einer rationalen Zahl, eine Summe, Produkt oder Quotienten derselben. 0 Siehe auch: type/algnum, type/radfun, type/radical. type/radnumext type (ausdr, radnumext) Testet auf eine radikale Zahlerweiterung 0 Eine radikale Zahlerweiterung ist eine Wurzel eines univariaten Polynoms mit radnum Koeffizienten. Dies ist aquivalent zum Testen von type/radext und type/radnum. 0 Siehe auch: type/algnumext, type/radext, type/radfunext, type/radnum. type/range type (ausdr, range) Stellt fest, ob es sich urn einen Bereich handelt 0 Dies ist aquivalent zu type / ' .. '. Ein Ausdruck vom Typ range (auch Typ , .. ' genannt) hat zwei Operanden, den Ausdruck auf der linken Seite und den Ausdruck auf der rechten Seite. type/rational type (ausdr, rational) Testet auf einen Bruch oder eine ganze Zahl type/ fraction, type/numeric.

0

Siehe auch: type/integer,

typelratpoly type (ausdr, ratpoly) type (ausdr, ratpoly(typ)) type (ausdr, ratpoly(typ, vars)) Testet auf eine rationale Funktion 0 typ benennt den Typen des Definitionsbereichs der Koeffizienten und vars benennt die Unbestimmten. vars kann eine einfache Variable oder eine Liste bzw. Menge von Variablen sein. 0 Siehe auch: type/polynom. typelrealcons type (ausdr, realcons) Testet auf eine reelle Konstante 0 Eine reelle Konstante ist ein Ausdruck, fUr weIchen evalf eine Gleitkommazahl bzw. inf ini ty oder - inf ini ty zuriickgibt. 0 Siehe auch: type/complex, type/constant. type/relation Testet auf einen Ausdruck vom Typ ' [f(a,c),f(b,d)] 0 Sieheauch:map.

ztrans ztrans(ausdr, n, z) 0 Diese Funktion berechnet die Z-Transformation eines Ausdrucks ausdr in der Variablen n, wobei sich ein Ausdruck in z ergibt. Sie erkennt die Deltafunktion De 1 ta ( ... ) und die Treppenfunktion Step ( ... ). Diese Transformation ist folgenderma8en definiert: (ausdr) / zn 0 z trans (a hn, n, z); ---> 0 Siehe auch: invz trans, rsolve.

z-Transformation

2::'=0

z:a

.. 307

E

Elektronische Resourcen

Ein groBer Teil von Informationen tiber Maple ist On-Line tiber e1ektronische Mail, InternetDatentransfer und elektronische Bulletinboards erhliltlich. Hat man Benutzerberechtigung ftir Internet oder Bitnet, kann man an diese Informationen herankommen. Die andere Moglichkeit ist ein Modem, welches an einem solchen Rechner angeschlossen ist.

E.1

Die Share-Bibliothek

Die Maple-Share-Bibliothek enthlilt Maple-Code, der von Benutzern beigetragen wurde und Dokumentation. Diese Bibliothek wird auf elektronischem Wege verbreitet und ist kostenlos erhliltlich. Die Share-Bibliothek enthlilt Dutzende von Maple-Anwendungsprogrammen in allen moglichen Bereichen von Mathematik, Natur- und Ingenieurswissenschaften. Diese Anwendungsprograrnme werden von Maple-Benutzern aus der ganzen Welt gestiftet. Die Share-Bibliothek enthlilt auBerdem Lernprogramme fiir Maple, Zusammenfassungen neuer Funktionalitaten der neuesten Versionen und Dokumentation zu bestimmten Anwendungen. Die Maple-Entwickler selbst machen Fehlerkorrekturen und Verbesserungen zu Maple-Bibliotheksroutinen dort bekannt. Die Share-Bibliothek ist auf dem Internet erhliltlich via anonymous FrP und zwar von den fiinf Adressen, die in der folgenden Tabelle aufgelistet sind. Der letzte Abschnitt dieses Kapitels (Seite 317) beschreibt, wie man anonymous FrP benutzt. Die Share-Bibliothek wird ungeflihr dreimal im J ahr aktualisiert.

Internet-Name

Internet-Adresse

Dateiverzeichnis

Ort

daisy. uwaterloo. ca ftp.maplesoft.on.ca ftp. inria. fr canb. can. nl neptune. inf.ethz. ch

129.97.140.58 192.139.233.5 128.93.2.54 192.16.187.2 129.132.101.33

maple pub/maple lang/maple pub/maple-ftplib maple

Kanada Kanada Frankreich Holland Schweiz

Die Share-Bibliothek ist nach Versionen gesplittet: Maple V Version 2 Beitrlige sind in dem ,,5.2"Unterverzeichnis des Hauptverzeichnisses, welches in der dritten Spalte der Tabelle aufgelistet ist, zu linden. Bei daisy. uwaterloo . ca belinden sie sich z. B. in maple/5.2. Innerhalb von 5.2 gibt es vier hauptslichliche Unterverzeichnisse: share lib doc test

Von Benutzern gestifteter Maple-Code mit zugehoriger Dokumentation. Korrekturen und Verbesserungen zu Maple-Bibliotheksroutinen und Hilfsdateien. Allgemeine Artikel tiber Maple: viele in TB" oder 1MB", andere in PostScript oder einfachem Textformat. Testbeipiele ftir viele gestiftete Routinen.

Sollte man keinen Zugang zu FrP und dem Internet haben, so kann man dennoch auf die ShareBibliothek durch e1ektronischeMail zugreifen. In diesem Fall sendet man einfach eine Nachricht an [email protected], welche die Zeile ,,send info" enthlilt. Ein Programm empflingt diese Botschaft und meldet sich mit weiteren Instruktionen. Ein Teil der Share-Bibliothek wird mit Maple mitgeliefert. Mit dem Befehl ? share [contents 1 erhlilt man eine Liste der Share-Bibliotheksroutinen, die mit dem System mitgeliefert wurden. Unter Maple V Version 2 und Version 3 ist es sehr einfach, diese Share-Bibliotheksfunktionen einzuladen und zu benutzen. Die Share-Bibliothek ist gewohnlich in einem Verzeichnis mit Namen share installiert, die zum Haupt-Bibliotheksverzeichnis von Maple benachbart ist. 1st die Share-Bibliothek an anderer Stelle installiert, so muB man der Variablen sharename erst das entsprechende Verzeichnis zuweisen. Urn die Sitzung so einzurichten, daB die Share-Bibliothek benutzt werden kann, gebe man > with (share) ; ein. Dies modiliziert die Variable 1 ibname so, daB Maple die Share-Bibliothek durchsucht, sobald die Haupt-Bibliotheken durchsucht wurden, wenn man readlib oderwi th benutzt. Man kann z. B. die Share-Bibliotheksfunktion fit zur Berechnung einer Approximation in kleinsten Quadraten an gewisse Daten mit dem Befehl readl ib ( fit) einladen.

E.1 Die Share-Bibliothek Die meisten Share-Bibliotheksfunktionen kommen mit Hilfsseiten im Maple-Format. Auf diese wird wie auf andere Hilfsstichworte zugewiesen, nachdem man eine Share-Bibliotheksdatei geladen hat. Man kann sich zum Beispiel die Hilfsseite fiir fit durch Eingabe von ? fit ansehen.

Ausgewahlte Beitrage zur Share-Bibliothek Dieser Abschnitt beschreibt ausgewiihlte Funktionen, Arbeitsbllitter und Dokumente der ShareBibliotbek. Arbeitsbllitter befinden sich in Dateien, die mit ... ms" enden und k6nnen aufjeder MaplePlattform benutzt werden, die die Arbeitsblattschnittstelle untersttitzt. Einige dieser Arbeitsbllitter sind eventuell schon auf dem jeweiligen System vorhanden, da ein Teil der Share-Bibliothek mit der akademischen Version von Maple V Version 2 und Version 3 mitgeliefert wird. Sie sind aile durch anonymous FrP oder elektronischeMail erhiiltlich, so wie oben beschrieben. Am Ende einer jeden Beschreibung findet man den Namen des Autors (bzw. der Autoren) und den Namen und Ort der Datei, welche das Prograrnm bzw. Dokument enthiilt. Die Beitrlige sind in neun verschiedene Kategorien aufgeteilt worden: Algebra, Analysis, Kombinatorik, Geometrie, Lineare Algebra, Zahlentbeorie Natur- und Ingenieurswissenschaften, Dienstprogramme (Utilities) und Sonstige Dokumente.

Algebra algcurve

Ein Paket von Routinen zur Berechnung algebraischer Kurven in zwei Dimensionen. Entbiilt Routinen zur Berechnung singuilirer Punkte, Tangenten, Wendepunkte, Schnittpunkte und eine Routine zum Zeichnen von Kurven. S. Schwendimann. (algcurve)

charsets

Ein Paket, welches die charakteristische Mengenmethode von Ritt-Wu implementiert. Enthiilt charakteristische Mengen (multivariater) Polynommengen, welche die Polynommengen in aufsteigende Mengen und unzerlegbare aufsteigende Mengen aufteilen, algebraische Varietliten in unzerlegbare Komponenten aufteilen, Polynome tiber algebraischen Zahlk6rpem faktorieren und Systeme polynomialer Gleiehungen l6sen. D. Wang. (algebra/charsets)

compoly

Ein schnellerer Algoritbmus zur Zerlegung von Polynomen (Gutierrez u. a.), welcher nicht nach einer Faktorierung verlangt. B. Salvy and F. Morain. (compoly)

coxeter weyl

Pakete zum Erforschen von Wurzelsystemen und endlicher Coxeter-Gruppen. Das weyl-Paket ben6tigt das coxeter-Paket und entbiilt Prozeduren zur Manipulation von Gewichtsvektoren und zur Berechnung von Vielfachheiten flir unzerlegbare Darstellungen halbeinfacher Lie-Algebren. J. Stembridge. (coxeter/coxeter,coxeter/weyl)

fields

Ein Paket zur Bestimmung des transzendatelen Grades einer K6rpererweiterung, oder des Grades einer algebraischen Erweiterung, zweier tiber den rationalen Zahlen oder einem a1gebraischen Zahlk6rper liegender K6rper oder eines algebraischen Zahlk6rpers. G. Kemper. (algebra/ fields, algebra/fields.ms)

fullparfrac

Vollstlindige Partialbruchzerlegung einer rationalen Funktion in Q( x ) tiber dem algebraischen AbschluB von Q ohne Faktorzerlegung. B. Salvy. (fparfrac)

galois

Berechnet die Galoisgruppe eines Polynoms, dessen Grad nieht gr6Ber als 7 ist. Erweitert die Standard-Bibliotbeksroutine galois von Q[x] auf Q[h, t2, ... , tm][x], d. h., auf Polynome mit polynomialen Koeffizienten. R. Sommeling, T. Mattman und 1. McKay. (algebra/galois)

GB

Berechnet eine reduzierte, minimale Grobnerbasis einer Menge von Polynomen tiber einem K6rper von Primordnung, wobei entweder reine lexikographische Ordnung oder Ordnung nach dem totalen Grad benutzt wird. Entbiilt die Routine NormalForm zur Reduktion eines Polynoms tiber einem solchen K6rper modulo eines Ideals. D. Gruntz. (mod/GB)

group.ms

Ein Arbeitsblatt, welches Fragen zu Rubiks Wtirfel behandelt. (algebra/group .ms)

309

E Elektronische Resourcen Hurwitz

Priift, ob ein Polynom vom Hurwitz-Typ ist, d. h., ob der Realteil einer jeden Nullstelle negativ ist. R. Corless. (Hurwi tz)

IF

Paket von Routinen, die mit reellen algebraischen Zahlen arbeiten und Systerne von Gleichungen und Ungleichungen aufillsen. Eine Anwendung dieser Prozeduren berechnet eine zylindrische algebraische Zerlegung einer ebenen algebraischen Kurve. F. Cucker. (IF)

IntBasis

Routinen zur schnellen Berechnung einer Integra1basis ftir einen algebraischen Funktionenkorper (integral_basis), zur Berechnung von Puiseux-Reihenentwicklungen (puiseux) und zur Berechnung des Geschlechts einer algebraischen Kurve (genus). M. van Hoeij. (IntBasis)

invar

Ein Paket von Routinen zur Berechnung des invarianten Ringes von Permutationsgruppen oder endlich-linearen Gruppen tiber Q oder einem algebraischen Zahlkorper. G. Kemper. (algebra/invar)

posets

Ein Paket von Routinen zur Manipulation teilweise geordneter Mengen, darunter Routinen zur Aufzllhlung aller nichtisomorphen teilweise geordneter Mengen und Gitterstrukturen mit n Ecken. 1. Stembridge. (posets)

SF

Ein Paket von Routinen zur Manipulation symmetrischer Funktionen. Dieses Paket kann symmetrische Funktionen in folgenden Basen darstellen: monomiaIe symmetrische Funktionen, elementare symmetrische Funktionen, kompletthomogene symmetrische Funktionen, symmetrische Funktionen in Potenzsummendarstellung, sowie Schur-Funktionen. J. Stembridge. (SF)

sglplot

Zeichnet eine Teilgruppen-Gitterstruktur in drei Dimensionen auf. M. Monagan. (plots/ sglplot)

SqrFree

Berechnet die quadratfreie Faktorzerlegung eines multivariaten Polynoms tiber einem Kllrper mit Primzahlordnung. (Maples Routine Sqrfree gilt nur fiir univariate Polynome.) S. Swanson. (mod/ SqrFree)

subres

Berechnet die TeilresuItantenfolge der polynomialen Reste. G. Labahn und M. Monagan. (subres)

Subres

Berechnet die Teilresultantenfolge der polynomialen Reste tiber den ganzen Zahlen modulo m. G. Labahn und M. Monagan. (mod/Subres)

symmpoly

Erzeugt elementare symmetrische Polynome. M. Monagan. (combinat/symmpoly)

traubjen

Traub-Jenkins-Algorithmus zur Berechnung der komplexen Wurzeln eines PoIynoms. B. Salvy. (traubjen)

trinom.ms

Berechnet primitive Trinome tiber endlichen Kllrpem, welche fiir fehlerbehebende Codes und zur Erzeugung von Zufallszahlen benutzt werden kllnnen. Dies demonstriert, wie man Maple zum Rechnen mit Polynomen tiber endlichen Korpem benutzen kann. M. Monagan. (algebra/trinom.ms)

Analysis approx.ms

Ein Maple-Arbeitsblatt, welches verschiedene numerische Approximationstechniken zur Entwicklung polynomialer und rationaler Funktionsapproximationen iIIustriert. Darunter Taylorreihen-, Tschebyscheffreihen-, Pade-, TschebyscheffPade- und Minmax-Approxirnationen. K. Geddes. (numerics /approx. ms)

autodiff

Eine Sammlung von Routinen zur automatischen (algorithmischen) Differentiation. W. Neuenschwander und M. Monagan. (autodiff/DIFF, GRADIENT, HESSIAN,JACOBIAN,TAYLOR)

310

E.l Die Share-Bibliothek balloon.ms

Eine lange flexible Leine wird akkurat am Boden befestigt und ein Heliumballon wird an einem Ende befestigt. Die Bewegung des aufsteigenden Ballons wird durch eine Differentialgleichung beschrieben, welche numerisch gel(jst und dann aufgezeichnet wird. Dieses Arbeitsblatt beniltigt das Plotpaket ODE aus der Share-Bibliothek. D. Schwalbe. (plots/balloon.ms)

Besse1H

Implementation von Hankelfunktions mitte1s Bessell und BesselY. D. Meade. (hankel, hankel.ms)

m

Berechnet die schnelle Fouriertransfonnation (FFf). S. Earl. (numerics / f f t)

fbt

Berechnet die schnelle Hartleytransfonnation. S. Earl. (numerics/fht)

fit

Eine (lineare) Modellierung einer Kurve im Sinne der kleinsten Quadrate an eine Menge von Daten. D. Gruntz. (fit)

fjefonns

Eine revidierte Version des difforms-Paket zum Rechnen mit Differentialfonnen. FJE Enterprises. (fj eforms/ fj eforms)

gdev glimit

Allgemeine Reihenentwicklungen und symbolische Grenzwerte. Es wird ein leistungsfahigeres Modell zur asymptotischen Reihenentwicklung benutzt als bei Maples asympt- und series-Befehlen. B. Salvy. (gdev)

gfun

Ein Paket zum Rechnen mit erzeugenden Funktionen. Verwandelt implizite Gleichungen in Differentialgleichungen, Differentialgleichungen in Rekursionen und umgekehrt, gew(jhnliche in exponentiale Rekursionen. Es werden auch lineare Rekursionen oder Differentialgleichungen aus endlichen Listen von Koeffizienten zuriickgewonnen. B. Salvy und P. Zimmennann. (gfun)

GRADlENT.ms Ein Arbeitsblatt mit Beispielen zur automatischen (algorithmischen) Differentiation unter Verwendung von Maples D-Operator und der Funktion GRADIENT aus der mit Version 2 mitgelieferten Share-Bibliothek zur Berechnung partieller Ableitungen, Gradienten und Jacobimatrizen von Funktionen, die als Maple-Prozeduren gegeben sind. M. Monagan. (au todif f /GRADIENT . ms) guesss

Eine Routine zum Erraten des niichsten Werts einer Foige. Diese Routine sucht nach allgemeineren Differentialgleichungen als das gfun-Paket. Es wird eine verallgemeinerte Kettenbruchmethode zum Finden der Differentialgleichung benutzt. H. Derksen. (guesss)

iJp

Ein Algorithmus zur ganzzahligen linearen Programmierung zum Maximieren einer linearen Funktion unter einer Menge von Restriktionen. A. Pathria. (ilp)

intpak

Experimentelles Paket zur Intervallarithmetik. A. Connell und R. Corless. (numerics/intpak)

LambertW.ps

Eine PostScript-Datei, welche Lamberts W-Funktion (die W-Funktion in Maple) dokumentiert. Enthiilt Eigenschaften, Integrationsformeln und -techniken, asymptotische Betrachtungen und Anwendungen. R. Corless, G. Gonnet, D. Hare und D. Jeffrey. (LambertW .ps)

logistic.ms

Ein Arbeitsblatt zur Behandlung des logistischen Modells zum BevillkerungsaP - bP2. D. Schwalbe. (plots/logistic .ms) wachstum: pi

logmap.ms

Ein Arbeitsblatt, welches die periodenverdoppelnde Bifurkationenfolge einer diskreten logistischen Abbildung untersucht. R. Corless. (calculus/logmap.ms)

MatPade

Funktionen zur Berechnung von Matrix-Pade-Approximationen, darunter HennitePade, simultane Pade und rechte und linke Pade-Approximationen. G. Lahahn. (algebra/MatPade,algebra/MatPade.ms)

ODE

Eine Sammlung von Routinen zur numerischen L(jsung und Zeichnung von Differentialgleichungen aus dem Kapitel 5 des Maple V Flight Manual. Dieser Code ist in der Share-Bibliothek der Studentenversion von Maple V Version 2 enthalten. D. Schwalbe. (plots/ODE)

=

311

E Elektronische Resourcen pade2

Verallgemeinerte Pade-Approximationen. H. Derksen. (numerics/pade2)

parfrac.ms

Ein Arbeitsblatt, welches die Partialbruchzerlegung zur Integration rationaler Funktionen illustriert. M. Monagan. (calculus/parfrac .ms)

polycon

Ein Paket zur Analyse polynomialer und rationaler Kontrollsysteme. K. Forsman. (engineer/polycon)

PS

Ein Paket zu formalen Potenzreihen mit vielen Verbesserungen gegntiber dem Bibliothekspaket powseries zur Manipulation von Potenzreihen. D. Gruntz. (PS)

ratinterp

Berechnet eine rationale Funktion, die die gegebenen Datenpunkte interpoliert. C. von Achenbach. (numerics/rfinterp)

ratlode

Findet die rationalen Uisungen zu einer linearen gewiihnlichen Differentialgleichung n ter Ordnung mit rationalen Koeffizienten. M. Bronstein. (calculus /ratlode)

trans

Ein Paket von Routinen zu rationalen Funktionsapproximationen an rationale Punkte, Taylor- und asymptotische Reihen und Funktionen. 1. Grotendorst. (numerics/trans)

Kombinatorik coxpoly

Berechnet das Coxeterpolynom eines zyklischen Baumes mit Wurzel. A. Boldt. (combinat/coxpoly)

perm

Ein Paket von Routinen zum Rechnen mit Permutationsgruppen, darunter Routinen zum Berechnen von Orbits, Teilgruppen und zum Priifen, ob zwei Gruppen konjugiert sind. Dies sind zudem Prozeduren, die zur Darstellung und Manipulation kombinatorischer Strukturen benutzt werden. Y. Chiricota. (combina t /perm)

relpoly

Berechnet das resultierende Zuverlassigkeitspolynom ftir einen Graphen mit einer gegebenen Wahrscheinlichkeit fUr den Ausfall einer Kante. M. Monagan. (combinat/relpoly)

Geometrie billiard.ms

Ein Arbeitsblatt, welches die Uisung zum Billiardproblem mit einem kreisftirmigen Billiardtisch angibt. Die numerische Liisung demonstriert den Nutzen algorithmischer Differentiation. W. Gander und D. Gruntz. (geometry/billiard.ms)

surfaces

Ein Paket zur Berechnung grundlegender differentialgeometrischer GriiBen parametrischer Aachen im Raum, darunter erste und zweite Fundamentalformen, metrische Determinante, GauBkriimmung und mittlere Krtimmung. T. Murdoch. (geometry/surfaces)

Lineare Algebra autoevalm

Eine Dienstroutine zur automatischen Auswertung von Matrixausdriicken. E. Johnson. (linalg/autoevalm)

classical

Rational kanonische Form ftir eine Matrix rationaler Zahlen. Enthlilt ein Dienstprogramm zur Berechnung der Hyper-Begleitmatrix eines univariaten Polynoms. E. Johnson. (linalg/class)

eigen.ms

Ein Arbeitsblatt-Lemprogramm ftir eigenvals, eigenvects und damit zusammenhangende Befehle zur Berechnung exakter symbolischer Werte fiir Eigenwerte und Eigenvektoren von numerischen und symbolischen Matrizen. Enthlilt ein Lemprogramm zum Rechnen mit Nullstellen von Polynomen unter Benutzung der RootOf-Schreibweise. M. Monagan. (linalg /eigen .ms)

312

E.l Die Share-Bibliothek IntSolve

Ein Loser von linearen Integralgleichungen (benotigt linalg /Echelon). H. Ye und R. Corless. (linalg / IntSol ve)

lapack.ms

Ein Arbeitsblatt, welches die besonderen Eigenschaften der 6 x 6 Matrix auf der Umschlagseite des LAPACK User's Guide untersucht. M. Monagan. (linalg/lapack.ms)

magic

Erzeugt ein magisches Quadrat. Enthiilt die Routine ismagic zum Testen, ob eine gegebene quadratische ganzzahlige Matrix ein magisches Quadrat darstellt. D. Gruntz. (linalg /magic)

normform

Eine Sammlung von Routinen zur Berechnung von Normalformen von Matrizen. Darunter sind ismithex, smithex, frobenius, jordan, jordansymbolic und ratjordan zur Berechnung von Smith-, Frobenius- und Jordan-Normalformen. Normalerweise schneller und allgemeiner als die lihnlichen in der Maple-Bibliothek enthaltenen Routinen. T. Mulders und A. Levelt. (linalg/normform)

Normform

Eine Sammlung von Routinen zur Berechnung der Normalformen von Matrizen tiber den ganzen Zahlen modulo p. Enthalt Frobenius, Ratjordan und Jordansymbolic. T. Mulders und A. Levelt. (mod/Normform)

pascal

Erzeugt eine Pascal-Matrix. M. Monagan. (linalg /pascal)

pffge

Primitive bruchfreie GauBelimination ftir eine rechteckige Matrix multivariater Polynome. Nachdem eine Reihenoperation durchgeftihrt wurde, wird der ggT der Polynome dieser Reihe herausdividiert, so daB die GroBe der zwischendurch auftretenden Polynome minimiert wird. M. Monagan. (linalg /pffge)

RowEcheIon

Ergibt die Zeilenstufenform Reiner rechteckigen Matrix A. Berechnet zudem Matrizen P, Lund U, sodaB gilt A = PLUR, wobei Peine Permutationsmatrix, L eine untere und U eine obere Dreiecksmatrix ist. R. Corless und D. Jeffrey. (linalg /Echelon)

rrefshow

Ein Lemwerkzeug zum Nachvollziehen und Beobachten eines jeden Schritts bei der Reihenreduktion einer Matrix auf Stufenform. E. Johnson. (linalg/rrefshow)

sffdet

Berechnet die Determinante einer quadratischen Matrix, dabei eine Variante von Bareiss bruchfreiem Algorithmus benutzend, die sich besonders fUr dtinn besetzte Matrizen mit ganzzahligen oder polynomialen Eintragen eignet. Q. Nguyen. (linalg/sffdet)

sffge

Wendet Bareiss bruchfreien GauBeliminationsalgorithmus auf eine rechteckige Matrix von Polynomen an. Diese Routine hat dieselbe Funktionalitat wie linalg [ffgausseliml, ist aber mehr auf dtinn besetzte Matrizen hin spezialisiert. I. Berchtold und M. Monagan. (linalg / s f fge)

Zahlentheorie DistTol

Die 3n + I-Behauptung oder ColIatz-Problem oder Ulams Behauptung. Berechnet die Anzahl der Iterationen zu 1 auf effiziente Weise. G. Gonnet. (numtheor/Collatz)

elliptic

Berechnet die Ordnung der Gruppe von Punkten auf einer nichtsingultiren elliptischen Kurve tiber einem endlichen Korper von Primzahlordnung. E. Von York. (numtheor/elliptic)

irredheu

Ein heuristischer Unzerlegbarkeitstest von Polynomen in Q[x] durch Berechnen von Primzahlauswertungen und Primzahlentests von ganzen Zahlen. Es wird behauptet, daB dieser Unzerlegbarkeitstest mit polynomialem Aufwand durchgeftihrt werden kann. M. Monagan. (numtheor / irredheu)

313

E Elektronische Resourcen isprime

Eine verbesserte wahrscheinlichkeitstheoretische Primzahltestroutine, welche eine modifizierte starke Pseudoprimzahltestbasis 2 und einen Lucastest benutzt. Eine zusammengesetzte Zahl, die beiden Tests geniigt, ist bisher noch nicht gefunden worden; allerdings ist es moglich, daB solch ein Gegenbeispiel existiert. Diese verbesserte isprime-Funktion ist in Maple V Version 3 eingebaut worden. G. Gonnet mit M. Schoenert. (isprime)

Natur- und Ingenieurswissenschaften AFA.ms

Ein Arbeitsblatt zur algebraischen Funktionenapproximation. Eine Prozedur rekonstrueirt den Ausdruck der Dirac-Energien aus den Reihenkoeffizienten unter Benutzung einer heuristischen Polynomapproximation. G. Fee und T. Scott. (science/AFA.ms)

AnalSPT.in Anal3PTB.in

Harmonische Analyse von einphasigen und dreiphasigen Wellenprofilen von Thyristor-Schaltkreisen. A. Rough und J. Richardson. (engineer/AnalSPT.in,Ana13PTB.in,harmonal)

biology.ms

Ein Arbeitsblatt zur Anwendung des ODE-Pakets auf ein biologisches Problem, wo zwei Bevoikerungen sich urn iibedebenswichtige Resourcen streiten. Das biologische System ist durch zwei Differentialgleichungen erster Ordnung modelliert und es werden Phasenplots der LOsungen gezeichnet, welche Beispiel stabiler und unstabiler Bevolkerungen darstellen. D. Schwalbe. (plots/biology .ms)

bohratom.ms

Ein Arbeitsblatt zur LOsung dreier nichtlinearer Gleichungen, die aus der BohrTheorie, angewandt auf das Wasserstoffatom, stammen. D. Redfern, T. Scott und R. Pavelle. (science/bohratom. ms)

chemeqn.ms

Ein Arbeitsblatt, welches die Koeffizienten in einer chemischen Reaktion ausbalanciert. D. Redfern, T. Scott und R. Pavelle. (science/chemeqn.ms)

doubpend.ms

Ein Arbeitsblatt, welches die Losung zur Differentialgleichung eines doppelten Pendels approximiert und seine Bewegung simuliert. D. Schwalbe. (plots/doubpend.ms)

filter.ms

Ein Arbeitsblatt, welches den Effekt eines Niedrigbandfilters auf einen Wechsel in Signal- oder Stromfrequenz analysiert. R. I. Adare und T. Lee. (engineer/filter.ms)

flash.ms

Ein Arbeitsblatt, welches Blitzberechnungen ausfiihrt, urn die Phasenbedingung eines Gemischs unter bestimmtem Druck und bestimmter Temperatur berechnet. R. Taylor. (science/flash.ms)

heatcap.ms

Ein Arbeitsblatt zur Berechnung der mittleren Energie und Hitzekapazitlit eines Einsteinkorpers. T. Scott. (science/heatcap .ms)

kinetics

Prozeduren zur Bestimmung des Systems von Differentialgleichungen fur ein gegebenes Reaktionsmodell, die zugehorigen Erhaltungsgesetze und einige der Objekte, die einen Bereitschaftsstatus Null haben. M. Holmes. (science/kinetics)

lagrange.ms

Ein Arbeitsblatt, welches Lagrangesche Multiplikatoren zur Minimierung einer Funktion unter einer Restriktion anwendet. A. Rough. (engineer/lagrange.ms)

Maxgas.ms

Ein Arbeitsblatt zur Berechnung der wahrscheinlichsten Geschwindigkeit der Maxwell-Boltzman-Verteilung. D. Redfern, T. Scott und R. Pavelle. (science/Maxgas.ms)

McConnel.ms

Ein Arbeitsblatt zur Matrixalgebra, insbesondere Matrixexponenten, zur symbolischen Berechnung eines Systems von Differentialgleichungen erster Ordnung in Biochemie, nlimlich der McConnell-Gleichungen. 1. Grotendorst, P. Jansen und S. M. Schoberth. (science/McConnel.ms)

314

E.! Die Share-Bibliothek nonlin.ms

Ein Arbeitsblatt zur Illustration der geometrischen und der Newton-RaphsonIteration zur Approximation von Wurzeln nichtlinearer Gleichungen einer Variablen. A. Rough. (engineer /nonlin. ms)

pendulum.ms

Ein Arbeitsblatt, welches die Bewegung eines Pendels in einer Fliissigkeit als gewohnliche Dgl. zweiter Ordnung beschreibt, die gewohnliche Dgl. dann analytisch lost und seine Bewegung dann fiir Fliissigkeiten verschiedener Viskositaten aufzeichnet. D. Harper. (science/pendulum.ms)

phase.ms

Ein Arbeitsblatt, welches einfache thermodynamische Berechnungen ausfiihrt, die z. B. bestimmen, wann sich Dampfblasen bilden oder wann der Kondensationspunkt erreicht ist; daneben werden auch Phasendiagramme erzeugt und gezeichnetund Blitzberechnungen ausgefiihrt. R. Taylor. (science/phase. ms)

planck.ms

Ein Arbeitsblatt zur Berechnung eines bestimmten Integrals, dem StefanBoltzman-Gesetz (der Schwarzkorper-Strahlung). T. Scott. (science/planck.ms)

poten.ms

Potentialfelder unter Benutzung von Greens Funktionen in zwei Dimensionen. Die Neumann- und Dirichlet-Probleme. A. Rough. (engineer /poten .ms)

quantopt.ms

Eine Arbeitsblatt-Anwendung zu den optischen Ubergangen zwischen zwei Orbitalen auf verschiedenen Atomen. Dies verlangt nach dreidimensionaler Integration des Produkts der GauBverteilungen. D. Redfern, T. Scott und R. Pavelle. (science/quantopt.ms)

robotarm.ms

Ein Arbeitsblatt zur Losung des Wegplanungsproblems fiir einen einfachen zweigelenkigen ebenen Roboterarm, so wie es bei FlieBbandoperationen oft vorkommt. Zeigt eine Animation zweier spezieller Losungen. G. P. Porciello und T. Lee. (engineer/robotarm.ms)

shear.ms

Ein Arbeitsblatt, welches zwei Designprobleme fiir ein Maschinenelement vorstellt und dabei Gleichgewichtsgleichungen lOst, urn allgemeine Losungen fiir Scherungs- und normale Stresskomponenten zu erhalten. J. Argent und T. Lee. (engineer/shear .ms)

shottraj .ms

Ein Arbeitsblatt, welches eine gewohnliche Dgl. zweiter Ordnung lost, die die Bewegung einer mit gerader Bahn in die Luft geschossenen Kugel beschreibt; die Losung wird aufgezeichet. M. Monagan. (science/ shottraj .ms)

statval.ms

Ein Arbeitsblatt mit Ubungen zum Finden von Maxima, Minima und Sattelpunkten aufFlachen in zwei Dimensionen. A. Rough. (engineer/statval.ms)

stepresp.ms

Ein Arbeitsblatt, welches die Stufenreaktion eines RC-Schaltkreises analysiert. R. I. Adare und T. Lee. (engineer / stepresp .ms)

stream.ms

Ein Arbeitsblatt, welches die Stromlinien in zweidimensionalen Vektorfeldem illustriert. A. Rough. (engineer/stream.ms)

wheatsto.ms

Ein Arbeitsblatt zur Anwendung von Kirchhoffs Gesetzen auf den besonderen, "Wheatstone Bridge" genannten, elektrischen Schaltkreis. T. Scott und M. Monagan. (science/wheats to. ms)

Dienstprogramme convertlarctanh

Konvertiert alle in einem Ausdruck vorkommenden Logarithmen und inversen hyperbolischen trigonometrischen Funktionen in eine entsprechende Form in arc tanh. V. Broman. (convert/arctanh)

eps

Erzeugt encapsulated postscript fiir ein Maple-Diagramm. so daB man MapleGraphiken in andere Anwendungen einbinden kann. Man kann eine Anzahl von Parametem einstellen, z. B. Skalierung, Rotation und Verschiebung. J. S. Devitt. (eps)

315

E Elektronische Resourcen fortran.ms

Eine Diskussion der haufigen Fehler bei der naiven Benutzung symbolischer Berechnungen, wenn Fortran-Code erzeugt werden soli. Als Beispiel ist die Erzeugung von Fortran-Code zur Berechnung der Inversen einer symmetrischen 3-mal-3-Matrix gegeben. M. Monagan. (numerics / fortran. ms)

gdegree

Berechnet den Grad eines Ausdrucks, wobei auch rationale und symbolische Exponenten erlaubt sind. Dies ist ein Beispiel zum Schreiben einer MapleProzedur, die einen Ausdruck rekursiv abarbeitet. M. Monagan. (gdegree)

maclaurinsubs

Ersetzt Funktionen in einem Ausdruck durch formale Maclaurin-Reihen. V. Broman. (mac subs)

macroC

Ein Maple-Paket zur Erzeugung von Code in der Programmiersprache C. Es konnen samtliche C-Strukturen erzeugt werden und der resultierende Code kann optimiert werden. Die Maple-Bibliotheksroutine C verarbeitet nur Ausdriicke. P. Capolsini. (macroC)

macrofort

Eine Sammlung von Prozeduren zur Erzeugung von FORTRAN-Code; es wird die Erzeugung vollstiindiger FORTRAN-Programme mit Deklarationen und Kontrollstrukturen ermoglicht. C. Gomez. (macrofor)

mathematica

Verwandelt einen Maple-Ausdruck in einen aquivalenten Mathematica-Ausdruck. Es konnen auch Integrale, Matrizen, einfache Operatoren, Polynome und Forme1n Ubersetzt werden. D. Gruntz. (math)

readshare

Vereinfacht das Einladen von Code aus der Share-Bibliothek. M. Monagan. (readshare)

reorder

Vertauscht Summen, Grenzwerte oder Integrale in Ausdriicken. V. Broman. (reorder)

saveglob restglob

Routinen zum Abspeichem und Wiederherstellen globaler Variablen, so daB man bei der Fehlersuche zwar Anderungen vomehmen, aber auch den alten Zustand wiederherstellen kann. D. Gruntz. (saveglob)

sprint

Kurzdruckprogrammzum Ausdruckgro8er Ausdriicke. M. Monagan. (sprint)

tex

Paket zur Erzeugung von IbT(3X, einfacher T(3Xund AM')-T(3XAusgabe mit Zeilenumbruch, darunter auch Zeilenumbruch von Vektoren und Ausgabe von Prozeduren. Y. Yu. (tex)

undistribute

Zieht konstante Faktoren aus Integranden, Summanden und Grenzwerten heraus. V. Broman. (undist)

xdvi

Erzeugt IbT(3XAusgabe filr einen Ausdruck, formatiert diese mit latex und zeigt die entstandene .dvi-Datei mit xdvi auf dem Bildschirm an. Dieser Befehl lauft nur auf Unix-Systemen, die la tex und xdvi untersttitzen. M. Monagan. (xdvi)

Sonstige Dokumente New Features in Maple V Release 2, Symbolic Computation Group, 32 Seiten. Ein begleitendes Arbeitsblatt (M. Monagan and R. Neumann) gibt Beispiele dieser Anderungen anhand einer interaktiven Sitzung. (doc / summary. tex, doc / summary. ms) Programming in Maple: The Basics, M. Monagan, 53 Seiten. (program. tex) The Maple Computer Algebra System, M. Monagan, 7 Seiten. (doc/Maple. tex)

Der Dokument-Abschnitt der Version 2-Share-Bibliothek enthiilt zudem mehrere IbT(3XstyleDateien, die von vielen Autoren zum Schteiben von Artikeln, welche Maple-Befehle enthalten, benutzt wurden.

316

E.2 Der Info-Server und User-Groups E.2 Der Info-Server und User-Groups Der Maple-Info-Server Der Maple-Info-Server ist eine FfP-SteUe, welche von Waterloo Maple Software untersttitzt wird. Dieses Archiv enthlilt eine Kopie der Share-Bibliothek und eine ganze Menge zusiitzlicher Information tiber Maple. Dazu gehOren Maple-Demonstrationen, Listen der Maple-FunktionaIitliten, eine Liste von Plattformen fUr die Maple erhliltlich ist, Informationen Uber aktueUe Plattformen, eine Liste der aktueUen Bticher, Presseinformationen, die sich mit Maple und Waterloo Maple Software beschiiftigen, sowie Antworten zu einigen hliufig vorkommenden technischen Fragen und Problemen mit Maple. Man kann diesen Info-Server via anonymous FTPunter ftp.maplesoft.on.caerreichen.

Die Maple-User-Group Die Maple-User-Group ist ein e1ektronisches Forum zum Austausch tiber Maple, das Hunderte von Maple-Benutzern in der ganzen Welt zusammenschaltet. Botschaften werden durch elektronische Mail Ubermitte1t. Viele an diese Gruppe gerichtete Fragen beschliftigen sich damit, ob Maple eine bestimmte Berechnung ausfUhren kann; andere suchen Hilfe zur Uisung eines Problems. Es werden AnkUndigungen von Erglinzungen zur Share-Bibliothek, von neuen, Maple unterstUtzenden Plattformen und neuen Versionen der Software Uber diesem Forum verbreitet. Waterloo Maple Software fragt manchmaI nach Meinungen und Kommentaren zu Maple-Funktionen und Dokumentation. Obwohl die Maple-User-Group von Waterloo Maple Software gesponsert wird, ist sie trotzdem von diesem Unternehmen unabhlingig. Maple-Benutzer antworten auf die Fragen anderer Benutzer. Urn der Maple-User-Group beizutreten, sende man eine Nachricht mittels elektronischer Mail an [email protected] und bitte urn Zulassung. Es wird keine GebUhr erhoben.

News-Groups Das elektronische USENET-BuUetinboard sci .math. symbolic ist eine andere vorzUgliche InformationsqueUe. Teilnehmer aus der ganzen Welt diskutieren ComputeraIgebrasysteme wie Maple. Viele Universitliten und Unternehmen empfangen diese USENET-BuUetinboards. Man kann einen eigenen Zugang durch Unternehmen wie Anterior Technology oder UUNET Technologies erhalten. Anterior Technology P.O. Box 1206 Menlo Park, CA 94026-1206 Email:[email protected] Fax: 415-322-1753 Tel. 415-328-5615

UUNET Technologies, Inc. 3110 Fairview Park Drive, Suite 570 FaIls Church, VA 22042 Email: [email protected] Fax: 703-204-8001 Tel. 703-204-8000

E.3 Wie man Anonymous FTP benutzt Das Internet-Dateitransferprograrnm (file transfer program) ftpkopiert Dateien von einem Rechner zu einern anderen Rechner, wobei die Rechner durch das Internet verbunden sein mlissen. Einige Adressen haben Archive, auf die man zugreifen kann, indem man einen spezieUen Modus, genannt ,,anonymous FTP' benutzt. Man beginnt eine FTP-Sitzung von einern ans Internet angeschlossenen Rechner mit dem Befehl ftp zielname. Urn zurn Beispiel auf die Share-Bibliothek von daisy. uwaterloo. ca zuzugreifen, gebe man ein: ftp daisy.uwaterloo.ca SoUte der Rechner mit einer FehlermeIdung antworten, so soUte man die numerische Adresse ansteUe des symbolischen Namens ausprobieren: ftp 129.97.140.58

317

E Elektronische Resourcen 1st man verb un den, meldet sich der Zielrechner mit einer Eingabeaufforderung und verlangt nach Namen und Passwort. Man loggt sich ein unter dem Namen anonymous und gibt die eigene elektronische Adresse aIs Passwort ein. Einige Befehle zum Durchsuchen der Archive und zum Ubertragen ausgewlihlter Dateien sind in der folgenden Tabelle aufgelistet.

FTP-Befehl ls oder dir cd verz cd .. get datei mget dateien qui t oder bye ascii binary

help

318

Beschreibung Liste die Dateien im aktuellen Dateiverzeichnis auf Wechsle das Verzeichnis Wechsle ins Heimatverzeichns Ubertrage datei auf den eigenen Rechner Ubertrage mehrere Dateien Beende eine ftp-Sitzung Stelle ASCII-(Text)-Ubertragung ein Stelle Binfuiibertragung ein Liste aile Befehle auf

F

Oft gestellte Fragen

Der erste Abschnitt beantwortet die von Benutzem sehr haufig zu Maple gestellten Fragen. 1m zweiten Abschnitt werden einige allgemeine technische Fragen behandelt.

F.l Allgemeine Fragen Was kann Maple? Maple ist in der Lage, fortgeschrittene symbolische Manipulationen sowie prlizise numerische Berechnungen durchzufiihren und Funktionen und Daten in zwei und drei Dimensionen aufzuzeichnen. Maple kann univariate oder multivariate Ausdriicke in Variablen iiber den rationalen Zahlen, a1gebraischen Zahlkorpem oder endlichen Korpem manipulieren. Es kann dariiberhinaus viele analytische Operationen durchfiihren: Grenzwertbestimmung, Differentiation, numerische und symbolische Integration, Taylorreihen, Differentialgleichungen und asymptotische Analysis. Maple lOst Gleichungen und Rekursionen. Es kann entweder genaue numerische Ergebnisse berechnen oder aber Approximationen mit sehr groBer Genauigkeit zuriickliefem. Maple unterstiizt eine Vielzahl zwei- und dreidimensionaler Diagramme, darunter implizite Plots, logarithmische Graphen, parametrische Kurven und Flachen, Konturenplots, konforme Abbildungen, Vektorfelder, Polygone und Polyeder, Datendiagramme und Animationen. Maple umfaBt Pakete mathematischer Funktionen, weIche Hunderte von Operationen und Algorithmen aus Iinearer Algebra, Kombinatorik und Graphentheorie, Geometrie, Zahlentheorie, Statistik, mathematischer Physik, Gruppentheorie, Grobnerbasen, formaler Logik, linearer Programmierung und anderem implementieren. Maple hat eine machtige Programmiersprache, die Pascal lihnelt, zum Schreiben eigener mathematischer Anwendungen. Man kann eine beliebige Maple-Funktion aus einem Maple-Programm heraus aufrufen. Der groBte Teil von Maple ist in dieser Programmiersprache geschrieben und man kann diesen Code tatsachlich inspizieren und auch modifizieren.

Wer benutzt Maple? Maple gehort mittlerweile bei vielen Universitaten und Untemehmen in der ganzen Welt zur Standardsoftware. Die hauptsachlichen Maple-Benutzer sind Mathematiker, Wissenschaftler, Ingenieure, Lehrer und Studenten.

Wird Maple in Gymnasien benutzt? Tatsachlich wird Maple in Gymnasien sowohl in Europa a1s auch in Nordamerika benutzt. Allein in der Provinz Ontario, Kanada, gibt es mehr a1s 700 Gymnasien (High schools), die Maple benutzen. Was Maple fiir Gymnasien attraktiv macht ist der Preis und die geringen Anforderungen an die Hardware.

Aufwe/chen Maschinen liiuft Maple? Maple lauft auf einer ganzen Reihe von Computem, darunter 386- und 486-Computem (DOS, Windows), auf den 88000-Prozessor basierenden Systemen (Unix), Amiga, Apollo, Apple Macintosh, Atari, Convex C2 und C3, Cray XMP und YMP, DEC Alpha OSF/I, DECstation, Personal DECstation, VAX, VAXstation und MicroVAX (Ultrix and VMS), Fujitsu VP 2000, HP 9000, IBM RS/6000, S/370 und Personalcomputem, Intergraph 2000 und 6000, MIPS, NeXT, Sequent Symmetry, Silicon Graphics Indy, Indigo, Iris und Crimson sowie Sun 3, 4, ELC, IPC, und SPARCstation (SunOS oder Solaris). Maple lauft auch auf DOS-Personalcomputem mit oder ohne Microsoft Windows. Maple-Befehle und -Programme sind portabel: Man kann dasselbe Maple-Programm auf einem Personalcomputer, einem Arbeitsplatzrechner (Workstation), einem GroBrechner (Mainframe) oder einem Superrechner laufenlassen.

F Oft gestellte Fragen Wieviel Speicherplatz wird von Maple benOtigt? Wieviel Plattenplatz ist nOtig? Dies hangt von der verwandten Plattform ab und davon, ob man die akademische oder die Studenten version benutzt. Die akademische Version fiir den Macintosh verlangt nach 2.5 Megabytes Speicherplatz und 12 bis 17 Megabytes freien Plattenplatz. Dies ist abhangig davon, ob man soIche optionalen Komponenten wie die Share-Bibliothek und das interaktive Lemprogramm installieren will. Die akademische Version auf einem Personalcomputer verlangt nach 10 bis 16 Megabytes freiem Plattenplatz. Ftir die Microsoft-Windows-Schnittstelle werden vier Megabytes Speicherplatz benotigt; ftir die DOSSchnittstelle reichen ganze zwei Megabytes aus. Bei der Studentenversion unterscheiden sich diese Zahlen auf drei Arten. Erstens ist es so, daB nur ein kleiner Teil der Share-Bibliothek mit der Studentenversion mitgeliefert wird; dies fiihrt dazu, daB der maximale Plattenplatzbedarf urn circa 3.5 Megabyte geringer ausfiillt. Zweitens ist die Maple-Bibliothek komprimiert abgespeichert, was den erforderlichen Plattenplatz urn weitere Megabytes reduziert. Drittens ist mehr Speicherplatz nOtig, da die Bibliotheksroutinen unkomprimiert vorliegen mtissen, wenn man Maple ausftihren will. Deshalb werden fiir die Studentenversion ein oder zwei zuslitzliche Megabytes Speicherplatz empfohlen.

Wie unterscheidet sich die Studentenversion von Maple von der akademischen Version? Der Abschnitt mit dem Titel "Studenten- und akademische Versionen" auf Seite 68 in Kapitel A vergleicht die beiden Versionen und zeigt die Grenzen von beiden auf.

Wo kann ich Maple erwerben? Urn Maple zu erwerben, sollte man den ortlichen Softwarehandler aufsuchen oder sich an eine der im letzten Abschnitt von Kapitel A "Wie man Maple erwirbt' (Seite 68) aufgelisteten Untemehmen wenden. Man findet dort auch eine Liste von Adressen und Telefonnummem.

Wie lernt man Maple am besten? Die beste Art Maple zu lemen, besteht darin, es zu benutzen. Der Leser ist ausdriicklich dazu aufgefordert, die Beispiele und Aufgaben aus Kapitel A durchzuarbeiten. Es gibt aber auch einige sehr gute Lehrbiicher zu Maple. Diese sind in Kapitel H auf Seite 354 beginnend, aufgelistet.

An wen kann ich mich wenden, wenn ich Probleme mit Maple habe? Sollte man Probleme oder Fragen haben, so empfehlen wir, Bticher und Artikel tiber Maple zu lesen, mit dem System zu experimentieren und sich mit anderen Benutzem auszutauschen. Man kann andere Maple-Benutzer zum Beispiel elektronisch erreichen, wenn man Zugang zu einem Modem oder zu einem Netz wie Internet oder Bitnet hat. Man siehe Kapitel E, urn mehr tiber elektronische Korrespondenz und die Maple User Group zu erfahren (Seite 317). Man siehe auch Kapitel H zur Information tiber Maples technische Beratung (Seite 356).

Gibt es ein Internet-Diskussionsjorum (news group)jiir Maple-Benutzer? Die USENET news group sci. math. symbolic diskutiert und informiert tiber Computeralgebra und Computeralgebrasysteme wie Maple.

F.2 Technische Fragen In diesem Abschnitt werden einige gelliufige technische Fragen zu Maple beantwortet. Es werden Beispiele zu Funktionen und Optionen gegeben, die oft iibersehen werden, es wird beschrieben, wie man einige bekannte Fehler umgehen kann, es werden Tips zur Zeitmessung und zur Optimierung

320

F.2 Technische Fragen von Berechnungen gegeben und es werden etwas fortgeschrittenere Fragen zur Programrnierung behandelt.

Mathematische Funktionen Wie kann ich verschiedene Folgen von ZuJallszahlen erzeugen? Bei jedem Start einer Maple-Sitzung ergibt rand dieselbe Folge ,.zuflilliger Zahlen".

% maple > rand ( );

427419669081 > rand();

321110693270 > quit

In einer neuen Sitzung erhalten wir dieselben Zahlen:

% maple > rand ( );

427419669081 > rand();

321110693270 Urn diese Folge von Zufallszahlen zu verandern, weise man der globalen Variablen _seed eine beliebige von Null verschiedene ganze Zahl zu.

% maple > _seed := 2;

_seed

:=

2

> rand();

854839338162 > rand();

642221386540

Wie passe ich eine Kurve an Daten an? In Maple V Version 3 kann man die Funktion leastsquare aus dem Unterpaket fit des stats-Pakets verwenden. Zum Beispiel kOnnen wir eine kubische Kurve durch Datenpunkte legen, die von der Exponentialfunktion im Bereich zwischen 0 und 1 stammen.

321

F Oft gestellte Fragen > with(stats): with(fit): > xdata := [seq(i/lO., i=O .. 10)]: > ydata := map(exp, xdata): > leastsquare[[x,y], y=cO+c1*x+c2*x A2+c3*x A3] ([xdata, ydata]);

y

= .9995154052 + 1.016158410 x + .4229242923 x 2 + .2791658137 x 3

In Maple V Version 2 und vorher legt die Funktion regression aus dem stats-Paket eine Kurve durch Daten, allerdings muB man die Daten erst als statistische Matrix darstellen. Wir behandeln dasselbe Beispiel mit diesem Befehl. > with(stats) : > data := array([seq([i/10., exp(i/10.)], i=0 .. 10)]): > statmatrix := putkey(data,

[x,y]):

> regression (statmatrix, y = cO + c1*x + C2*XA2 + c3*x A3);

{c2

= .4229245377, c1 = 1.016158301, c3 = .2791656638, cO = .9995154153}

Die fi t-Funktion der Share-Bibliothek stellt eine andere Methode dar, eine Kurve an Daten anzupassen. Sie benutzt ebenfalls die Methode der kleinsten Quadrate. > with (share) : > readlib(fit): > xdata := [seq(i/10.,

i=0 .. 10)]:

> ydata := map(exp, xdata): > fit (xdata, ydata,

.999515409

[1, t, t A2, t A3], t);

+ 1.016158418 t + .4229242375 t 2 + .279165859 t3

Urn mehr tiber die Share-Bibliothek und ihre Anwendung zu erfahren, konsultiere man Kapitel E (Seite 308).

Manipulation von Maple-Befehlen Wie kann ich verhindern, daft Maple Teilausdriicke bei Langen Ergebnissen durch %1, %2, usw. ersetzt? Man setze die interface-Variable labeling auf false. > interface(labeling=false);

Ein Beispiel zur Vergabe von Bezeichnungen bei der Ausgabe einer solve-Berechnung findet man auf Seite 17.

Wie kann ich die Anzahl von Elementen einer Folge von Ausdriicken bestimmen oder einzelne Ausdriicke aus einer Folge herausgreifen? Jede Funktion in Maple akzeptiert ihre Argumente als Foige von Ausdriicken. Der Aufruf von nops bei einer Foige von Ausdriicken erglibe also einen Fehler, da nops ein einfaches Argument erwartet. Ein ganz lihnliches Problem stellt sich mit op. > myseq := v, w, x, y, > nops (myseq) ;

z:

Error, wrong number (or type) of parameters in function nops; > op(2 .. 3, myseq) ;

Error, wrong number (or type) of parameters in function op;

322

F.2 Technische Fragen Urn dieses Problem zu IBsen, verwandelt man die Folge in eine Liste, indem man sie in eckige Klammern einschlieBt. > nops ( [myseq) ) ;

5 > op(2 .. 3,

[myseq]);

w,x Der Auswahloperator wlihlt Elemente direkt aus einer Folge von Ausdriicken aus. > myseq [2 .. 3] ;

w,x

1st es m6glich, eine Funktionaufdie KoeJfizienten eines Polynoms anzuwenden. Ich habe versucht, die Betragsfunktion aUf aile KoeJfizienten eines Polynoms anzuwenden, urn die KoeJfizienten positiv zu machen, aber das funktionierte nicht. Das vierte Argument zum collect-Befehl gibt eine Funktion an, die auf aile Koeffizienten des Polynoms angewandt werden soli. Dies kann eine Funktion sein, die nach einem einzigen Argument verlangt, wie abs, floor, round oder c -> 」セRN@ > p := クセS@ - クセR@ + x - 3: > collect(p, x, distributed, abs);

Man kann dieselbe Technik fiir Polynome in mehreren Variablen anwenden. > q := TNWJクセSケR@

> collect(q,

+ 3.01*x*y + 2.*x + 6.9: [x,y], distributed, round);

Eine andere Anwendung der collect-Funktion besteht darin, ein Polynom in x und y in ein Polynom in x zu iiberfiihren, wobei die in y faktorierten Polynome die Koeffizienten sind. Wir listen x als die einzige Unbestimmte auf, so daB die Polynome in y als die Koeffizienten behandelt werden. > r := クセRJケ@ > factor (r) ;

+

RJクセケ@

+

クセR@

+

クJケセS@

+ x + 1:

> collect(r, x, distributed, factor);

323

F Oft gestellte Fragen

Wie kann ich eine Reihe an einem Punkt auswerten? Mit direkter Ersetzung geht es nicht. Man muB die Reihe zuerst in einen reguliiren Ausdruck verwandeln ohne das groBe O. > S

:= taylor (tanh(x), x=Q, 9};

> subs(x=Q.5,

s}; Error, invalid substitution in series

Man wandelt die Potenzreihe in ein gewohnliches Polynom urn mit Hilfe des convert-Befehls. > convert(s, polynom};

> subs(x=Q.5,

"};

.4620783730 Diese Methode gilt auch ftir Laurentreihen; allerdings muB das Ergebnis nicht unbedingt ein Polynom sein (eine Laurentreihe kann mit einigen Termen beginnen. bei denen x im Nenner steht). Man kann diese Technik jedoch nicht auf asymptotische Reihen anwenden. Wir berechnen eine asymptotische Entwicklung ftir den nattirlichen Logarithmus von n! flir n gegen Unendlich und versuchen. den O-Term mit dem convert-Befehlloszuwerden: > asympt (In (n! ), n};

1 (In(n) -1)n+ -In(n) +In 2

(v'2.;7r)

11 + - - -1 31" +0 (1) 5 12 n 360 n n

> convert (", polynom);

1 (In(n) -1)n+ -In(n) +In 2

(v'2.;7r) +

11 - - -1 31 " +0 (1) 5 12 n 360 n n

Man kann nun das groBe 0 durch eine 0 ersetzen. urn diesen letzten Term loszuwerden. Dadurch erhalten wir die Nullfunktion. angewandt auf I/n 5 und die Nullfunktion gibt immer 0 zuruck. unabhangig vom jeweiligen Argument. Die s imp I i fy-Funktion mit der Option at sign erkennt dies und transformiert den Ausdruck in seine endgtiltige Form. > subs (0= 0 ,

");

1 (In(n) - 1) n + -In(n) + In 2

(v'2.;7r) +

-11 - - - 11 - + 0 (1) 12 n 360 n 3 n5

> simplify(", atsign};

1 ( 11 11 (In(n) -l)n+ -In(n) +In J2J?r) + - - - - 2 12 n 360 n 3

324

F.2 Technische Fragen

> evalf(subs(n=200,

"));

863.2319872 > evalf(ln(200!));

863.2319872

Das Lesen von Mapie-Dateien Ich erhalte eine Fehlermeldung, welche eine inkorrekte oderveraltete .m-Datei anzeigt, wenn ich versuche, eine Datei in meine Maple-Sitzung einzulesen. Wie kann ich dieses Problem beheben? Es gibt zwei potentielle Ursachen fUr eine Fehlerrneldung dieser Art: Error, filename.m is an incorrect or outdated .m file Maple verlangt, daB Dateien, die auf ".m" enden, in einem speziellem Binlirforrnat vorliegen. Maple kann Dateien in diesem Format sehr schnell verarbeiten. 1st die Datei eine einfache Textdatei (d.h. wenn man sie aIs Benutzer lesen kann), so sollte man diese umbenennen und es nochmaI versuchen. 1st die Datei schon in Binlirformat, kann es sein, daB sie von einer anderen Maple-Version erzeugt wurde. Benutzt man Maple V Version 3, so dient der Befehl m2src zum Umwandeln einer Version 2 ".m"-Datei in eine einfache Textdatei. Ein anderes Programm, updtsrc, kann dann diese Version 2-Textdatei fUr die Version 3 aktuaIisieren. Die Formate fUr Maple V und Maple V Version 2 sind eben faIls inkompatibel. In diesem FaIl sollte man sich die urspriingliche Textversion besorgen und diese in Maple einlesen. Man sollte danach eine neue ".m" -Datei zur weiteren Verwendung abspeichem.

Zeitmessong ond Optimierung Wie messe ich die Zeit, die von einer Maple-Berechnung verbraucht wird? Wir iIIustrieren hier drei Moglichkeiten. Unten zerlegen wir eine groBe ganze Zahl in Faktoren, wobei wir drei verschiedene Algorithmen benutzen. Wir messen die Zeit auf drei versehiedene Arten. Die benutzten Algorithmen sind Morrison und Brillharts KettenbruchaIgorithmus (die Voreinstellung), Lenstras elliptisehe Kurvenmethode und Pollards rho-Methode. (Die erhaltenen Zeitmessungsergebnisse sollten nieht dazu verwandt werden, die allgemeine Effizienz dieser Methoden abzuschatzen, da es bestimmte Situationen gibt, in denen ein Algorithmus besser aIs die anderen is!.) Erstens ergibt die time-Funktion die Gesamtzahl der benutzten CPU-Sekunden seit dem Start der Maple-Sitzung. Man kann ihren Wert vor und nach einer Bereehnung abfragen, urn so die von einer Folge von Befehlen benutzte Zeit zu berechnen. > start := time(): > ifactor(10'31 - 1);

(3)2(6943319)(57336415063790604359) (2791) > time()

- start;

133.083 Zweitens gibt es den timing-Befehl zur Berechnung der verbrauehten Zeit in der historyUmgebung.

325

F Oft gestellte Fragen > readlib(history) : > history(); 01 := エゥュョァHヲ。」ッイQPセS@

- 1, 1enstra»;

(3)2(6943319)(57336415063790604359)(2791) time = 41.68 02 := off; Drittens zeigt die showtime-Umgebung die benutzte Zeit und den benutzten Speieherplatz nach jedem eingegebenen Befehl an. > readlib(showtime) : > showtime () ;

01 :=

- 1, pollard); ゥヲ。」エッイHQPセS@

(3)2(6943319)(57336415063790604359) (2791) time 8.66 02 := off;

words

324926

Maple scheint auJ3ergewohnlich lange jur die Berechnung eines Ausdrucks der Form a Ab mod m zu brauchen, wenn a und b ganze Zahlen mittlerer GroJ3e sind. Tatsachlich kommt es manchmal vot; daJ3 Maple uberhaupt nichts berechnet. Was kann man dagegen tun? Man soUte den neutralen ExponentiaIoperator & セ@ benutzen. Benutzt man den gewtlhnliehen ExponentiaIoperator, so bereehnet Maple zuerst a セ@ b und reduziert danach das Ergebnis modulo m. Dies erhtlht die Dauer der Bereehnung immens und es kann vorkommen, daB das Zwisehenresultat so gr06 wird, daB Maple nieht mehr weiterreehnet. Das Zwisehenresultat im ersten Beispiel unten hat iiber dreiBigtausend Stellen; das zweite iiber fiinf Millionen. > start := time(): > 8765 セ@ 7832 mod 5367;

5308 > time()

- start;

27.767 > 6578493

セ@ 735493 mod 73638; Error, object too large

Der neutraIe ExponentiaIoperator zusammen mit mod verhindert diese Kurzsiehtigkeit und berechnet das Ergebnis wesentlieh effizienter. > start := time(): >

8765 Fセ@

7832 mod 5367;

5308

326

F.2 Technische Fragen > timet) - start;

.017 > 6578493 &A 735493 mod 73638;

19935 > timet) -

.017 - start;

.016

Ich habe einige numerische Routinen in Maple geschrieben, die nur nach einer bescheidenen Genauigkeit verlangen, aber sie scheinen trotzdem wesentlich langsamer als iihnliche kompilierte Programme zu sein. Gibt es Moglichkeiten, die EJfizienz zu verbessern? Numerische Routinen in Maple sind langsamer aIs kompilierte Routinen. Dies hat zwei Griinde: Erstens werden Maple-Programme bei der AusfUhrung interpretiert, sie werden nicht vorher kompiliert. Zweitens ist die Gleitkommaarithmetik von der Software emuliert, selbst wenn die verlangte Genauigkeit so bescheiden ist, daB direkt in der Computer-Hardware ausgewertet werden konnte. Gegen die verbrauchte Zeit zum Interpretieren kann man wenig tun, man kann die Anwendung aber erheblich beschleunigen, wenn man Auswertung durch die Hardware verlangt. Die Funktion evalhf wertet Ausdriicke unter Verwendung der Hardware-Gleitkomaarithmetik aus. Die meisten Rechner berechnen G1eitkommaausdriicke in Hardware bis zu einer Genauigkeit von fUnfzehn Stellen. Die Digi ts-Option zu evalhf ergibt die Anzahl der Stellen, die von der Hardware unterstiitzt werden. > evalhf(Digits);

15. Verlangt ein Anwendungsprogramm nach einer solchen oder sogar nach einer geringeren Genauigkeit, dann soUte man den Code so andem, daB eva1hf benutzt wird, urn die Effizienz zu verbessem. Die Funktion evalhf verlangt, daB jeder Operand in einem Ausdruck eine ZahI, eine Variable, der eine Zahl zugewiesen wurde, oder eine Referenz auf ein numerisches Feld ist. Sie akzeptiert keine symbolischen Ausdriicke oder Verweise auf andere Datenstrukturen wie Mengen oder Listen. Wegen dieser Einschrankung kann es notig sein, ein Zwischenresultat abzuspeichem, bevor man evalhf aufruft. > nums := [10, 20, 30, 40]: > evalhf(nums[3]/100);

Error, unable to evaluate expression-to hardware floats > temp := nums[3]: > evalhf(temp/100)i

.3000000000000000 Se1bst mit evalhf ist ein Maple-Programm langsarner aIs ein iiquivaIentes kompiliertes Programm. Dennoch bevorzugen viele Leute Maple zum Experimentieren mit Berechnungen und zur Entwicklung von Prototypen fUr numerische Probleme; danach wechselt man dann zu einer kompilierten Sprache urn langwierige Berechnungen durchzufUhren. Die Routinen zur Ubersetzung von Code in Maple (siehe Seite 64) ermoglichen einen Ubergang zu Coder FORTRAN.

327

F Oft gestellte Fragen Programmierung Kann ich eine Maple-Funktion aus extemen Programmen heraus ausru/en? Nicht mit der gewohnlichen Maple-Version. Es gibtjedoch eine andere Version fUr mehrere Plattformen, mit der man Maple-Routinen direkt aus C-Prograrnrnen aufrufen kann. Wegen weiterer Inforrnationen zu dieser "C-aufrufbaren" Version von Maple soUte man sich an den ortIichen Softwarehiindler wenden.

Kann ich exteme Programme aus Maple heraus au/ru/en? Der Befehl sys tern und das escape-to-host-Zeichen ! stehen auf etlichen Plattformen zum Aufruf extemer Programme aus Maple heraus zur Verfligung. Will man ein Prograrnrn ausfiihren, welches aIs Eingabe von Maple berechnete Werte verwendet, so hat man diese Werte erst in eine Datei zu schreiben unter Benutzung von Funktionen wie wri teto oder wri teo Man soUte sichersteUen, daB man die Datei schlieBt, nachdem aIle Daten hineingeschrieben wurden. Dies kann man mit Hilfe vonwriteto (terminal) bzw. close () erreichen. Danachbenutztmanden system-Befehl, urn das exteme Prograrnm mit dieser Datei aIs Eingabe aufzurufen. Will man die Ergebnisse eines extemen Prograrnrns in eine Maple-Sitzung einladen, so muB man wiederum eine Zwischendatei benutzen. Die Maple V Version 2 Befehle readl ine und readda ta ermoglichen es, Daten aus Dateien zu lesen.

Gibt es eine Moglichkeit eine Funktion wiederholt auszuwerten, ohne so umstiindliche Ausdrucke wie f(f(f( . . . f(x) . .. ))) zu verwenden? Kann ich zwei verschiedene Funktionen zusammensetzen ohnef(g(x)) zu schreiben? Der wiederholte Verkettungsoperator @@ bezeichnet eine geschachtelte Auswertung einer einzigen Funktion. Dieser binlire Operator hat die Formf@@n, wobeif die Funktion ist, die man iterieren m1ichte und n ist die Anzahl der gewlinschten Iterationen. Somit ist In@@3 ausgewertet in x gleich In ( In ( In (x) ) ) . Man muB eine iterierte Funktionen in Klarnmem einschlieBen, wenn man sie aufrufen will: > (cos@@50) (1.);

.7390851340

Der Verkettungsoperator @, kombiniert zwei beliebige Funktionen. Die Funktion f@g ausgewertet in x berechnet f(g(x». Wirdefinieren beispielsweise eine Funktion logsec, die den natlirlichen Logarithrnus des Absolutwertes des Sekans einer Zahl berechnet: > logsec := In@abs@sec;

logsec := In@abs@sec > logsec(Pi);

o Wie bei der wiederholten Verkettung muB man eine Komposition in K1arnmem einschlieBen, wenn man sie direkt aufruft. > (In@ln) (1000.);

1.932644734

328

F.2 Technische Fragen Kann ich mir Maple-Quellcode anschauen? Siimtliche Funktionen in der Maple-Bibliothek sind in Maples eigener Programmiersprache geschrieben. Man kann den Quellcode einer beliebigen Funktion der Maple-Bibliothek inspizieren. Die Bibliothek enthlilt den weitaus groBten Teil der mathematischen Routinen von Maple, einige grundlegende Funktionen sind aber auch im Kern (oder Kernel) definiert. Der Kernel ist ein kompiliertes C-Programm und man kann sieh dessen Quellcode nieht ansehen. Urn sieh den Quellcode einer Bibliotheksfunktion anzuschauen, setze man die interfaceVariable verboseproc auf 2. Dann drucke man den Rumpf oder Korper der Funktion mit eval oder pr in taus. In diesem ausfiihrlichen Modus sieht man auch den Rumpf einer jeden beliebigen, mit readlib eingelesenen Bibliotheksfunktion. 1m folgenden Beispiel setzen wir zuerst verboseproc, danach lesen wir die Definition fiir copy ein, einer Routine zur Erzeugung einer Kopie eines Feldes oder einer Tabelle. Maple spielt ihren Quellcode vor. Wir versuchen dann evalf, haben damit aber keinen Erfolg, da evalf im Maple-Kern definiert ist (die options builtin identifizieren dies als solches). Man findet einige weitere Beispiele in Kapitel A, beginnend auf Seite 53. > interface(verboseproc = 2); > readlib(copy);

proc(A) options 'Copyright 1993 by Waterloo Maple Software'; if type (A, (array,table}) then if type (A,name) then map(proc() args end,eval(A» else map(proc() args end,A) fi else A fi end > print (evalf) ;

proc() options builtin,remember; 76 end > interface(verboseproc = 1);

Die Master-Version l der Maple-Bibliothek enthlilt erklarende Kommentare, die von den MapleProgrammierern verfaBt wurden. Diese Kommentare sind aus der gewohnlichen kommerziellen Version entfernt worden. Man kann eine Version der Master-Kopie der Maple-Bibliotheksquelle zusammen mit Kommentaren beim Maple-Vertreiber kaufen.

Wie sehen die Regeln fiir die Bindung (Giiltigkeitsbereich) von Definitionen in Maple aus? Kann ich eine Funktion innerhalb einer anderen Funktion deklarieren und aile Variablen der inneren Funktion in der iiuj3eren Funktion verwenden, so wie es bei Pascal moglich ist? Jede Variable in Maple ist entweder ein formaler Parameter, eine lokale oder eine globale Variable. Bevor Version 3 war der Unterschied zwischen lokalen und globalen Variablen einfach: eine Variable ist lokal genau dann, wenn sie als lokale Variable deklariert wurde. In Version 3 ist eine Variable lokal, falls sie als lokale Variable deklariert wurde oder falls sie undeklariert ist und eine der folgenden Bedingungen erfiillt ist. • Sie ist die Indexvariable einer for- oder seq-Anweisung. • Sie tritt auf der linken Seite einer Anweisung auf. 1m Gegensatz zu Pascal ist es so, daB eine innerhalb einer anderen Prozedur definierte Prozedur nicht auf die lokalen Variablen oder Formalparameter der auBeren Prozedur zugreifen kann. Wir illustrieren dies anhand einiger Beipiele. In diesem Programm ist g innerhalb des Rumpfes von f definiert, aber das a innerhalb des Rumpfes von g bezieht sich auf die globale Variable a, nicht auf die lokale Variable von f. Ein Aufruf von f liefert den globalen Wert von a. 1 Anm.

d. Ubers: Das heiBt die Originalversion

329

F Oft gestellte Fragen > f

: = proc ()

> local a, g; > a := 1; > g := proc() a end; > g() > end: > a := 2: > f () ;

2

Wir versuchen nun, eine Funktion addn einer einfachen Variablen n zu definieren, welche eine andere Funktion ergibt. Diese zUriickgegebene Funktion soUte n zu ihrem Argument hinzuaddieren. Wir sind wiederum gescheitert, wenn die innere Funktion den formalen Parameter der auHeren Funktion nieht erkennen kann. > addn := n ->

(x -> X + n);

addn := n

--+

x

--+

x

+n

> addn(5);

Andere Programmiersprachen wie Pascal benutzen eine ausgefeiltere Bindungsregel, geschachtelte lexikalische Bindung, welche das Problem ltist. Maple wird geschachtelte lexikalische Bindung in zukiinftigen Versionen benutzen. Mit der gegenwiirtigen Version von Maple ltisen wir diese Probleme, indem wir die geschachtelte lexikalische Bindung durch eine kreative Substitution simulieren. > f > >

: = proc ()

local a, g; a : = 1; g := subs (aa=a, proc() aa end);

> > g() > end: > a := 2: > f ();

1 > addn := n -> subs (nn=n, > addn(5);

>

(x -> x + nn)):

"(10);

15 Eine andere Moglichkeit besteht darin, unapply in einem Prozedurenrumpf zu verwenden, urn bei jedem Durchlauf der Prozedur eine neue Funktion zu erzeugen.

330

F.2 Technische Fragen > addn ;= n -> unapply(x+n, x); > addn(17);

x->x+17

Wie erzeuge ich mein eigenes Paket von Maple-Funktionen? Wie kann ich meine eigene Bibliothek erzeugen? Mit diesem Beispiel demonstrieren wir beides. Ein Paket in Maple ist einfach eine Tabelle. deren Eintriige Prozeduren sind. Dies erkliirt. warum der Aufruf einer Maple-Funktion in einem Paket der Syntax ftir Suchen in Tabellen iihneIt (z. B. comb ina t [ f ibonacc i] (15). Urn ein eigenes Paket zu erzeugen. gibt man zuerst alle Funktion in eine Datei ein und benennt eine jede dieser Funktionen a1s Eintrag einer Tabelle. Der Name der Tabelle ist der Name des Pakets. Unten haben wir einige Polynomoperationen kodiert. die nicht in der Maple-Bibliothek erhiiltlich sind. Wir mochten diese in einem neuen Paket mit Namen polyops zusammenfassen. Hier ist der Code fiir unser Paket. welchen wir in eine Datei mit Namen "polyops" geschrieben haben. polyops[len] ;= proc(p;polynom(constant), x;name) convert (map (abs, [coeffs(expand(p), x)]), '+') end;

polyops[height] ;= proc(p;polynom(constant) , x;name) max(coeffs(collect(p, x, distributed, abs) , x)) end;

polyops[qnorm] ;= proc(p;polynom(constant), x;name) sqrt(convert(map(z->z*conjugate(z), [coeffs(expand(p), x)]), '+')) end;

polyops[boundRoots] ;= proc(p;polynom(constant) , x;name) local q, d, s, n, t, b, bl, b2, b3; q := collect(p, x, distributed, evalf); d := degree(q, x); s := lcoeff(q, x); n .- nops(q); if d=ldegree(q, x) then RETURN(O) fi; if s 1. then q := expand(q/s) fi; bl := 1 + polyops[height] (q - xAd, x); b2 : = max (1., polyops [len] (q - xAd, x)); b := min(bl, b2); b3 := 0; for t in q_xAd while b3 read polyops; > p := x A 10 + x A 9 - x A 7 - x A 6 - x A 5 - x A 4 - x A 3 + x + 1:

> polyops[qnorm] (p, xl;

3 > polyops[boundRootsDense] (p, xl;

2. Funktionen aus den gewohnlichen Bibliothekspaketen konnen mit kurzen Namen (ohne Aufsuchen in Tabellen) aufgerufen werden, sobald sie mit dem wi th-Befehl in die Sitzung eingeladen wurden. Wir wurden dies mit unserem polyops-Paket ganz geme genauso handhaben. Dazu mussen wir zwei Schritte ausfilhren: Wir mussen unsere eigene Bibliothek erzeugen und polyops darin hineinkopieren. Au8erdem mussen wir unsere Maple-Umgebung so modifizieren, daB der wi thBefehl auch nach Paketen in dieser Bibliothek sucht. Zuerst mussen wir uns uberlegen, wo wir unsere Maple-Bibliothek installieren wollen. Bei diesem Beispiel benutzen wir das Unix-Verzeichnis / usr /myname /mymaplelib. Nachdem wir dieses Verzeichnis erzeugt haben, starten wir Maple in dem Verzeichnis, welches den Maple-Code enthiilt und geben die folgenden Befehle ein: > read polyops; > save '/usr/myname/mymaplelib/polyops.m';

> quit Der Leser wlirde jetzt selbstverstiindlich den Namen seines Pakets und das Verzeichnis seiner Bibliothek hier einsetzen, es ist allerdings nlltig, daB der Dateiname mit der Erweiterung ".m" endet. Dies stellt sicher, daB die Datei in Maples intemem Format abgespeichert wird. Aile Dateien einer Maple-Bibliothek mussen sich in diesem Format befinden. Nun filgen wir die folgende Zeile an das Ende def Maple-Initialisierungsdatei an (siehe Seite 56), wobei der Leser natlirlich wieder sein Maple-Bibliotheksverzeichnis hier einsetzt. (Diese Syntax ist neu in Maple V Version 2. Unter Maple V benutze man den Variablennamen _libli s t anstelle von libname und gebe die Pfade als Liste an.) >

libname:= libname,

'/usr/myname/mymaplelib':

Immer wenn man nun readl ib ooer wi th in Maple benutzt, urn eine Funktion oder ein Paket in eine Sitzung zu laden, wird Maple nun auch automatisch die neu erstellte Bibliothek nach der Funktion bzw. dem Paket durchsuchen, falls es sie in der Standardbibliothek nicht finden kann. Die globale Variable libname kann beliebig viele Bibliotheksverzeichnisse auflisten. Die Bibliotheken werden immer in def Reihenfolge durchsucht, die durch die Anordnung in dieser Foige impliziert ist. Zum Beispiel kann 1 ibname so aussehen:

Fehlerkorrektur-Bibliothek, Standardbibliothek, Gruppenprojekt-Bibliothek, Persoenliche-Bibliothek In einer neuen Maple-Sitzung laden wir unser Paket mit Hilfe des wi th-Befehls ein und rufen ihre Funktionen mit kurzen Namen auf. > libname;

lusrllocaVmapleV.2Ilib, lusrlmyname/mymaplelib > with(polyopsl;

[boumiRoots, boundRootsDense, height, len, qnorml

333

F Oft gestellte Fragen > p := xA10 + x A9 - x A7 - x A6 - x A5 - x A4 - x A3 + x + 1: > qnorm(p, x);

3 > boundRootsDense(p, x);

2. Diese Methode hat allerdings einen Nachteil: aile Funktionen dieses Pakets werden auf einmal in die Sitzung eingeladen. Bei dem kurzen hier angegebenen Beispiel ist das problemlos, flir gro8ere Pakete kann es aber bedeutsam sein, daB nur solche Funktionen eingeladen werden, die aueh wirklieh gebraueht werden. Wir illustrieren diese Teehnik anhand des po1yops-Pakets. Zuerst erstelle man ein Dateiverzeiehnis mit Namen po1yops in dem personliehen Bibliotheksverzeiehnis. Danach lindere man die Namen ihrer Funktionen zu 'po1yops/jktname'. Man speiehere jede Funktion in eine eigene ".m"-Datei im po1yops-Verzeiehnis abo Am einfaehsten gesehieht dies durch Hinzufligen von save-Anweisungen zum urspriingliehen Code. Unser modifiziertes po1yops-Paket beginnt Z. B. nun folgenderma8en: 'po1yops/1en' := proc(p:po1ynom(constant), x:name) convert (map (abs, [coeffs(expand(p), x)]), '+') end: save 'po1yops/1en', '/usr/myname/mymap1e1ib/po1yops/1en.m'; Nun lese man diese Datei in eine Maple-Sitzung ein, urn aile ".m" -Dateien zu erzeugen. SehlieSlieh erzeuge man die Master-Datei fUr po 1yops, die die Routinen des Pakets naeh BedarfeinUidt. Diese hat die folgende Form: po1yops[len] := 'read1ib('po1yops/1en')': po1yops[height] := 'read1ib('po1yops/height')': po1yops[qnorm] := 'read1ib('po1yops/qnorm')': po1yops[boundRoots] := 'readlib('po1yops/boundRoots')': polyops[boundRootsDense] := 'readlib('po1yops/boundRootsDense')': (Unter Maple V durehsueht readl ib nur die Standardbibliothek; jede dieser Anweisungen verlangt also naeh einem zweiten Argument, den vollstlindigen Pfadnamen der Datei, in der die Funktion definiert ist.) Man benutze wiederum Maple, urn diese als "polyops.m" abzuspeiehem und zur Bibliothek hinzuzufligen (zur obersten Ebene, nieht zum polyops-Dateiverzeiehnis). Sie ersetzt die alte po1yops . m-Datei. Wenn wir nun den Befehl wi th (polyops) eingeben, so wird keine der Funktion unverziiglieh eingeladen, vielmehr werden ihre Namen einem read1 ibBefehl zugewiesen, der die Funktion automatiseh dann einllidt, wenn sie zum erstenmal aufgerufen wird. Dies verlangsamt spatere Aufrufe derse1ben Funktion nieht, da read1 ib keine Auswirkung hat auf Funktionen, die bereits geladen wurden (readlib hat die option remember). Wir geben noeh ein weiteres Beispiel zur Benutzung dieses neuen Sehemas an. Die vorgenommenen Verlinderungen haben keinen EinDuS darauf. wie das Paket geladen oder die Funktion aufgerufen wird. Urn die Sache etwas interessanter zu gestalten, benutzen wir nun ein wesentIieh gro8eres Polynom. > with (polyops) ;

[boundRoots, boundRootsDense, height, len, qnormj > p := xA10000 + randpoly(x, degree=9999, terms=30, > coeffs=rand(-10A6 .. 10 A6)) + rand(-10A6 .. 10 A6) (): > height (p, x);

974460

334

F.2 Technische Fragen > boundRoots(p, xl, 1.205553735

Wie erzeuge ich Hilfstext zu meinen eigenen Maple-Funktionen und -Paketen? Urn eine Hilfsseite fUr eine Funktion oder ein Paket zu erzeugen, schreibe man zuniichst eine einfache Textversion der Hilfsseite in einem Editor, wobei man den 5til der Maple-Hilfsseiten nachahmt. Am einfachsten verwandelt man diese Textdatei in eine Maple-Hilfsseite mit dem makehelpBefehl. Diese 50nstige Bibliotheksfunktion installiert den Hilfstext im ,,help" -Dateiverzeichnis einer Maple-Bibliothek. Diese Hilfsseite steht selbst dann zur Verfugung, wenn die entsprechende Funktion oder Paket nicht eingeladen wurde. Viele Leute bevorzugen es jedoch, den Hilfstext fUr eine Funktion bzw. ein Paket da abzuspeichem, wo sich auch der Code befindet. Dies vereinfacht den Transport von Code und Hilfstext auf andere Rechner oder auch den gemeinsamen Zugriff mit anderen Benutzem. Wir beschreiben bier eine M6glichkeit, den Hilfstext so abzuspeichem. Zuerst editiere man die Hilfsdatei, urn ein TEXTObjekt aus dem Hilfstext zu machen, wobei man jede Zeile in schriiggestellte Hochkommata einschlieBt und Zeilen durch Kommata abtrennt. 1st die Hilfsseite eine Einfiihrung zu einem Paket oder Hilfe zu einer Funktion, die nicht zu einem Paket geh6rt, so sollte man das TEXT-Objekt der Variablen 'help/ text / name' zuweisen, wobei name der Name der Funktion bzw. des Pakets ist. Wir erzeugen z. B. eine Hilfsseite fUr das polyops-Paket, welches wir im vorangehenden Abschnitt entwickelt haben: 'help/text/polyops' := TEXT( 'HILFE FUER: Einfuehrung ins polyops-Paket', 'AUFRUFSFOLGE: ' , (argsl " polyops[] (argsl " 'SYNOPSIS:', - Das polyops-Paket enthaelt Funktionen zur Anwendung', spezieller Operationen auf univariate Polynome mit ' reel len oder komplexen Koeffizienten. " - Die zur Verfuegung stehenden Funktionen sind:', boundRoots

boundRootsDense

height

len

qnorm',

- Fuer Hilfe zu einer bestimmten Funktion benutze man', ?polyops[] " Urn z. B. die Hoehe des Polynoms p in der', variablen x zu berechnen, benutze man', with (polyopsl ; height(p, xl; " 'SIEHE AUCH: with, polyops[] '): Urn eine Hilfsseite fUr eine Funktion name, welche im Paket pk/ definiert ist, zu erstellen, weise man dem TExT-Objekt die Variable 'help/pkt/text/name' zu. Hier ist z. B. eine Hilfsseite fur die Funktion height des polyops-Pakets: 'help/polyops/text/height' := TEXT( 'HILFE FUER: polyops[height] - berechne die Hoehe eines Polynoms', 'AUFRUFSFOLGE: ' , height (p, xl', 'PARAMETER: ' , p - ein Polynom einer variablen mit konstanten Koeffizienten', x - die Unbestimmte des Polynoms',

335

F Oft gestellte Fragen 'SYNOPSIS: ' , Die Funktion height berechnet die Hoehe eines Polynoms einer', Variablen. " - Die Hoehe eines Polynoms einer Variablen ist der groesste' , Koeffizient im Absolutwert des Polynoms.', Diese Funktion gehoert zum polyops-Paket und muss', durch with(polyops} definiert werden, bevor man sie benutzen' , kann. \

I

'BEISPIELE: ' , '> with (polyops) :', '> height(x'3 + 2*x + 1, x};', 2' ,

'> height(5.3*y'14 + (4+3*I}*y'7 + 16/3, y};', 16/3' , 'SIEHE AUCH:

polyops'):

Man fiige die Definitionen fiir die Hilfsseiten zu der Datei hinzu, die den Quellcode enthlilt. In unserem eigenen Beispiel aus der letzten Frage wiirden diese Definitionen in der Datei polyops stehen und dann in die Datei polyops.m iibersetzt werden. Der Hilfstext steht nur nach dem Laden der Funktion bzw. des Pakets zur Verfiigung. > with (polyops) : > ?polyops HILFE FUER: Einfuehrung ins polyops-Paket AUFRUFSFOLGE: (args) polyops[] (args) SYNOPSIS: - Das po1yops-paket enthaelt Funktionen zur Anwendung spezieller Operationen auf univariate Polynome mit reellen oder komplexen Koeffizienten. - Die zur Verfuegung stehenden Funktionen sind: boundRoots

boundRootsDense

height

len

qnorm

- Fuer Hilfe zu einer bestimmten Funktion benutze man ?polyops[] - Urn z. B. die Hoehe des Polynoms p in der Variablen x zu berechnen, benutze man with(polyops}; height(p, x};

SIEHE AUCH: with, polyops[]

336

G

Mathematica uDd Maple im Vergleich

Maple und Mathematica sind die beiden erfolgreichsten zur Zeit erhaItlichen Computeralgebrasysteme. In diesem KapiteI vergleichen wir die beiden Systeme und zeigen die Unterschiede auf. 1m ersten Abschnitt werden sowohl einige der Hauptgemeinsamkeiten der beiden Systeme a1s auch einige wesentIiche Unterschiede behandelt. 1m zweiten Abschnitt werden die gebrauchlichen Mathematica-Funktionen, -Optionen und -Symbole zusammen mit ihren Maple-Gegenstiicken aufgelistet. Der Zweck dieses Abschnitts besteht darin, Leuten mit Erfahrung in Mathematica das Lemen von Maple zu erleichtem.

G.t

Vergleich

Maple und Mathematica haben ahnliche Fahigkeiten. Beide Systeme fiihren symbolische Manipulationen sowie numerische Berechnungen mit beliebig hoher Genauigkeit aus; beide Systeme sind auch dazu in der Lage, zwei- und dreidimensionale Graphiken zu erzeugen. Sowohl Maple a1s auch Mathematica sind programmierbar. Sie laufen auf einer Vielzahl von Rechnem, darunter viele Personalcomputer und Arbeitsplatzrechner, sowie mehrere GroB- und Superrechner. Sie unterscheiden sich aber wesentIich in ihrer Struktur.

GroBe Maple hat einen kleinen Kern und ist modular aufgebaut; Funktionen werden nur dann in den Speicher eingeIaden, wenn sie gebraucht werden. Maple verlangt nach zwei Megabytes Hauptspeicherplatz, urn verniinftig arbeiten zu konnen. Mathematica dagegen besitzt einen groBen Kern, der nach acht Megabytes Hauptspeicherplatz verlangt, urn verniinftig laufen zu konnen. Bei einigen Systemen kann es wegen dieser GroBe oft bis zu einer Minute dauern, bevor der Mathematica-Kern eingeladen is!. Dies ist zum Beispiel beim Macintosh der Fall.

Quellcode und On-Line-Hilfe Der groBte Teil von Maple ist in Maples eigener Programmiersprache geschrieben. Man kann diesen Code inspizieren und sogar modilizieren. Mathematica dagegen ist hauptsiichlich in C geschrieben. Man kann sich den Code weder ansehen, noch kann man ihn modifizieren. Sowohl Maple a1s auch Mathematica verfiigen tiber On-Line-Hilfe, die dem Benutzer hilft, die benOtigten Funktionen zu linden und ihm zeigt, wie man sie benutzt. Die On-Line-Hilfe in Maple ist detaiIlierter a1s die in Mathematica. 1m Gegensatz zu Mathematica enthaIt die MapleHilfsinformation Beispiele und Querverweise. Sowohl Maple a1s auch Mathematica verftigen tiber einen interaktiven Browser von Hilfsstichworten, welcher dem Benutzer hilft, Informationen iiber einen Befehl zu linden, selbst wenn man den genauen Namen des Befehls nicht kennt.

Programmierbarkeit Sowohl Maple a1s auch Mathematica sind programmierbar. Programmierung in Maple ahnelt der Programmierung in Pascal. Mathematica unterstiizt mehrere Programmierarten: prozedurale, funktionale, auf Regeln basierende und objekt-orientierte Programmierung.

Namenskonventionen Maple ist nicht so konsistent in seinen Namenskonventionen wie Mathematica. Jede spracheigene Funktion in Mathematica beginnt mit einem GroBbuchstaben. In Maple beginnen manche Namen mit einem GroBbuchstaben, andere mit einem Kleinbuchstaben und wieder andere bestehen nur aus GroBbuchstaben. Maple benutzt sehr oft Abkiirzungen, Mathematica benutzt selten Abktirzungen.

G Mathernatica und Maple irn Vergleich Funktionalitaten 1m folgenden fUhren wir einige wichtige Funktionalitaten von Maple und Mathematica auf. Maple V Version 2 und Version 3 • Arbeitsblattschnittstelle (wie in Kapitei B beschrieben) • Ausgabe in mathematischer Schreibweise (unter Benutzung von Symbolen wie.J, und セI@ • Kleiner Kern und modularer Aufbau (geringer Speicherplatzbedarf, startet scfme1l auf allen Systemen) • Offenes System (Quellcode der meisten Funktionen in Maple kann inspiziert und modifiziert werden) • On-Line-Dokumentation mit Beispielen

r

Mathematica 2.2 • Notebook-Frontend • Mustererkennung (pattern matching) • Auf Regeln basierende Programmierung • Klangerzeugung Das Notebook-Frontend ist iihnlich wie die Maple-Arbeitsschnittstelle aufgebaut. Dieses Frontend, welches man bei Macintosh-, NeXT-, MS-Windows- und X-Windows-Versionen von Mathematica findet, erlaubt es, Notebooks oder Dateien, welche Text, Mathematica-Eingabe, -Ausgabe oder -Graphik enthalten, zu schreiben. Die Mustererkennungsfunktion erlaubt es, TeilausdrUcken Namen zuzuweisen und spiiter vorzuschreiben, was mit den Namen geschehen soli. Hat man zum Beispiel ein Paar von Zahlen, bei der die erste Zahl das Jahr und die zweite Zahl die U.S.-Verschuldung in jenem Jahr darstellt, dann kann mit Hilfe der Musterkennung dem ersten Wert den Namen Jahr und dem zweiten Wert den Namen Schuld zuweisen. Die Regel {Jahr_, Schuld_} : > {Jahr, Log [Schuld] } weist Mathematica an, den Logarithmus des zweiten Werts eines Paares zurUckzugeben. In [1] : = {{1950, 256097}, {1970, 370094}, {1990, 3233313}} /. {Jahr_, Schu1d_} :> {Jahr, Log[Schu1d]} Out[l]=

{{1950, Log[256097]}, {1970, Log[370094]}, {1990, Log[3233313]}}

Version 2.0 und spiitere Versionen von Mathematica unterstiitzen akustische Effekte. Genauso wie man eine Funktion zeichnen kann, kann man eine Funktion auch ,,spielen" . Sowohl Maple als auch Mathematica sind seit ihrer Ersteinflihrung wesentlich verbessert worden. Einige der Verbesserungen sind auf Bitten der Benutzer vorgenommen worden. Andere Verbesserungen kamen dadurch zustande, daB sowohl Waterloo Maple Software als auch Wolfram Research Inc. l danach streben, das beste auf dem Markt befindliche Produkt zu haben. Wir gehen davon aus, daB beide Unternehmen weiterhin danach streben werden, Software zu produzieren, die besser als die ihrer Mitbewerber ist; deshalb ist es sehr wa1trscheinlich, daB kUnftige Versionen noch mehr bieten werden.

G.2 Entsprechende Funktionen in Maple ond Mathematica Auf den folgenden Seiten sind Hunderte von Mathematica-Funktionen zusammen mit der aquivalenten oder zumindest eng verbundenen Maple-Funktion alphabetisch geordnet aufgelistet. Mathematica-Funktionen, welche in Paketen definiert sind, sind auch in dieser Liste enthalten. Der Paketname einer Funktion erscheint genau unterhalb des Funktionsnamens; die Routine AddEdge in Mathematica z. B. gehOrt zum Paket DiscreteMath ·Combinatorica·. Die Schreibweise paket[funktion] in der Maple-Spalte gibt an, daB funktion zum Maple-Paket paket gehOrt. Entsprechen mehrere Maple-Funktionen einer Funktion in Mathematica, so sind diese in aufeianderfolgenden Zeilen gelistet; der Mathematica-Funktion Eigenvalues z. B. entsprechen die Maple-Funktionen Eigenvals und lina1g [eigenva1s].

1 Anm.

338

d. Ubers: Die Firma, die Mathematica entwickelt

G.2 Entsprechende Funktionen in Maple und Mathematica

Mathematica

Maple

A Abort[] Abs[z] AddEdge[g, {VI, V2}, Directed] DiscreteMath • Combinatorica • AddEdge[g, {VI, V2}] DiscreteMath' Combinatorica • AddVertex[g] DiscreteMath • Combinatorica • AiryAi[x] AiryBi[x] AllPairsShortestPath[g] DiscreteMath • Combinatorica • AmbientLight->color And[ausdrI, ausdr2] Apart[ausdr, x] Append[liste, elem] AppendCoiumns[AI, A2, . 00] LinearAigebra • MatrixManipuiation • AppendRows[AI,A2, 000] LinearAigebra • MatrixManipuiation • Appiy[Pius, ausdr] Appiy[Times, ausdr] ArcCos[z] ArcCosh[z] ArcCot[z] ArcCoth[z] ArcCsc[z] ArcCsch[z] ArcSec[z] ArcSech[z] ArcSin[z] ArcSinh[z] ArcTan[x, y] ArcTan[z] ArcTanh[z] ArrayLt. {m, n} ] ArrayLf, dims] Array[J, n] AspectRatio->Automatic Axes->Faise Axes->True AxesLabei->{ label"" labely , label. } AxesLabei->{ label"" labely}

ERROR(meldung) abs(z) networks[addedge]([vl, V2], g) networks[addedge]( {VI, V2}, g) networks[addvertex](v, g) Ai(x) Bi(x) networks[ailpairs](g) ambientlight=[r, g, b) ausdrl and ausdr2 convert(ausdr, parfrac, x) [op(liste), elem] linaig[stack](AI, A2, 000) linaig[augment](AI, A2, 000) linaig[concat](AI, A2, 000) convert(ausdr, '+') convert(ausdr, '. ') arccos(z) arccosh(z) arccot(z) arccoth(z) arccsc(z) arccsch(z) arcsec(z) arcsech(z) arcsin(z) arcsinh(z) arctan(y, x) arctan(z) arctanh(z) linaig[matrix](m, n,f) arraY(inde;rJkt, grenzen, liste) [f(i) $ i=l..n]

iinaig[vector](n, f) [seq(f(i), i=l..n)] scaiing=CONSTRAINED axes=NONE axes=NORMAL iabeis=[label"" labely, label.] iabeis=[label"" labely]

B BaseForm[zahl, 16] BaseForm[zahl, 2] BaseForm[zahl, 8] BaseForm[zahl, n] BernoulliB[n, x] BernoulliB [n] BesselI[n, z] BesseU[n, z] BesselK[n, z] BesseiY[n, z] Beta[zI, Z2] BetaDistribution[0:, f3]

convert(zahl, hex) convert(zahl, binary) convert(zahl, octal) convert(zahl, base, n) bernoulli(n, x) numtheory[B](n, x) bernoulli(n) numtheory[B](n) BesselI(n, z) BesseU(n, z) Besse1K(n, z) BesseiY(n, z) Beta(zI, Z2) beta[o:, .6]

339

G Mathematica und Maple im Vergleich Statistics' ContinuousDistributions • Binomial[n, m] BinomiaiDistribution[n, p] Statistics' DiscreteDistributions • Boxed->True Break[ ]

stats[random], stats[statevalf] binomial(n, m) binomiald[n, p] stats[random], stats[statevalf] axes=BOXED break

C Cancel[ausdr] CartesianMap[e, {a, b}, {c, d}] Graphics' ComplexMap • CartesianProduct[listel , liste2] DiscreteMath • Combinatorica • Catalan CauchyDistribution[a, b) Statistics' ContinuousDistributions • CDF[verteilung, x] Statistics' ContinuousDistributions • CDF[verteilung, x] Statistics' DiscreteDistributions • Ceiling[x] CentraiMoment[liste, n] Statistics' DescriptiveStatistics • CForm[ausdr] ChebyshevT[n, x] ChebyshevU[n, x] Check[ausdr, fehlerausdr] CheckAbort[ausdr, fehlerausdr] ChineseRemainderTheorem[listel , liste2] NumberTheory' NumberTheoryFunctions' ChiSquareDistribution[n] Statistics' ContinuousDistributions • Chop[ausdr] ChromaticPolynomial[g, z] DiscreteMath' Combinatorica • Clear[name] Close[strom] Coefficient[ poly, ausdr] Coefficient[poly, var, n] Coefficient[ ausdr, form]

CoefficientList[ poly, {Xl, X2, ... }] CoefficientList[ poly, x] Collect[ausdr, x] Complement[listq, liste2] Complex ComplexExpand[ausdr] ComplexToTrig[ausdr] Algebra' Trigonometry • ComposeSeries[a, b] CompositionLt. g] Compositions[n, k] DiscreteMath • Combinatorica • Conjugate[z] ConnectedComponents[g] DiscreteMath • Combinatorica • ConstrainedMax[ausdr, unglchgen, vars] ConstrainedMin[ausdr, unglchgen, vars] ContextToFilename["context'''] ContinuedFraction[x, n] NumberTheory' ContinuedFractions •

340

normal(ausdr) plots[conformal](e, z=a+c*I..b+d*I)

combinat[cartprod]([listel , liste2]) Catalan cauchy[a, b] stats[random], stats[statevalf] stats[ statevalf, cdf[verteilung]] (x) stats[ statevalf, dcdf[verteilung ]](x) ceil(x) stats[describe, moment[n, mean]](liste) C(ausdr) orthopoly[T](n, x) orthopoly[U](n, x) traperror(ausdr) traperror(ausdr) chrem(listel, liste2) numtheory[mcombine](a, ra, b, rb) chisquare[n] stats[random], stats[statevalf] fnormal(ausdr) networks[chrompoly](g, z) unassign('name') name:= 'name' close( ) coeff( poly, ausdr) coeff( poly, x, n) degree(a, x) icoeff(p, x) coeffs(poly, {Xl. X2, ... }) coeffs(poly, x) collect(ausdr, x) mengel minus menge2 complex evalc(ausdr) convert(ausdr, trig)

powseries[compose](a, b) f@g combinat[composition](n, k) conjugate(z) networks[ components ](g) simplex[maximize] (ausdr , unglchgen, NONNEGATIVE) simpiex[minimize](ausdr , unglchgen, NONNEGATIVE) convert( dateiname, hostfile) convert(x, confrac, n) numtheory[cfrac](x, n, quotients)

G.2 Entsprechende Funktionen in Maple und Mathematica ContourPlot[ ... , Contours->liste] ContourPlot[ ... , Contours->n] ContourPlot[ ... , ContourStyle->Dashing[liste]] ContourPlot[ .. ContourStyle->Thickness[rlJ ContourPlot[ausdr, {x, a, b}, {y, c, d}] 0

,

Contours->liste Contours->n ContourStyle->Dashing[liste] ContourStyle->Thickness[r] Contract[g, {x, y}] DiscreteMath ' Combinatorica ' Convert[alt, neu] Miscellaneous' Units' ConvexHull[ {{Xl, YI}, {X2, Y2}, o}] DiscreteMath ' ComputationalGeometry , Cos[z] Cosh[z] CosIntegral[z] Cot[z] Coth[z] Count[ausdr, teilausdr, Infinity] CrossProduct[u, v] Calculus' VectorAnalysis ' Csc[z] Csch[z] Curl[f, Cylindrical[vars]] Calculus' VectorAnalysis ' Curl[f, Spherical[vars]] Calculus' VectorAnalysis ' Curl[f] Calculus' VectorAnalysis ' Cycle[n] DiscreteMath ' Combinatorica ' Cyclotomic[n, x] CylindricalPlot3D[ausdr, rngr , rng",] Graphics' ParametricPlot3D ' 0

0

plots[contourplot]( 0 0 0 , contours=liste) plots[contourplot](o contours=n) plots[contourplot](o linestyle=n) plots[contourplot](o thickness=n) plot3d(ausdr, x=a .. b, y=c..d, style=CONTOUR, orientation=[O, 0]) plots[contourplot](ausdr, x=a .. b, y=c..d) contours=liste contours=n linestyle=n thickness=n networks[contract]({x, Y}, g) 0

0

,

0

0

,

0

0

,

convert(alt, degrees) convert(alt, metric) convert(alt, radians) geometry[convexhull]( punkte) cos(z) cosh(z) Ci(z) cot(z) coth(z) numboccur(ausdr, teilausdr) Iinalg[crossprod](u, v) csc(z) csch(z) linalg[curl](f, vars, coords=cylindrical) linalg[curl](f, vars, coords=spherical) linalg[curl](f, vars) networks [cycle] (n) numtheory[cyclotomic](n, x) plot3d(ausdr, rnge, rngz, coords=cylindriC'a1) plots[cylinderplot](ausdr, rnge, rngz )

D D[ausdr, Xl, X2, oj D[ausdr,xJ DeleteVertex[g, vJ DiscreteMath ' Combinatorica ' Delta[t] Calculus' Common' Support ' Denominator[ausdr] DensityPlot[ausdr, rx , ry] Det[A, Modulus->p] Det[A] DiagonalMatrix[{bl , h o}] 0

0

0

0

Dijkstra[g, v] DiscreteMath ' Combinatorica ' Dimensions[A] DiscreteUniformDistribution[a, bJ Statistics' DiscreteDistributions ' Display[kanal, graphik] Div[f, Cylindrical[vars]] Calculus' VectorAnalysis' Div[f, Spherical[vars]] Calculus' VectorAnalysis '

diff( expr, Xl, X2, 0 0 0) diff(ausdr, X) networks [delete J(v, g) Dirac(t)

denom(ausdr) plots[densityplot](ausdr, rx , ry) Det(A) modp linalg[det](A) Iinalg[BlockDiagonal](bl , b2, 00 Iinalg[diag](bl, b2, 0 0 0) networks [shortpathtree] (g, v)

0)

Iinalg[coldim](A) linalg[rowdim] (A) discreteuniform[a, bJ stats[random], stats[statevalt] interface(plotdevice=postscript) Iinalg[diverge](f, vars, coords=cylindrical) linalg[diverge](f, vars, coords=spherical)

341

G Mathematica und Maple im Vergleich Div[f] Calculus' VectorAnalysis • Divisors[n, Gaussianlntegers->True] Divisors[n] DivisorSigma[k, n] DivisorSigma[n] Do[ausdr, {i, io, iI, d}] Do[ausdr, {i, io, iI}] Do[ausdr,

{i, iI}]

Dot[A,B] Dot[u, v] Drop[list, n]

linalg[diverge](f, vars) GaussInt[GIdivisor](n) numtheory[divisors](n) numtheory[sigma] [k](n) numtheory[sigma](n) for i from io to il by d do rump! od for i from io to iI do rump! od for i to iI do rump! od linalg[ multiply ](A, B) linalg[dotprod](u, v)

DSolve[glg, y[x], x]

[op(n+l..nops(liste), liste)] [liste[n+ l .. nops(liste)]] [op(l..nops(liste)-n, liste)] [liste[ l .. nops(liste) - n]] dsolve(glg, y(x»

Dt[f]

D(!)

Drop[liste, -n]

E E

E

Edges[g] DiscreteMath • Combinatorica •

networks[adjacency](g)

Edit[ausdr]

edit(ausdr)

Eigenvalues[A]

Eigenvals(A) linalg[eigenvals ](A) Eigenvals(A, vektoren) linalg[eigenvects ](A) LegendreE(sin(c/J), sqrt(m» LegendreEc(sqrt(m» LegendreF(sin(c/J), sqrt(m» LegendreKc(sqrt(m» LegendrePi(sin(c/J), n, sqrt(m» LegendrePic(n, sqrt(m» erf(x) erfc(x) euler(n, x) euler(n) gamma numtheory[phi](n)

Eigenvectors[A] EllipticE[c/J, m] EllipticE[m] EllipticF[c/J, m] EllipticK[m] EllipticPi[n, c/J, m] EllipticPi[n, m] Erf[x] Erfc[x] EulerE[n, x] EulerE[n] EulerGamma EulerPhi[n] Evaluate[ausdr] EvenQ[n] Exit[] Exp[z] Expand[ausdr, Trig->True] Expand[ausdr]

ExpandDenominator[ausdr] ExpandNumerator[ausdr] ExpIntegralEi[x] ExponentialDistribution[A] Statistics' ContinuousDistributions • ExtendedGCD[n, m]

eval(ausdr)

type(n, even) done quit stop exp(z) combine(ausdr, trig) expand(ausdr) normal(ausdr, expanded) normal(ausdr, expanded)

Ei(x) exponential[A, 0] stats[random], stats[statevalf] igcdex(n, m, 's', 't')

F Factor[poly, GaussianIntegers->True]

GaussInt[GIfacpoly]( poly)

Factor[poly, Modulus->p] Factor[ poly] Factor[ausdr, Trig->True]

Factor(poly) modp factor( poly)

Factorial[n] FactorInteger[n, GaussianIntegers->True] FactorInteger[n]

342

expand(ausdr) factorial(n) GaussInt[GIfactor](n) GaussInt[GIfactors](n) ifactor(n) ifactors(n)

G.2 Entsprechende Funktionen in Maple und Mathematica ifactor(n, lenstra)

FactorIntegerECM[n] NumberTheory • FactorIntegerECM • FactorList[ poly] FactorSquareFree[ poly] FactorSquareFreeList[ poly, Modulus->p] FactorSquareFreeList[ poly] False Fibonacci[n] DiscreteMath • CombinatoriaiFunctions • FindMinimum[ausdr, {x, xo}]

extrema(ausdr, { }, x)

First[ liste]

op(l, liste)

Fit[daten,jktnen, vars]

linalg[leastsqrs](A, b) stats[fit, leastsquare[vars, eqn, cfs]](data) floor(x)

factors( poly) convert( poly, sqrfree, x) Sqrfree( poly) mod p sqrfree( poly) false combinat[ fibonacci ](n) minimize(ausdr, {x}) liste[l]

Floor[x] FontForm[kette, {font, n}]

FortranForm[ausdr]

Fourier[{zl, Z2,

..• }]

FourierTransform[ausdr, t, w]

Calculus' FourierTransform • Frame->True FRatioDistribution[nl, n2] Statistics' ContinuousDistributions • Frequencies[list] Statistics' DescriptiveStatistics • FresnelC[x] FresneIS[x] Function[rumpfl

axesfont=[familie, stil, n] font=[familie, stil, n] labelfont=[familie, stil, n] titiefont=[familie, stil, n] fortran(ausdr) FFT(m,x,y) fourier(ausdr, t, w)

axes=FRAME fratio[nl, n2] stats[random], stats[statevalf] stats[transform, tally](liste) FresnelC(x) FresneIS(x) proc(args) rumpfend

G Gamma[a,Z] Gamma[z] GammaDistribution[a, ,8] Statistics' ContinuousDistributions • GCD[nl, n2, ... ] GegenbauerC[n, m, x] GeometricMean[liste] Statistics' DescriptiveStatistics • Get[" dateiname"] Grad[ausdr, Cylindrical[vars]]

GAMMA(a,Z) GAMMA(z) gamma[a, ,8] stats[random], stats[statevalf] Gausslnt[GIgcd](nl. n2, ... ) igcd(nl. n2, ... ) numtheory[GIgcd](nl, n2, ... ) orthopoly[G](n, m, x) stats[describe, geometricmean](liste) read 'dateiname' linalg[grad](ausdr, vars, coords=cylindrical)

Calculus' VectorAnalysis • Grad[ausdr, Spherical[vars]]

linalg[grad](ausdr, vars, coords=spherical)

Calculus' VectorAnalysis • Grad[ausdr]

linalg[grad](ausdr, vars)

Calculus' VectorAnalysis • GramSchmidt[{ VI , V2, ... } ] LinearAlgebra •Orthogonalization •

linalg[GramSchmidt]([VI, V2,

Graph[adjmat, vliste]

networks[graph](emenge, kmenge)

DiscreteMath •Combinatorica • GraphUnion[g, h] DiscreteMath •Combinatorica •

networks[gunion](g, h)

GrayCode[liste]

combinat[graycodelen)

DiscreteMath •Combinatorica • GroebnerBasis [{ polyl. ... }, {Xl. ... }]

grobner[gbasis]([pO/YI, ... ], [Xl. ... J)

.•. J)

H HarmonicMean[liste]

stats[describe, harmonicmean](liste)

Statistics' DescriptiveStatistics •

343

G Mathematica und Maple im Vergleich Head[ausdr]

op(O, ausdr) whattype(ausdr)

HermiteH[n, x] HiddenSurface->False HiddenSurface->True HilbertMatrix[n, n] LinearAlgebra' MatrixManipulation '

orthopoly[H](n, x) style=WIREFRAME style=HIDDEN Iinalg[hilbert](n)

Hold[ausdr]

freeze(ausdr) 'ausdr'

HypergeometricOFl[a, z] HypergeometriclFl[a, b, z] Hypergeometric2Fl[a, b, c, z] HypergeometricDistribution[n, n., ntl Statistics' DiscreteDistributions ' HypergeometricF[{nl, ... }, {dl, .. .}, z] DiscreteMath ' RSolve ' HypergeometricPFQ[{nl, ... }, {dl, ... }, z]

hypergeom([], [a], z) hypergeom([a], [b], z) hypergeom([a, b], [c], z) hypergeometric[n., nf, n] stats[random], stats[statevalt] hypergeom([nl, ... ], [dl, ... ], z) hypergeom([nl, ... ], [dl, ... ], z)

I I IdentityMatrix[n] ItT.bedingung, ausdrt, ausdr f]

Im[z] ImplicitPlot[glg, {x, a, b}J Graphics' ImplicitPlot ' IncidenceMatrix[g] DiscreteMath ' Combinatorica ' Infinity Input["prompt"] InputForm[ausdr]

Insert[l, e, n] Integer IntegerQ[n] Integrate[ausdr, {x,a,b}] Integrate[ausdr, x]

InterpolatingPolynomial[ {{Xl, yd, ... }, x] Intersection[listel , 1iste2] InverseFourier[ {Zl, Z2, ... }] InverseFourierTransform[ausdr, t, w] Calculus' FourierTransform ' InverseFunction[J] InverseLaplaceTransform[ausdr, s, t] Calculus' LaplaceTransform '

J

JacobiSymbol[n, m]

I array (identity, Ln, Ln) if bedingung then ausdrt else ausdrf fi Im(z) plots[implicitplot](glg, :x=a ..b) networks [incidence](g) infinity readstat('prompt') Iprint(ausdr) [op(Ln-l, I), e, op(n .. nops(l), I)]

integer type(n, integer) int(ausdr, :x=a ..b) int(ausdr, x)

interp([xI, ... ], [yl, ... ], x) mengel intersect menge2 iFFT(m, x, y) invfourier(ausdr, t, w)

invfunc[J] invlaplace(ausdr, s, t)

numtheory[J](n, m) numtheory[jacobi](n, m)

Join[listel , liste2, ... ]

[op(listeI>, op(liste2), ... ]

JordanDecomposition[A]

Iinalg[jordan](A)

K KSubsets[l, k] DiscreteMath ' Combinatorica '

combinat[choose](l, k)

Kurtosis[liste]

stats[describe, kurtosis](liste)

Statistics' DescriptiveStatistics '

L LaguerreL[n, a, x] LaguerreL[n, x] LaplaceDistribution[/.', .B] Statistics' ContinuousDistributions ' LaplaceTransform[ausdr, t, s]

orthopoly[L](n, a, x) orthopoly[L](n, x) laplaced[/.', .B] stats[random], stats[statevalt] laplace(ausdr, t, s)

Calculus' LaplaceTransform ' Laplacian[ausdr]

344

linalg[laplacian](ausdr, vars)

Go2 Entsprechende Funktionen in Maple und Mathematica Calculus' VectorAnalysis ' Laplacian[aus, Cylindrical[vbs]) Calculus' VectorAnalysis ' Laplacian[aus, Spherical[vbs]) Calculus' VectorAnalysis • Last[list] LatticeReduce[ {VI , V2, LCM[nlo n2, 000] LegendreP[n, x] Length [ausdr]

0

0

o}]

LightSources->{ {pasl' GI}, ... } Limit[ausdr, x -> Xo, Direction->l] Limit[ausdr, x -> xo, Direction->-l] Limit[ausdr, x -> xo] LinearProgramming[c, m, b] LinearSolve[A, b] ListPlot3D[A] ListPlot[ {{Xl, yd, ... }, PlotJoined->True] ListPlot[{{XI, yd, {X2' Y2}, ... }] ListQ[ausdr] Log[lO, z] Log[b, z] Log[z] LogGamma[z] LogicalExpand[ausdr] LogIntegral[x] LogisticDistribution[J.L, .B] Statistics' Continuous Distributions • LogLogPlot[ausdr, {x, a, b} ] Graphics' Graphics' LogNormalDistribution[J.L, (j] Statistics' Continuous Distributions • LogPlot[ausdr, {x, a, b}] Graphics' Graphics'

linalg[laplacian](aus, vbs, coords=cylindrical) linalg[laplacianj(aus, vbs, coords=spherical) op(nops(liste), liste) liste[nops(liste) j lattice([VI , V2, ... J) ilcm(nlo n2, ... ) orthopoly[Pj(n, X) linalg[ vectdim]( V) nops(ausdr) light=[¢, (), r, g, b] limit(ausdr, X=XO, left) liIpit(ausdr, x=xo, right) limit(ausdr, x=xo) simplex[minimize](ausdr, unglchgen, NONNEGATIVE) linalg[linsolvej(A, b) plots [matrixplotj (A) plots [surfdata](liste) plot([XI, YI, ... J) plot([XI, YI, X2, Y2, ... j, style=POINT) type(ausdr, list) loglO(z) log[b](z) In(z) log(z) InGAMMA(z) evalb(x) Li(x) logistic[J.L, .B] stats[random], stats[statevalf] plots[loglogplot](ausdr, =a .. b)

lognormal[J.L, (j j stats[randomj, stats[statevalf] plots[logplot](ausdr, =a .. b)

M MakeSimple[g] DiscreteMath' Combinatorica • Map[f, ausdr] MatchQ[ausdr, muster] MatrixExp[A] MatrixQ[ausdr] Max[XI,X2, ... ] Mean [liste] Statistics' DescriptiveStatistics ' MeanDeviation[liste] Statistics' DescriptiveStatistics ' Median[liste] Statistics' DescriptiveStatistics ' MemberQ[ausdr, teit] MemoryInUse[ ] MeshStyle->Dashing[liste] MeshStyle->Thickness[r] Message[symbal::tag, el, e2, ... ] Min[xl,x2, ... ] MinimumSpanningTree[g] DiscreteMath • Combinatorica '

networks[gsimp ](g) map(J; ausdr) match(ausdr=muster, v, 's') linalg[exponential](A) type(ausdr, listlist) type(ausdr, matrix) max(xlo X2, ... ) stats[ describe, mean ](list) stats[describe, meandeviation](liste) stats[describe, median j(liste) has(ausdr, teil) member(teil, ausdr) words( ) linestyle=n thickness=n userinfo(ebene, name, el, e2 ... ) min(xl, X2, ... ) networks[spantree](g)

345

G Mathernatica und Maple irn Vergleich convert(ausdr, mebic)

MKS[ausdr]

Miscellaneous' Units ' Mod[m,n]

irem(m. n) mmodn modp(m. n)

Mode[liste]

stats[describe. mode](liste}

Statistics' DescriptiveStatistics ' Module[ {Vl, V2, o}, rumpj] MoebiusMu[n] MoviePararnebicPlot[{el, e2}, rx, rt] Graphics' Animation'

proc(args} local V1, V2. 000; rumpfend numtheory[mobius](n) plots[animate]([el. e2. rx ], rd

MoviePlot3D[ausdr, r x , r y , rtl

plots[animate3d](ausdr. rx. ry. rt)

0

0

Graphics' Animation' MoviePlot[ausdr, r x , rt]

Graphics' Animation' MovingAverage[liste, n] Statistics' DescriptiveStatistics ' Multinomial[nlo n2, 000]

plots[animate](ausdr. r x • rt)

stats[transforrn. moving[n

+ l]](liste)

combinat[multinornial](n, n1, n2, 000)

N N[ausdr, n] N[ausdr]

evalf(ausdr, n) convert(ausdr. float) evalf(ausdr)

Narnes[]

anarnes()

NDSolve[glchgen, vars, {x, xmin, xmax}] Needs[" kontext"']

dsolve(glchgen. vars. numeric) with( paket)

Negative[x] NegativeBinomiaiDisbibution[n. p] Statistics' DiscreteDisbibutions ' NestLf. x, n] NetworkFlow[g. queUe, senke] DiscreteMath' Combinatorica ' NextComposition[l] DiscreteMath ' Combinatorica ' NextPrime[n] NumberTheory , NumberTheoryFunctions ' Nlntegrate[ausdr. {x. a, b}]

type(x. negative) negativebinornial[n, p] stats[random]. stats[statevalf]

NonNegative[x]

type(x. nonneg) convert(reihe. polynom) norrnal[tt. u] stats[random]. stats[ statevalf] Iinalg[norrnalize](v)

Norrnal[reihe ]

NorrnaiDistribution[tt. u] Statistics' ContinuousDistributions ' Norrnalize[v] LinearAlgebra' Orthogonalization '

(f@@n)(x)

networks[flow](g, queUe. senke) combinat[nextpart](l) nextprime(n) evalf(Int(ausdr. x=a ..b» 'evalf/int'(ausdr. x=a ..b) student[simpson](ausdr. x=a ..b) student[trapezoid](ausdr. x=a ..b)

Not[ausdr] NSolve[glchgen, vars]

notausdr fsolve(glchgen. vars)

NuIlSpace[A]

Iinalg[kemel](A) Iinalg[nullspace](A) combinat[numbcomp](n. k)

NumberOfCompositions[n, k] DiscreteMath ' Combinatorica ' NumberOtpartitions[n] DiscreteMatb ' Combinatorica ' NumberQ[x] Numerator[ausdr]

o

combinat[numbpart](n) type(x. numeric) numer(ausdr)

O[xrn

O(x'n)

OddQ[n] Off[/l./2. 000]

type(n. odd) undebug(/l./2. 000) untrace(/l./2. 000) debug(/l./2. 000) trace(/l./2. 000)

On[/l./2. 000]

346

G.2 Entsprechende Funktionen in Maple und Mathematica OpenAppend["dateiname"] OpenRead["dateiname"] OpenWrite["dateiname"] Or[ausdr1. ausdr2] OrderedQ[ {kette1 • kette2 }] OutputForm[ausdr]

appendto('dateiname') readline(' dateiname') open(,dateiname') writeto(, dateiname ') ausdrl or ausdr2 lexorder(kette1 • kette2) print(ausdr)

p Pade[ausdr. {x. a. m. n}] Calculus' Pade' ParametricPlot3D[{e",. ey. ez}. rt. ru] ParametricPlot3D[{e",. ey. ez}. rtl ParametricPlot[ {e",. ey }. {t. to. tl}] Part[ausdr. 11 Partitions [n] DiscreteMath ' Combinatorica ' PartitionsP[n] PDF[verteilung, x] Statistics' ContinuousDistributions ' PDF[verteilung. x] Statistics' DiscreteDistributions ' Permutations[liste] Pi PlanarQ[g] DiscreteMath ' Combinatorica ' Plot3D[ ...• AmbientLight->farbe] Plot3D[ ...• Boxed->True] Plot3D[ ...• HiddenSurface->False] Plot3D[ ...• HiddenSurface->True] Plot3D[ ...• LightSources->{ {post. ct} •... }] Plot3D[ ...• MeshStyle->Dashing[/istell Plot3D[ ... ,MeshStyle->Thickness[rll Plot3D[ ...• PlotPoints->{n, m}] Plot3D[ ...• PlotRange->{ {a. b}. {c, d}, {r, s}}] Plot3D[ ...• PlotRange->{r. s}] Plot3D[ ...• Shading->True] Plot3D[ ...• Ticks->{einh",. einhy• einhz }] Plot3D[ ... , ViewPoint->{x. Y. z}] Plot3D[{exprl, .. .}, {x, a, b}, {Yo c, d}] Plot3D[{expr. s}. {x. a. b}, {y, c, d}] Plot3D[expr. {x. a. b}. {Yo C. d}] Plot[ ... ,AspectRatio->Automatic] Plot[ ... ,Axes->False] Plot[ ...• Axes->True] Plot[ ...• AxesLabel->{ label"" labely }] Plot[ ... , Frame->True] Plot[ ...• PlotDivision->d] Plot[ ...• PlotLabel->label] Plot[ ...• PlotPoints->n] Plot[ ...• PlotRange->{ {a. b}. {c. d}}] Plot[ ... , PlotRange->{c, d}] Plot[ ...• PlotStyle->Dashing[liste]] Plot[ ...• PlotStyle->Hue[h]] Plot[ ...• PlotStyle->RGBColor[r. g. b]] Plot[ ...• PlotStyle->Thickness[r]] Plot[ ...• Ticks->{ einh",. einhy}] Plot[ {ausdrl. ausdr2, ... }. {x, a, b} ] Plot[ausdr. {x. a. b}J PlotDivision->d PlotGradientField3D[ausdr. r",. ry. rz] Graphics' PiotField3D ' PlotGradientField[ausdr. r",. ry]

numapprox[pade](ausdr. x=a, [m. n]) plot3d([e",. ey. ez], rt. ru) plots[spacecurve]([e"" ey, ez]. rt} plot([e",. ey• I==tO .. t1]) op(i. ausdr) combinat[partition](n) combinat[numbpart](n) stats[statevalf. pdf[verteilungll(x) stats[statevalf. pf[verteilung]](x) combinat[permute] (liste) Pi networks[isplanar](g) plot3d( ... ,ambientlight=[r. g. b]) plot3d( ... , axes=BOXED) plot3d( ... , style=WIREFRAME) plot3d( ... , style=HIDDEN) plot3d( ...• light=[I/>, (J. r, g, b]) plot3d(. . . , linestyle=n) plot3d( ... , thickness=n) plot3d( ...• grid=[n. m]) plot3d( ... ,view=[a.. b. c ..d. r ..s]) plot3d( ...• view=r..s) plot3d( ...• style=PATCH) plot1d( ...• tickmarks=[n1. n2. n3]) plot3d( ... , orientation=[(J, 1/>]) plot3d( {exprl, ... }, x=a .. b, y=c ..d) plot3d(expr. rx. ry. color=s) plot3d(expr. x=a .. b. y=c ..d) plot( ... , scaling=CONSTRAINED) plot( ... , axes=NONE) plot( ... , axes=NORMAL) plot( ...• labels=[label", , labely]) plot( ...• axes=FRAME) plot( ...• resolution=n) plot( ...• title=label) plot( ... , numpoints=n) plot( ...• view=[a .. b, c.. d]) plot( ... , c.. d) plot( ...• linestyle=n) plot( ...• color=COLOR(HUE, h» plot( ...• color=COLOR(RGB, r, g. b» plot( ...• thickness=n) plot( ... , tickmarks=[nl, n2]) plot( ...• xtickmarks=nl. ytickmarkS=n2) plot( {ausdrt. ausdr2, ... }. x=a ..b) plot(ausdr, x=a ..b) resolution=n plots[gradplot3d](ausdr, r",. r y, r z ) plots[gradplot](ausdr, r"" ry)

347

G Mathematica und Maple im Vergleich Graphics' PlotField '

PlotLabel->label

title::label

PlotPoints->{n, m} PlotPoints->n PlodRange->{{a,b},{c,d}, サセウス@ PlodRange->{ {a, b}, {c, d}} PlodRange->{ c, d} PlotRange->{r, s} PlotStyle->Dashing[liste] PlotStyle->Hue[h] PlotStyle->RGBColor[r, g, b] PlotStyle->Thickness[r] PlotVectorField3D£{e"" ey, ez}, r"" ry, rz ] Graphics' PiotField3D ' PlotVectorField[{e"" ey}, r"" ry] Graphics' PlotField ' PoissonDistribution[JI.] Statistics' DiscreteDistributions ' PolarPlot[ausdr, rtl Graphics' Graphics' PolyGarnrna[n, z] PolyGarnma[z] Polygon£{ pktl' pkt2, ... }]

grid=[n, m] numpoints=n view=[a .. b, c..d, r ..s] view=[a .. b, c ..d] c ..d view=r ..s Iinestyle=n color=COLOR(HUE, h) color=COLOR(RGB, r, g, b) thickness=n plots[fieldplot3d]([e"" ey, ez], r"" ry, rz )

Polyhedron[name] Graphics' Polyhedra' PolynomiaIDivision[p, q, x] PolynomiaIGCD[poIYl, polY2, Modulus->n] PolynomiaIGCD[ polYl , polY2] PolynomiaILCM[poIYl, polY2, Modulus->n] PolynomiaILCM[ polYl, polY2] PolynomiaIMod[ polYl, polY2] PolynomiaIMod[poly, m] PolynomiaIQ[ausdr, x] PolynomiaIQuotient[ POlYl, polY2, x] PolynomiaIRemainder[ polYl , polY2, x] Positive[x] PowerExpand[ausdr] PowerMod[a, b, n]

Prepend[liste, elem] Prime[n] PrimeQ[n, GaussianIntegers->True] PrimeQ[n] PrimitiveRoot[n] NumberTheory' NumberTheoryFunctions ' Print[ausdr]

plots[fieldplot]([e"" ey], r"" ry) poisson[JI.] stats[random], stats[statevaIf] plot([ausdrr , ausdr8, rt], coords=polar) plots[polarplot](ausdr, rt) Psi(n, z) Psi(z) plots[polygonplot3d]([ pktl' pkt2, ... J) plots[polygonplot]([ pktl. pkt2, ... J) plots [polyhedraplot]( p, polytype=name)

quo(p,q,x, 'r') Gcd( polYl, polY2) mod n

gcd(polYl, polY2) Lcm(polYl , polY2) mod n Icm( polYl, polY2) rem(polYl, polY2, x) polymodm type(ausdr, polynom(anything, x» quo(polyt. polY2, x) rem(polYl, polY2, x) type(x, positive) expand(ausdr) Power(a, b) mod n

a&'bmodn [elem, op(liste)] ithprime(n) GaussInt[GIprime](n) isprime(n) type(n, primeint) numtheory[primroot](n)

print(ausdr)

Product[ausdr, {i, a, b}]

Product( ausdr, i=a ..b)

Protect[name]

protect(name)

Put[ausdr, "dateiname"]

writeln('dateiname') writeto(, dateiname')

PutAppend[ausdr, "dateiname"]

appendto('dateiname')

product(ausdr, i=a ..b)

Q Quantile[liste, q] Statistics' DescriptiveStatistics ' Quartiles[ liste] Statistics' DescriptiveStatistics ' Quit[]

Quotient[m, n]

348

stats[describe, quantile[q]](liste) stats[describe, quartile[n]](liste) done quit stop ftoor(mln)

G.2 Entsprechende Funktionen in Maple und Mathematica R Random[lnteger, 999999999999) Random[verteilung) Statistics' Continuous Distributions ' Random[verteilung) Statistics' DiscreteDistributions ' RandomGraph[n, p] DiscreteMath ' Combinatorica • RandomPartition[n] DiscreteMath ' Combinatorica ' RandomPermutation 1[n] DiscreteMath ' Combinatorica • RandomPermutation2[n] DiscreteMath • Combinatorica • Range[a, b) Rational[n, d] Rational Rationalize[x) Re[z) Read[strom, String) Read[strom) ReadList["dateiname", typ] Real Reallnterval[ {a, b}] Recognize[r, n, t) NumberTheory' Recognize' Regress [daten, jktnen, vars) Statistics' LinearRegression • ReleaseHold[ausdr] ReplaceAII[ausdr, regeln] ReplacePart[ausdr, neu, n] Residue[ausdr, {x, a}] Rest[liste)

Resultant[ polYl, polY2, x, Modulus->p] Resultant[ polYl, polY2, x] Retum[ausdr] RootMeanSquare[liste] Statistics' DescriptiveStatistics • RotateLeft[l] RotateRight[l] Round[x] RowReduce[A, Modulus->p] RowReduce[A] RSolve[glchgen, namen, var] DiscreteMath • RSolve • Run [ausdr]

rand( ) stats[random, verteilung)O stats[random, verteilung)O networks[random](n, prob=p) combinat[ randpart)(n) combinat[randperm](n) combinat[randperm](n) [$a .. b] [seq(i, i=a .. b)] type(x, fraction) type(x, rational) fraction convert(x, fraction) convert(x, rational) Re(z) readline(' dateiname') readstat('prompt') readdata('dateiname', typ, spal) float a .. b

minpoly(r, n) stats[Ii t, leastsquare[ vars ]](daten) thaw(var) asubs(eqn, ausdr) subs(subs, ausdr) subsop(n=neu, ausdr) residue(ausdr, x=a) op(2 .. nops(liste), liste) liste[2 .. nops(liste)] Resultant( polYl, polY2, x) mod p resultant( polYl , polY2, x) RETURN(ausdr) stats[describe, quadraticmean](liste)

[op(2 .. nops(l), I), op(1, I)] [op(nops(l), I), op(1..nops(I)-I, I)] round(x) Gaussjord(A) mod p linalg[gaussjord](A) linalg[rret](A) rsolve(glchgen, namen) !befehl system(befehl)

S SampleRange[liste) Statistics' DescriptiveStatistics ' Save["dateiname", namel, name2, ... ] ScatterPlot3D[{{ Xl , Ylo zd, ... }] Graphics' Graphics3D • Sec[z] Sech[z] SeedRandom[n]

stats[describe, range ](liste) save namel , name2, ... , •dateiname' plots[pointplot]( {[Xl, Yl, Zl], ... }) sec(z) sech(z) _seed := n

349

G Mathernatica und Maple irn Vergleich Select[liste, test] SequenceForm[ausdrt, ausdr2, ... ] Series[ausdr, {x, Infinity, n}] Series[ausdr, {x, xo, n}] Set[name, wert] SetDelayed[name, wert] SetOptions[Plot, options] SetOptions[Plot3D, options] SetOptions[strom, PageHeight->n] SetOptions[strom, PageWidth->n] Shading->True ShOW[glo g2, ... ]

Show[graphik] Show Animation[ {gt, g2, . .. }] Graphics' Animation' Sign[z]

Simplify[ausdr]

select(test, liste) ... ausdrt . ausdr2 cat(ausdrl. ausdr2, ... ) asympt(ausdr, x, n) series(ausdr, X=XO, n) taylor(ausdr, X=XO, n) assign(name, wert) assign(name=wert) name :=wert name := 'wert' plots [setoptions](options) plots [setoptions3d](options) interface(screenheight=n) interface(screenwidth=n) style=PATCH plots[display3d]([gl, g2, ... J) plots[display]([gl , g2, ... J) plots[display3d](graphik) plots[display ](graphik) plots[display]([gl, g2, ... ], insequence=true) signum(z) simplify(ausdr) sin(z) Svd(A) sinh(z) Shi(z) Si(z) stats[describe, skewness](liste)

Sin[z] SingularValues[A] Sinh[z] SinhIntegra1[z] SinIntegral[z] Skewness [liste] Statistics' DescriptiveStatistics • Solver {glchgen, Modulus p}. Mode->Modular] msolve(glchgen, p)

Solve[eqns, vars] Sort[liste] Sort[liste, fl SphericalPlot3D[ausdr, r6, r4>] Graphics' ParametricPlot3D • Spline[punkte, Cubic] Graphics' Spline' Sqrt[z] SqrtMod[d, n] NumberTheory' NumberTheoryFunctions' SquareFreeQ[n] NumberTheory' NumberTheoryFunctions • StandardDeviation[liste] Statistics' DescriptiveStatistics • StandardDeviationMLE[liste] Statistics' DescriptiveStatistics • StirlingFirst[n, m] DiscreteMath' Combinatorica • StirlingS I [n, m] StirlingS2[n, m] StirlingSecond[n, m] DiscreteMath • Combinatorica •

solve(glchgen, vars) sort(liste) sort(liste,f) plot3d(ausdr, r6. r4>. coords=spherical) plots[sphereplot](ausdr, r9, r 4» spline( punkte"" punktey, x, cubic) sqrt(z) numtheory[msqrt](d, n) numtheory[issqrfree](n) stats[describe, standarddeviation[l]](liste) stats[describe, standarddeviation](liste) combinat[stirlingl](n, m) combinat[stirlingl](n. m) combinat[stirling2](n, m) combinat[stirling2](n, m)

StringDrop["ket". n]

substring(' kef', n+ 1..length('ket'»

StringJoin["kettel ", "kette2 "]

'kettel' . 'kette2' cat('kettel " 'kette2 ') length('kette') search('kettestring', 'teil') type(ausdr, string) substring(, kette', m..n)

StringLength["kette"] StringPosition["kette", "teil"] StringQ[ausdr] StringTake["kette", {m, n}] StudentTDistribution[n] Statistics' ContinuousDistributions •

Sum[ausdr, {i. a. b}]

350

studentst[n] stats[random], stats[statevalf] sum(' ausdr', 'i'=a ..b) Sum(' ausdr', 'i'=a ..b)

G.2 Entsprechende Funktionen in Maple und Mathematica Symbol

name

T Table[ausdr, {i, I, m}, {;, I, n}] Table[ausdr, {i, I, n}] Table[ausdr, {i, a, b}]

linalg[matrix](m, n,!) linalg[vector](n, !) [ausdr $ i=a .. b]

Take[A, {m, n}] Take[liste, {m, n}]

linalg[row](A, m.. n) [op(m ..n, liste)]

Take[liste, n]

[op(l..n, liste)]

TakeColumns[A, {m, n}] LinearAlgebra' MatrixManipulation • TakeMatrix[A, {r1, r2}, {C!, C2 } ] LinearAlgebra' MatrixManipulation • TakeRows[A, {m, n}] LinearAlgebra' MatrixManipulation • Tan[z] Tanh[z]

linalg[col](A, m .. n)

[seq(ausdr, i=a .. b)]

[liste[m ..nlJ [liste[l..nlJ

TeXForm[ausdr] Text[ausdr, {x, y, z}] Text[ausdr, {x, y}] Ticks->{ einh"" einhy , einhz } Ticks->{ einh", , einhy }

TimeUsed[] Timing[ausdr]

ToAdjacencyLists[g] DiscreteMath • Combinatorica • ToExpression["kette"] Together[ausdr]

ToString[ausdr] Trace[ausdr] Transpose[A] TrigReduce[ausdr]

linalg[submatrix](A, r1 .. r2, C! .. C2) linalg[row](A, m.. n) tan(z) tanh(z) latex(ausdr)

plots[textplot3d]([x, y, z, kette]) plots[textplot]([x, y, kette]) tickmarks=[n1, n2, n3] tickmarks=[n1, n2] xtickmarks=n ytickmarks=n time( ) history(); timing(ausdr) showtime( ); ausdr networks [adjacency ](g) parse('kette') normal(ausdr)

convert(ausdr, name) convert(ausdr, string) debug(j) trace(j) linalg [transpose ](A) expand(ausdr)

Algebra' Trigonometry • TrigToComplex[ausdr]

convert(ausdr, exp)

Algebra' Trigonometry • True

true

TrueQ[ausdr]

evalb(ausdr)

U UniformDistribution[a, b] Statistics' ContinuousDistributions • Union[liste1, liste2] UnitStep[x] Calculus' DiracDelta •

uniform[a, b] stats[random], stats[statevalf] mengel union menge2 Heaviside(x)

Unprotect[name] Unset[name]

unprotect(name)

unassign('name') name := 'name'

V ValueQ[name] Variables [ausdr]

assigned(name)

Variance[liste]

stats[describe, variance[llJ(liste)

Statistics' DescriptiveStatistics • VarianceMLE[liste] Statistics' DescriptiveStatistics •

stats[describe, variance](liste)

VectorQ[ausdr]

type(ausdr, vector)

indets(ausdr)

351

G Mathematica und Maple im Vergleich ViewPoint->{x, y, z}

orientation=[II, ¢ J

W WeibullDistribution[ a, .BJ Statistics' ContinuousDistributions ' While[ test, rumpfl

weibull[a, .BJ stats[randomJ, stats[statevaIf] while test do rumpf od

Write["dateiname", ausdrJ

write(ausdr)

writeln(ausdr) writeto(' dateiame')

Z ZeroMatrix[m, nJ LinearAlgebra' MatrixManipulation ' Zeta[s, aJ Zeta[sJ

$

linaIg[matrixJ(m, n, 0) Zeta(O, s, a) Zeta(s)

$Display $Failed $MachinePrecision $Path $Version

interface(plotoutput=' dateiname') FAIL evaIhf(Digits) libname interface(version)

a+b a-b ab a*b

a+b a-b a*b a*b a&*b alb aAb

a

** b

alb aAb

a

** b

n!

n!

+a

+a -a

-a u.v

linaIg[dotprodJ(u, v)

a=b

a=b

a !=b a=b a&&b

ab a=b

allb

a orb not a

!a "kette" "kettel " "kette2" {el, e2, ... } ausdr[[i]] liste[[i]] name =wert

aandb

anweisung (* show output *) anweisung; (* suppress output *) rumpf& name_kopf

'kette' 'kettel' . 'kette2' [el, e2, ... J op(i, ausdr) liste[iJ name :=wert assign(name, wert) name := 'wert' unassignCname') name:= 'name' asubs(alt=neu, ausdr) subs(alt=neu, ausdr) anweisung; # show output anweisung: # suppress output proc(args) rumpfend name:typ

% %% %%% « "dateiname"

read 'dateiname'

name :=wert name=. ausdr I. alt->neu

352

G.2 Entsprechende Funktionen in Maple und Mathernatica ausdr» "dateiname" ausdr »> "dateiname" (* kommentar *) ?name !befehl

writeln('dateiname') writeto(,dateiname') appendto(' dateiname') #kommentar ?stichwort !befehl system(befehl)

353

H

H.t

Wie man mehr fiber Maple erfiihrt

Bucher und Fachzeitschriften

Die in diesem Abschnitt aufgelisteten Bticher und Fachzeitschriften sind sowohI filr den MapleBenutzer a1s auch ftir diejenigen, die a1lgemein an symbolischer Berechnung und Computeralgebrasystemen interessiert sind, von Interesse.

UberMaple Die Anzahl der Bticher tiber Maple wlichst stlindig. In diesem Abschnitt sind Bticher und Zeitschriften tiber Maple nach drei Hauptkategorien geordnet angegeben: allgemeine Lehrbticher und Nachschlagewerke (Handbticher), mathematische Lehrbticher und Kurserglinzungen, sowie Anwendungen.

Allgemeine Lehr- und Handbiicher Abell, Martha L. und lames P. Braselton, Maple V by Example (Academic Press) Abell, Martha L. und lames P. Braselton, The Maple V Handbook (Academic Press, 1994) Blachman, Nancy, Using Maple (Brooks/Cole, in Vorbereitung) Burkhardt, Werner Erste Schritte mit Maple (Springer, in Vorbereitung) (auch auf englisch) Corless, Robert M.: Essential Maple. A Guide for Scientific Programmers (Springer, in Vorbereitung) Corless, Robert M.: Symbolic Recipes. Scientific Computing with Maple (Springer, in Vorbereitung) Char, Bruce w., Keith D. Geddes, Gaston H. Gonnet, Benton L. Leong, Michael B. Monagan und Stephen M. Watt, First Leaves: A Tutorial Introduction to Maple V (Springer-Verlag, 1992) Char, Bruce w., Keith D. Geddes, Gaston H. Gonnet, Benton L. Leong, Michael B. Monagan und Stephen M. Watt, Maple V Language Reference Manual (Springer-Verlag, 1991) Char, Bruce w., Geddes, Keith D., Gonnet, Gaston H., Leong, Benton L., Monagan, Michael B., Watt, Stephen M. First Leaves: A Tutorial Introduction to Maple V. (Springer, 1992) Gloggengiesser, Helmut: Maple V Software fUr Mathematiker (Markt u. Technik, 1993) ISBN 3-87791-439-X Heck, Andre, Introduction to Maple (Springer-Verlag, 1993) Kamerich, Ernic, A Guide to Maple (Springer, 1994) Kofler, Michael: Maple V Release 2. Einfilhrung und Leitfaden (Addison-Wesley) Redfern, Darren, The Maple Handbook (Springer, 1993)

H.t Bucher und Fachzeitschriften

Mathematische LehrbUcher und Kursergiinzungen Abell, Martha L. und James P. Braselton, Differential Equations with Maple V (Academic Press, in Vorbereitung) Braun, RUdiger und Meise, Reinhold Analysis mit Maple (Vieweg, in Vorbereitung) Auer, John w., Maple Solutions Manual for Linear Algebra with Applications (Prentice-Hall, 1991) Bauldry, William C. und Joseph R. Fielder, Calculus Laboratories with Maple (Brooks/Cole, 1991) Burbella, D. C. M. und C. T. J. Dodson, Self-Tutor for Computer Calculus Using Maple (PrenticeHall Canada, 1993) Cheung, C. K. und John Harer, Multivariahle Calculus with Maple V (John Wiley & Sons, 1994) ISBN 0-471-59835-6 Devitt, John S., Calculus with Maple V (Brooks/Cole, 1993) ISBN 0-534-16362-9 Ellis, Wade Jr., Eugene W. Johnson, Ed Lodi und Daniel Schwalbe, Maple V Flight Manual: Tutorials for Calculus, Linear Algebra, and Differential Equations (Brooks/Cole, 1992) Ellis, Wade Jr. und Ed Lodi, Maple for the Calculus Student: A Tutorial (Brooks/Cole, 1989) Fattahi, Abi, Maple V Calculus Labs (Brooks/Cole, 1992) ISBN 0-534-19272-6 Geddes, K. 0., B. Marshman, I. McGee, P. Ponzo und B. Char, Maple Calculus Workbook: Problems and Solutions (Waterloo Maple Software, 1989) Harris, Kent, Discovering Calculus with Maple (John Wiley & Sons, 1992) Heinrich, Elkedagmar, Janetzko, Hans-Dieter Das Maple Arbeitsbuch (Vieweg 1995) Holmes, M. H., 1. G. Ecker, W. E. Boyce und W. L. Siegmann, Exploring Calculus with Maple (Addison-Wesley, 1993) Johnson, Eugene, Linear Algebra with Maple V (Brooks/Cole, 1993) Kreyszig, Erwin und E. J. Normington, Maple Computer Manual for Advanced Engineering Mathematics (John Wiley & Sons, 1994) Mathews, David M. und Keith E. Schwingendorf, Precalculus Investigations Using Maple (HarperCollins, 1994) McLaughlin, R., Calculus and Maple V (Saunders College Publishing, 1993) Schwalbe, Daniel, Differential Equations Using Maple (Brooks/Cole, in Vorbereitung) Small, Donald B. und John M. Hosack, Explorations in Calculus with a Computer Algebra System (McGraw-Hill, 1990)

Anwendungen Baylis, W. E., Theoretical Methods in the Physical Sciences, An Introduction to Problem Solving Using Maple V (Birkhiiuser) Devitt, J. S. und G. J. Fee, Tackling Mathematical Problems with Maple (Oxford, in Vorbereitung) Gander, Walter und Jin Hi'ebfcek, Eds., Solving Problems in Scientific Computing Using Maple and Matlah (Springer, 1993) Lee, Thomas, Ed., Mathematical Computation with Maple V -Ideas and Applications: Proceedings of the Maple Summer Workshop and Symposium, University ofMichigan, Ann Arbor, 1993 (Birkhiiuser, 1993)

Maple Technical Newsletter, Birkhiiuser, Boston Scott, Tony, Computer Algebra and the Magic of Maple (Birkhiiuser, in Vorbereitung)

355

H Wie man mehr tiber Maple erfahrt

Uber Computeralgebra Die folgenden Bticher, Konferenzbiinde und Fachzeitschriften diskutieren Algorithmen und andere Aspekte der Computeralgebra und von Computeralgebrasystemen. Akritas, Alkiviadis G., Elements of Computer Algebra with Applications (John Wiley & Sons, 1989) Becker, Thomas und Volker Weispfenning, in Zusammenarbeit mit Heinz Kredel, Grabner Bases, A Computational Approach to Commutative Algebra (Springer, 1993) Buchberger, Bruno, George E. Collins und Rtidiger Loos, in Zusammenarbeit mit Rudolph Albrecht, Eds., Computer Algebra: Symbolic and Algebraic Computation (Springer, 2nd Edition, 1983) Davenport, J. H., Y. Siret und E. Toumier, Computer Algebra: Systems and Algorithms for Algebraic Computation (Academic Press, 2te Autlage, 1993) Geddes, Keith 0., Stephen R. Czapor und George Labahn, Algorithms for Computer Algebra (Kluwer Academic Publishers, 1992) Harper, David, Chris Wooffund David Hodgkinson, A Guide to Computer Algebra Systems (John Wiley & Sons, 1991) Journal of Symbolic Computation, Academic Press Knuth, Donald E., The Art of Computer Programming, Bd. 2, Seminumerical Algorithms (Addison-Wesley, 2te Autlage, 1981) Mignotte, Maurice, Mathematics for Computer Algebra (Springer, 1992) SIGSAM Bulletin, A Quarterly Publication of the Special Interest Group on Symbolic & Algebraic Manipulation, ACM Press Zippel, Richard, Effective Polynomial Computation (Kluwer Academic Publishers, 1993)

Uber Graphik Das folgende Buch gibt einen sehr guten Uberblick tiber die Kurven und Flachen, die man mit Systemen wie Maple erzeugen kann. von Seggem, David, CRC Standard Curves and Surfaces (CRC Press, 1993)

H.2

Technische Unterstiitzung

Urn Hilfe bei technischen Problemen zu erhalten, wende man sich an den Vertreiber, von dem man Maple erworben hat. Waterloo Maple Software, Brooks/Cole, MathSoft und andere Anbieter untersttitzen jeweils ihre eigenen Kunden. Mit den Installationsanweisungen sollte auch eine Telefonnummer und eine elektonische Mailadresse ftir technischen Beistand mitgeliefert sein. Die Adressen einiger Anbieter findet man auf Seite 68. Hat man die eigene Maple-Kopie durch eine Sammellizenz erworben, sollte man sich zwecks technischer Beratung an den ortlichen technischen Vertreter oder an den Systemverwalter wenden. Der Maple-Info-Server gibt Antworten auf einige oft gestellte Fragen und behandelt einige haufig vorkommende Probleme. Weitere Information findet man in Kapitel E (Seite 317).

356

H.3 Training

D.3 Training Auf Konferenzen, an Universitliten und in der Industrie werden hliufig Arbeitssitzungen (Workshops) zu Maple angeboten. Variable Symbols und Waterloo Maple Software bieten ebenfalls gegenwlirtig Workshops an. Die Adresse von Variable Symbols findet man auf Seite 357 (unter ,,Nancy Blachman Die Adresse von Waterloo Maple Software befindet sich auf Seite 69. U

).

D.4 Konferenzen Der Maple Summer Workshop and Symposium (MSWS) isteine sehr gute Maple-InformationsqueUe. Dieser wird jiihrlich von Waterloo Maple Software gesponsert. Zur Konferenz geh6ren normalerweise Kurse fdr Anflinger und fortgeschrittene Maple-Benutzer, Diskussionen tiber die Anwendung von Maple im Unterricht, Gastredner, sowie Prllsentationen von Forschungsartikeln und Kontakt mit Entwicklern und technischem Beratungspersonal von Waterloo Maple Software. Urn weitere Informationen tiber MSWS und andere Konferenzen tiber Maple zu erhalten, wende man sich an Waterloo Maple Software. (Die Adresse findet man auf Seite 69.) Das International Symposium on Symbolic and Algebraic Computation (ISSAC) ist eine greBe jiihrlich stattfindende Konferenz, wo Forscher Algorithmen in Computeralgebra und die Entwicklung von Computeralgebrasystemen diskutieren.

D.S Fehlt irgendetwas? Wir hoffen wirklich, daB dieses Handbuch Ihnen dabei hilft, Maple effektiv zu benutzen. Wir haben versucht, alle wichtigen Informationen zu berUcksichtigen und diese in logischer Form anzuordnen. Lassen Sie uns bitte wissen, wenn wir dieses Buch irgendwie verbessern konnen. Nancy Blachman Variable Symbols, Inc. 6537 Chabot Road Oakland, CA 94618-1618 Email: nb@cs . stanford. edu Fax: 510-652-8461 Telefon: 510-652-8462

Michael Mossinghoff Department of Mathematics University of Texas at Austin Austin, TX 78712 Email: [email protected]

D.6 Uber die Autoren Nancy Blachman ist eine international bekannte Autorin und Instruktorin mathematischer Software. Ihr Buch Mathematica: A Practical Approach (Prentice Hall, 1992) ist das am meisten gekaufte Lehrbuch iiber Mathematica. Sie schrieb auch Mathematica grijJbereit, Version 2 (Vieweg, 1993) und wirkte an der Entwicklung des auf Macintosh HyperCard basierenden Mathematica Help Stack und der MS-Windows Mathematica Help mit. Nancy schreibt zur Zeit zusammen mit Cameron Smith das Mathematica Graphics Guidebook (Addison-Wesley, 1994). Sie grUndete Variable Symbols, Inc., ein Unternehmen, welches sich auf Training und Beratung beziiglich mathematischer Software spezialisiert hat; sie ist zudem eine Instruktorin am Computer Science Department der Stanford University. Sie hat Abschllisse in Mathematik, Operations Research und Computer Science von der University of Birmingham (England), der University of California, Berkeley und Stanford University. Michael Mossinghoff ist ein Student an der University of Texas in Austin, wo er an seiner Promotion in Mathematik arbeitet. Er hat Mathematik-Vorlesungen an der Universitlit gehalten, sowie Workshops tiber Mathematica fUr Professoren und Studenten. Er hat einen Master of Science in Computer Science von Stanford University und einen Bachelor of Science in Mathematik von Texas A & M University. Seine Forschungsinteressen sind angewandte Zahlentheorie, diophantische Approximationen und Computeralgebrasysteme.

357

I

Verzeichnis wichtiger Begriffe

ALGOL 68 Eine historisch bedeutende Programmiersprache, die die Gestalt vieler modemer Programmiersprachen, darunter Pascal, Ada und Maples Programmiersprache, gepriigt hat. Alias Eine AbkUrzung, die sowohl fUr die Maple-Eingabe als auch -Ausgabe von MapleAusdrUcken benutzt wird. Die imaginlire Einheit I zum Beispiel ist in Maple tatsiichlich ein Alias fOr (-1) (1/2 ) . Ein Alias kann mit dem a! ias-Befehl definiert werden. A

Anweisungstrenner Satzzeichen, welches aufeinander folgende Anweisungen in einer MapleSitzung oder einem Maple-Programrn abtrennt. In Maple gibt es zwei Anweisungstrenner: das Semikolon (; ) und den Doppelpunkt ( :). Endet eine Anweisung mit einem Doppelpunkt, so wird ihr Ergebnis nicht ausgegeben. Siebe Seite 42. ArbeitsbIatt Ein Maple-Dokument, welches es dem Benutzer ermoglicht, Maple-Befehle und -Ergebnisse, Graphiken und erkllirenden Text zu kombinieren. Arbeitsbllitter eriauben femer die Manipulation von Graphiken, den Wechsel von Zeichensiitzen und die Vorgabe von SeitenumbrUchen. Man kann interaktive Lemprogramme und Dokumente von hoher Qualitiit mit Maple-Arbeitsbliittem gestalten. Arbeitsbllitter stellen die StandardBenutzerschnittstelle von Maple V Version 2 und Version 3 auf allen Rechnem mit genOgender Graphikfiihigkeit dar. Siehe Seite 70. Argumente AusdrUcke, die als Eingabe angegeben werden, wenn eine Funktion aufgerufen wird. Bei dem Funktionsaufruf eva! f ( Pi, 25) zum Beispiel, ist das erste Argument pi und das zweite ist 25. Diese werden auch aktuelle Argumente oder Aktualparameter genannt. Assoziativitiit Die Auswertungsrichtung von Operatoren mit derselben Prioritiit in einem Ausdruck ohne Klamrnem. Zum Beispiel sind * und / linksassoziative Operatoren auf derselben Prioritiitsebene, somit wird der Ausdruck a *b / c als (a *b) / c ausgewertet. Nichtassoziative Operatoren haben keine vorbestimmte Anordnungsregel, deshalb ist der Ausdruck a Ab AC syntaktisch inkorrekt und kann nicht von Maple ausgewertet werden. Die Tabelle auf Seite 365 listet den Assoziativitatstyp fijr jeden Programmiersprachen- und neutralen Operator in Maple auf. Diese Eigenschaft bestimmt zusamrnen mit der Prioritiit wie AusdrUcke ausgewertet werden. Ausdrucksfolge Eine durch Kommata abgetrennte Sammlung von Maple-AusdrUcken. Die leere Foige ist durch NULL gekennzeichnet. Siehe Seite 44. Benutzerschnittstelle Eine der drei Hauptkomponenten des Maple-Systems. 1m Gegensazt zu den beiden anderen Komponenten, dem Kern und der Maple-Bibliothek, kann die Benutzerschnittstelle aufverschiedenen Rechnem durchaus verschieden sein. Die Benutzerschnittstelle legt fest, wie der Benutzer interaktiv mit Maple wiihrend einer Sitzung kommuniziert. In Maple V Version 2 und Version 3 benutzen alle Rechner, die genOgend graphikfiihig sind, die Arbeitsblatt-Schnittstelle. Systeme ohne Graphik, wie einfache Textbildschirme, benutzen eine textorientierte Maple-Schnittstelle. Viele Maple V-Plattformen unterstiitzen auch eine graphische Schnittstelle (zum Beispiel unter X oder SunView), aber nur wenige haben eine Schnittstelle iihnlich der Arbeitsblatt-Schnittstelle (niimlich Macintosh und NeXT). Kapitel B, welches auf Seite 70 beginnt, beschreibt die wichtigsten Varianten der Maple-Benutzerschnittstellen. Bereich Ein Maple-Ausdruck der Form a . . b, welcher eine Menge von Zahlen zwischen a und b darstellt. Siebe Seite 45. Binlirer Operator Ein Operator, welcher nach zwei Argumenten veriangt. Binlire Programmiersprachenoperatoren in Maple werden in Infix-Schreibweise geschrieben, d. h., der Operator wird zwischen die beiden Argumente gestellt: zum Beispiel a + b. Neutrale Operatoren ktinnen ebenfalls in Infix-Schreibweise geschrieben werden: a & b zum Beispiel. A

Wichtige Begriffe C Eine Programmiersprache, die von Dennis Ritchie entwickelt wurde; sie steht historisch in engem Zusammenhang mit dem Unix-Betriebssystem, ist heutzutage aber wegen ihrer Leistungsflihigkeit, Einfachheit und leichten Ubertragbarkeit weitverbreitet. Maple kann Ausdrucke in C-Syntax iibersetzen. Siehe Seite 64. Einfache ZeichenkeUe (Simple String) Eine beliebige Kombination von Buchstaben, Zahlen und Zeichen, die mit einem Unterstrich beginnen. In Maple V Version 2 ist die maximale Lange der Kette auf 499 Zeichen beschrankt. In Maple V Version 3 ist diese Beschrlinkung aufgehoben. Siehe Seite 39. Eqn Ein System zum Setzen von Gleichungen und mathematischen Formeln, welches zusammen mit dem trof f-Programm des Unix-Systems zum Formatieren von Dokumenten benutzt wird. Maple kann Ausdriicke in eqn-Syntax tibersetzen. Siehe Seite 64. Escape-Zeichen Ein Zeichen, welches Maple anzeigt, daB die restlichen Zeichen der Eingabezeile besonders behande1t werden sollen. Es gibt vier Escape-Zeichen in Maple: II, \, ? und !. Ihre Bedeutungen sind in der Tabelle auf Seite 366 erkliirt. Feld Ein spezielle Tabelle, die durch einen Bereich aufeinanderfolgender ganzer Zahlen in jeder Dimension indiziert wird. Der englische Begriff lautet Array. Siehe Seite 50. Formalparameter Die Namen, die zwischen den Klammem nach dem Wort proc in einer Prozedurendefinition auftauchen, oder die Namen, die auf der Iinken Seite eines Pfeiloperators zur Definition von Funktionen stehen oder auch die Namen, die nach dem ersten vertikalen Strich in einer Funktion in spitzen Klammern auftreten. Maple benutzt den Mechanismus Aufruf durch ausgewerten Namen zur Ersetzung formaler Parameter, wenn eine Prozedur oder Funktion aufgerufen wird: die aktuellen Argumente werden erst ausgewertet, dann wird jedes Auftreten eines Formalparameters im Rumpf der Prozedur oder Funktion durch den Wert des entsprechenden aktuellen Arguments ersetzt. Daraus folgend ist es nicht moglich, einem Formalparameter einen Wert innerhalb des Rumpfs einer Prozedur oder Funktion zuzuweisen, solange man nicht ein freies Symbol als entsprechenden Aktualparameter weitergibt. FORTRAN Eine Programmiersprache, die sehr oft fUr numerische Aufgaben in Forschung und Technik verwendet wird. Maple kann Ausdriicke in FORTRAN-Syntax tibersetzen. Siehe Seite 64. FTP Das File Transfer Protocol, zwischen verschiedenen Rechnern verbunden durch das Internet. Kapite1 E beschreibt, wie man Dateien mit Hilfe von FTPtibertrligt. Siehe Seite 317. Globale Variable Eine Variable, deren Wert wlihrend der ganzen Maple-Sitzung bekannt ist. Jede Variable, welche in der Sitzung explizit zugewiesen wird, ist eine globale Variable. In Maple V Version 2 ist eine in einer Prozedur verwendete Variable eine globale Variable genau dann, wenn sie nicht explizit als local erkliirt ist. In Maple V Version 3 kann eine in einer Prozedur benutzte Variable explizit als global erkliirt werden. Eine innerhlab einer Prozedur undeklararierte Variable wird als global angesehen, wenn sie keine Indexvariable einer f or- oder seq-Anweisung ist und falls sie nicht auf der linken Seite einer Zuweisung innerhalb der Prozedur auftritt. Maple erkennt auch einige globale Systemvariablen, wie die Saat ftir Zufallszahlen _s eed. Eine globale Variable existiert, bis man sie explizit freigibt. Siehe Seite 41. Hue Eine Art, eine Farbe in Maple ftir Graphiken auszuwlihlen. Ein Hue ist eine Farbe des Regenbogens, welche durch eine reelle Zahl zwischen 0 und I angegeben wird. Ein HueWert 0 steht ftir rot; groBere Werte ergeben das Spektrum von Orange,- Gelb-, Griin, Blauund Indigo-Schattierungen; I steh! fUr reines violett. Siehe Seiten 23 und 29. In Hochkommata eingeschlossene Kette (Quoted String) Eine Kombination von Null oder mehr Zeichen, welche in Hochkommata eingeschlossen sind: aum Beispiel, 'name'. In einer solchen Kette kan ein jedes Zeichen vorkommen, auch das Zeilenumbruchszeichen. Will man das schrliggestellte Hochkomma selbst in die Kette einschlieBen, so muB man zwei aufeinanderfolgende Hochkommata eingeben, sobald man ein einzelnes schrliggestelltes Hochkomma in einer Kette haben will. In Maple V Version 2 ist die maximale Lange einer Kette auf 499 Zeichen begrenzt. In Maple V Version 3 gibt es diese Beschrankung nichl mehr. Siehe Seite 39.

359

I Verzeichnis wichtiger Begriffe Kern Eine der drei Hauptkomponenten des Maple-Systems. Die anderen sind die MapleBibliothek und die Benutzerschnittstelle. Der Kern stellt das eigentliche Rechenwerk von Maple dar und besteht aus kompiliertem C-Code. Dieser wird immer dann geladen, wenn eine Maple-Sitzung gestartet wird. Funktionen, die im Kern implementiert sind (spracheigene Funktionen), sind immer ansprechbar, aber man kann sich ihren Quellcode nicht anschauen. Siehe Seite 53. Konstante Eine numerische Konstante (eine ganze Zahl, Bruch, oder Gleitkommazahl), oder eine symbolische Konstante. Die symbolischen Konstanten in Maple sind E, Pi, gamma, Catalan, I, true, false, FAIL, und infinity. Siehe Seite 13. D1E;X Eine spezielle, von Leslie Lamport geschriebene Version von TEX die mittels mehrerer hinzugefiigter Befehle das Setzen von Ausdriicken erleichtert. Dieses Buch wurde mit DTEXgesetzt. Maple kann Ausdiicke in Jb.TEXSyntax iibersetzen. Siehe Seite 64. Liste Null oder mehr Ausdriicke, die durch Kommata abgetrennt und in eckige Klammern [ 1 eingeschlossen sind. Eine Liste kann Duplikate enthaIten und die Anordnung ihrer Elemente wird vom System niemaIs verlindert. Siehe Seite 46. Lokale Variable In Maple V Version 2, ist eine Variable lokaI zu einer Prozedur genau dann, wenn sie explizit aIs local deklariert ist. In Maple V Version 3 ist eine Variable, welche weder aIs local noch global deklariert wurde, eine lokaIe Variable, faIls sie die Indexvariable einer for- oderr seq-Anweisung ist oder faIls sie auf der linken Seite einer Anweisung innerhaIb der Prozedur auftritt. Der Wert einer lokaIen Variablen ist nur innerhaIb der Prozedur bzw. Funktion bekannt, in der sie definiert wurde und ist vom Wert einer globaIen Variablen mit demselben Namen unabhlingig. Die folgende Prozedur zum Beispiel deklariert zwei lokaIe Variablen a und b (und einen formaIen Parameter, x): proc (x) local a, b; anweisungsfolge end; Maple V Version 2 sowie friihere Versionen lassen lokaIe Variablendeklarationen auch in Pfeilfunktionen zu: x -> local a,b; ausdruck; Aile Versionen erlauben lokaIe Variablen innerhaIb Funktionen, die in spitzen Klammern definiert wurden: < ausdruck I x I a, b >; Maple-Bibliothek Eine der drei Hauptkomponenten des Maple Systems. Die anderen sind der Kern und die Benutzerschnittstelle. Die Maple-Bibliothek enthaIt den GroBteil von Maples mathematischen Routinen und ist in Maples eigener Programmiersprache geschrieben. Man kann den Quellcode einer beliebigen Funktion der Maple-Bibliothek inspizieren. Die Maple-Bibliothek zerfaIIt in drei Teile: Standard-Bibliotheksfunktionen, Sonstige Bibliotheksfunktionen und Pakete. Siehe Seite 53. Maple V Eine Version von Maple, die erstmaIs im September des Jahres 1991 veroffentlicht wurde. Maple V Version 2 Eine Version von Maple, die erstrnaIs im November des Jahres 1992 veroffentlicht wurde. Maple V Version 2 umfaBt neue und erweiterte mathematische Routinen, effektivere numerische Algorithmen, mathematische Ausgabe, die ArbeitsblattschnittstelIe, einen Browser zum Anzeigen von Hilfsstichworten, etliche neue Graphikroutinen und -optionen, verbesserte Eingabe und Ausgabe und mehrere neue Pakete. Maple V Version 3 Eine Version von Maple, die erstmaI im Mlirz 1994 veriiffentlicht wurde. Maple V Version 3 enthaIt zusiitzliche Hilfsbefehle, erweiterte Plotoptionen, Schutz gegen die Zuweisung von Systemnamen, erweiterte Routinen zur Verarbeitung von Zeichenketten, sowie Verbesserungen zu vielen mathematischen Funktionen und Paketen, darunter Integration, aIgebraische Manipulation, DifferentiaIgleichungen, Laplacetransformationen, VektoranaIysis, das Losen von Gleichungen, Statistik, und Zahlentheorie. March Ein Systemprogramm, welches mit Maple V Version 2 und Version 3 mitgeliefert wird; es erzeugt und verwaItet Archive fiir Maple-Routinen. Die Maple-Bibliothek ist eine einfache Archivdatei in Maple V Version 2 und Version 3. Mathematica Ein ComputeraIgebrasystem, welches von Wolfram Research, Inc entwickelt wurde. Mathematica und Maple haben ahnliche Fahigkeiten.

360

Wichtige Begriffe Matrix Ein spezielles zweidimensionales Feld, dessen Index bei 1 beginnt fiIr beide Dimensionen. Siehe Seite 50. Menge Keine oder mehrere Ausdriicke, die durch Kommata getrennt in geschweifte Klammern { } eingeschlossen sind. Eine Menge kann keine Duplikate enthalten und ihre Elemente konnen vom System umgeordnet werden. Siehe Seite 49. Mint Ein Programm zur Diagnostik, welches zusammen mit Maple geliefert wird; es erkennt syntaktische Fehler, weist auf potentielle Programrnierfehler hin und verfolgt den Gebrauch globaler und lokaler Variablen innerhalb von Maple-Programmen. Siehe Seite 60. Neutraler Operator Ein Operator, der mit einem Klammeraffen (&) beginnt. Der Rest kann eine beliebige einfache Zeichenkette oder eine Folge von nichtalphanumerischen Zeichen aus der folgenden Liste sein: + - * / セ@ =? ! " . , @%$-. Beispielsweise sind &rnyop und &++% giiltige neutrale Operatoren. Maple erzwingt flir neutrale Operatoren keine feste Semantik. Man kann Prozeduren zur Manipulation von Ausdriicken definieren, die solche Operatoren enthalten. Maple benutzt den neutralen Operator & * , urn nichtkommutative Multiplikation, darunter Matrixmultiplikation, anzuzeigen und benutzt & セ@ in zwei Zusammenhiingen: als formale Exponentiation zusammen mit mod und als das Dachprodukt in liesymm und anderen Paketen. Neutrale Operatoren konnen in unlirer Prlifixform, binlirer Infixform oder der gewohnlichen Funktionsaufrufform geschrieben werden. Nichta5soziativer Operator Ein Operator ohne Gruppierungsregel. Fiir einen Ausdruck mit zwei oder mehreren aufeinanderfolgenden nichtassoziativen Operatoren derselben Prioritiit muB man Klammern angeben, urn klarzumachen, in welcher Reihenfolge die Operation ausgeflihrt werden soil. Zum Beispiel stellt a セ「@ セ@ c einen Syntaxfehler dar. Man muB stattdesセ@ coder a セ@ (b セ@ c) schreiben. In der Tabelle auf Seite 365 findet man den Typ sen (a セ「I@ der Assoziativitiit fiir jede Programmiersprache sowie die neutralen Operatoren in Maple. Null-Operator Ein Operator, der keine Argumente benotigt. In Maples Programmiersprache gibt es drei solcher Operatoren: ", " " und " " ", welche dazu benutzt werden, auf die drei letzten Ergebnisse zuzugreifen. Siehe Seite 364. Operator Eine Prozedur oder ein Funktionsname, ein Pfeilausdruck, ein Funktionsausdruck in spitzen Klammem, ein neutraler oder ein Programmiersprachenoperator, bzw. eine Kombinationen dieser. Option Ein optionales Argument fiIr eine Funktion. Optionen stehen nach den zwingend veriangten Argumenten und sind oft von der Form name=wert. Zum Beispiel ist die Option scaling=CONSTRAINED eine Option, die an die plot-Funktion (siehe Seite 20) gegeben werden kann. Optionen konnen in beliebiger Reihenfolge auftreten. Paket Eine Tabelle mit Prozeduren als Eintragen. Die Maple-Bibliothek enthiilt viele Pakete, die Hunderte von oft vorkommenden Operationen und Algorithmen aus diversen Bereichen der Mathematik implementieren. Man kann sich den Quellcode einer jeden in einem Paket definierten Funktion anschauen. Es gibt verschiedene Moglichkeiten, Funktionen aus Maple-Bibliothekspaketen einzuladen und zu benutzen. Urn zum Beispiel die display-Funktion des plots-Pakets aufrufen zu konnen, kann man den langen Funktionsnamen plots [display] benutzen. Man kann aber auch diese Funktion erst mit wi th (plots, display) einladen, oder auch aile Funktionen des Pakets auf einmal einladen und zwar mittels wi th (plots) . Danach ruft man dann einfach display auf. Siehe Seiten 54 und 331. Pascal Eine prozedurale Programrniersprache, die von Niklaus Wirth entwickelt wurde und urspriinglich zum Lehren der strukturierten Prograrnmierung dienen sollte. Sie wird oft in einflihrenden Programmierkursen gelehrt und ist heutzutage besonders auf Personalcomputern weitverbreitet. Die Syntax von Maples Programmiersprache ist in vieleriei Hinsicht der von Pascal iihnlich. Portabel Einfach iibertragbar von einem Rechner auf einen anderen. Maple-Befehle und -Programme sind so gestaltet, daB sie auf alle unterstiitzten Plattformen iibertragbar sind. Prioritlit Die Bindungskraft eines Prograrnmiersprachen- oder neutralen Operators. Prioritiit und Assoziativitat bestimrnen die Auswertungsreihenfolge in einem Ausdruck ohne Klammern zur expliziten Gruppierung. Operator hoherer Prioritiit werden zuerst ausgewertet, somit wirda : = b . 3 + 2 * c ausgewertetalsa : = «b . 3) + (2 * c». AufSeite365befindetsich eine Prioritatstabelle fUr aile Programmiersprachen- und neutralen Operatoren in Maple.

361

I Verzeichnis wichtiger Begriffe Programmiersprachenoperator Ein spracheigener Operator zur Erzeugung von Ausdriicken wie +, < oder union. Eine vollstiindige Liste alIer Programmiersprachenoperatoren befindet sich in der Tabelle auf Seite 364. Programmiersprachenoperatoren sind entweder Null, unllr oder binllr. Prozedurale Programmierung Eine Programmiertechnik, bei der eine Funktion oder Prozedur als eine Abfolge von Schritten geschrieben wird. Maple hat eine prozedurale Programmiersprache mit einer Syntax, die lihnlich der von ALGOL 68 und Pascal ist. Rekursive Funktion Eine Funktion, die sich selbst aufruft, sei es direkt oder durch eine zwischenzeitlich aufgerufene dritte Funktion. Maple erlaubt rekursive Funktionen. RGB Die rot-griin-blau Kodierungsmethode zur Auswahl einer Farbe in Maple-Graphiken. Man kann jede beliebige Farbe auswlihlen, indem man die entsprechenden drei Komponentenintensitaten r, g und b als reelle Zahlen zwischen 0 und 1 auswlihlt, wobei 0 flir keinen Beitrag der Komponente und 1 fUr die volle Intensitiit steht. Siehe Seiten 24 und 30. Satzzeichen Ein Zeichen zur Abgrenzung vonm Ausdriicken, Anweisungen oder Datenstrukturen in Maple. Die Satzzeichen in Maple sind; : ' , () [1 {}< I>. Ihre Bedeutung findet man in der Tabelle auf Seite 366. Schema Das Schema fiir einen Befehl gibt an, wieviele Argumente die Funktion benotigt und von welchem Typ diese sein miissen. Das Schema iquo (m, n) zeigt zum Beispiel an, daB die ganzzahlige Quotientenfunktion zwei ganze Zahlen als Argumente benOtigt. Kapitel D, welches auf Seite 120 beginnt, beinhaltet Schemata flir aile Maple-Befehle. Schliisselwort Ein reserviertes Wort, welches zum Formulieren von Maple-Anweisungen benOtigt wird. Ein Schliisselwort kann kein gilltiger Variablenname sein. Die Schliisselworte in Maplesindand,by,do,done,elif,else, end, fi, for, from, if, in, intersect, local,minus,mod,not,od,option, options, or,proc, quit, read,save, stop, then, to, union und while. Share-Bibliothek Eine Sammlung frei erhliltlicher Maple-Programme und -Dokumente. Die Share-Bibliothek stellt die aktuellste Quelle dar ftir vorgenommene Korrekturen von fehlerhaften Maple-Bibliotheksroutinen, Maple-Code fUr diverse Anwendungen, der von Autoren in der ganzen Welt zur VerfUgung gestellt wurde und verschiedene Dokumente, darunter Einftihrungen und Infonnationen zu der neuesten Maple-Version. Teile der Maple-ShareBibliothek werden zusammen mit Maple geliefert und gewtlhnlich in einem Verzeichnis namens ,,share" installiert. Wie man eine Kopie der aktuellen Version der Share-Bibliothek erhalten kann, ist in Kapitel E (Seite 308) beschrieben. Sitzung Eine interaktive Anwendung von Maple, vom Anfang bis zum Ende. Ergebnisse, die man wlihrend einer Sitzung berechnet, muB man explizit vor Verlassen der Sitzung abspeichern, wenn man sie in einer kUnftigen Sitzung wieder benutzen will. Siehe Seite 3. Sonstige Bibliotheksfunktion Eine Funktion der Maple-Bibliothek, die explizit mit readlib eingeladen werden muB, bevor sie in einer Sitzung benutzt werden kann. Man kann sich den Quellcode einer Sonstigen Bibliotheksfunktion anschauen. Siehe Seite 56. Spracheigenene Funktion Eine im Maple-Kern definierte Funktion, also eine Funktion, die immer zur Verfiigung steht. Spracheigenene Routinen sind die Implementationen besonders wichtiger Maple-Routinen, wie z. B. Arithmetik und Parsen von Ausdriicken. Der Code einer spracheigenen Funktion kann nicht inspiziert werden. Siehe Seite 53. Standard·Bibliotheksfunktion Eine Funktion der Maple-Bibliothek, welche automatisch in die Sitzung eingeladen wird, sobald sie benotigt wird. Man kann sich den Quellcode einer jeden Standard-Bibliotheksfunktion anschauen. Siehe Seite 54. Starre Funktion Eine formale Funktion, welche einen mathematischen Ausdruck darstellt. Diese Funktion flihrt keine Berechnungen durch. Zum Beispiel ergibt Int (cos (x), x) cos x dx. In Maple beginnen aile starren Funktionen mit einem Gro8buchstaben (aller(lings sind nicht aile Funktionen, die mit einem GroBbuchstaben beginnen, starr). Siehe Seite 5.

r

362

Wichtige Begriffe Symbolic Computation Group Eine Forschungsgruppe im Department of Computer Science der University of Waterloo, die von Keith Geddes und Gaston Gonnet im Jahre 1980 gegriindet wurde. Die Symbolic Computation Group entwickelt Maple und ist ein bedeutender Forschungsschwerpunkt im Bereich der Computeralgebra. Tabelle Eine allgemeine multidimensionale Datenstruktur in Maple, welche durch eine beliebige Zeichenkette bzw. einen beliebigen Ausdruck indiziert werden kann. Siehe Seite 52. Teilpaket Ein Paket, welches innerhalb eines anderen Pakets definiert ist. In Maple V Version 3 sind die meisten Funktionen des s ta ts-Pakets in Teilpakete aufgeteilt. Der wi thBefehl Hidt Teilpakete genauso ein wie Pakete. Urn zum Beispiel die mean-Funktion aus dem display-Teilpaket von stats aufzurufen, kann man den langen Funktionsnamen stats [describe, mean] verwenden. Man kann aber auch erst wi th (stats) eingeben und dann describe [mean] benutzen. 1m Gegensatz dazu kann man auch wi th (stats) gefolgt von wi th (describe) eingeben und dann einfach mean aufrufen. Siehe Seite 56.

'lE?'

Ein System, welches von Donald Knuth zum Setzen von Biichem und Dokumenten entwickelt wurde; es ist besonders auf mathematische Biicher und Dokumente zugeschnitten.

Token Syntaktische Komponente eines Maple-Ausdrucks odereiner Maple-Anweisung. Tokens in Maple sind ganze Zahlen, Zeichenketten, Programmiersprachenoperatoren, Schliisselworte und Satzzeichen. VIps "Units in the last place", also Einheiten in der letzten Stelle. Dies ist eine Einheit zum Testen auf angenliherte Gleichheit von Gleitkommazahlen in Maple; diese wird in Befehlen wie test float benutzt. Fiir eine gegebene Gleitkommazahl s, stellt ein ulp die Anderung urn ±1 in der nten signifikanten Stelle von s dar, wobei n der aktuelle Wert von Digi ts ist. Wenn zum Beispiel Digi ts gleich 5 ist, so ist 1.2345 ein ulp von 1.2344 und 1.2346 entfemt. Umgebungsvariable Eine spezielle Klasse globaler Variablen, die lokal verandert werden konnen, ohne den globalen Wert zu verandem. Man kann eine Umgebungsvariable innerhalb einer Prozedur umsetzen, wobei sie aber beim Ausstieg aus dieser Prozedur wieder auf den alten Wert zuriickgesetzt wird. Die spracheigenen Umgebungsvariablen in Maple sind Digi ts, 'mod', Normalizer, printlevel, und Testzero. Jede mit _Env beginnende Variable ist ebenfalls eine Umgebungsvariable. Uniirer Operator Ein Operator, der nach einem Argument verlangt. Die meisten unaren Programmiersprachenoperatoren in Maple werden in Prafixschreibweise geschrieben: zum Beispiel - 3. Einige werden in Postfixschreibweise dargestellt: zum Beispiel 4 ! . Neutrale Operatoren kbnnen in unarer Prafixschreibweise dargestellt werden. Variable Symbols, Inc. Ein Untemehmen, welches im Jahre 1989 von Nancy Blachman gegriindet wurde; es bietet Training und Werkzeuge (Tools) an, urn die Benutzung technischer Software wie Maple zu erleichtem. Variable Symbols, Inc., 6537 Chabot Road, Oakland, CA 94618, Fax 001-510-652-8461, Telefon 001-510-652-8462. Vektor Ein spezielles eindimensionales Feld, dessen Index bei 1 beginnt. Siehe Seite 50. X Ein auf Fenstem basierendes System, welches am Massachusetts Institute of Technology entwickelt wurde und auf vielen Arbeitsplatzrechnem weitverbreitet ist. ZeichenkeUe Eine einfache (simple) oder eine in Hochkommata eingeschlossene (quoted) Zeichenkette. Jede Zeichenkette stellt einen giiltigen Variablennamen dar, mit Ausnahme einer Kette, die mit einem geschiitzten Namen iibereinstimmt. In Maple V Version 3 sind die meisten Systemnamen geschiitzt; in Version 2 sind nur Schliisselworte und gewisse symbolische Kontanten geschiitzt. In Version 3 ist die Lange einer Kette uneingeschrankt, in Version 2 ist die maximale Lange auf 499 Zeichen festgesetzt. Siehe Seite 39.

363

J

Tabellen

J.l

Null-Operatoren

Maple enthlilt drei Programmiersprachenoperatoren, die iiberhaupt keine Argumente benotigen. Dies sind die "ditto" -Operatoren. Operator

Beschreibung Letztes Ergebnis Vorletztes Ergebnis Vorvorletztes Ergebnis

J.2 Operatorprioritat Maple enthlilt viele uniire und biniire Operatoren. Die folgende Tabelle listet alle Programmiersprachenoperatoren sowie die neutralen Operatoren in Maple, die ein oder zwei Argumente benotigen. (Die neutralen Operatoren sind solche, welche mit einem Ampersand, &beginnen.) Die Operatoren sind nach ihren Prioritaten geordnet aufgelistet, die mit der hochsten Prioritlit zuerst. Der Operator mit der hochsten Prioritlit ist die Verkettung oder der Dezimalpunkt; der mit der niedrigsten ist die Zuweisung. Operatoren, die in derselben Schachtel vorkommen, haben auch dieselbe Prioritat. In der Tabelle findet man auch die Assoziativitatsregeln fiir jeden Operator. Da zum Beispiel die biniiren Operatoren + und - linksassoziativ sind und dieselbe Prioritat besitzen, wird der Ausdruck x + y - z berechnet als (x + y) - z und x - y + Z als (x - y) + z. Nichtassoziative Operatoren gehorchen keiner Gruppierungsregel, deshalb fiihrt XAyA z zu einem Syntaxfehler. Die meisten uniiren Operatoren in Maple sind Pralixoperatoren: zum Beispiel die Negation (- 3). Die einzigen Ausnahmen sind Fakualtat (4 !) sowie manchmal der Dezimalpunkt (5 . ), wie in der Tabelle vermerkt. Operator

Typ biniir biniir uniir

Name Verkettung (linker Operand ist Zeichenkette) Dezimalpunkt Dezimalpunkt (Pralix oder Postfix)

%

uniir

Bezeichnung

nichtassoziativ

&kette &kette

biniir uniir

Neutraler Operator Neutraler Operator

linksassoziative

uniir

Fakultat (Postfix)

linksassoziativ

biniir

Exponentiation Exponentiation Wiederholte Komposition

nichtassoziativ

biniir

Multiplikation Nichtkommutative Multiplikation Division Komposition Schnitt von Mengen

linksassoziativ

biniir uniir biniir uniir biniir

Addition Plus Subtraktion Negation Vereinigung von Mengen

linksasoziativ

** @@ * &* / @ intersect + +

union

Assoziativitiit linksassoziativ

J.3 Satzzeichen Operator minus

Typ binlir

mod
=

Name Subtraktion von Mengen

Assoziativitat

binlir

Modulo

nichtassoziativ

binlir

Ellipsis (Bereich)

nichtassoziativ

binlir

Kleiner als Kleiner als oder gleich GroBer alS GroBer als oder gleich Gleich Nicht Gleich

$ $

binlir unlir

not

unlir

Logische Vemeinung

rechtsassoziativ

and

binlir

Logische Konjunktion

Iinksassoziativ

or

binlir

Logische Disjunktion

linksassoziativ

->

binlir

Pfeil (Funktion)

rechtsassoziativ

binlir

Komma (Ausdrucksfolge)

linksassoziativ

binlir

Zuweisung

nichtassoziativ

.-

Foige Folge

nichtassoziativ

nichtassoziativ

J.3 Satzzeichen Maple enthiilt mehrere Satzzeichen zum Beenden von Anweisungen, Ausdriicken, Funktionen, Zeichenketten und Datenstrukturen. Satzzeichen

'zeichen' , ausdr' (

)

f(args) [el,

e2, .. , I

ausdr [ sub I { el,

(I I) (*

e2, ... }

*)

< ausdr I vars>

Beschreibung Anweisungstrenner Anweisungstrenner, gib Ergebnis nicht aus Wortlich genommene Zeichenkette Verzogere die Auswertung von ausdr Gruppierung von Ausdriicken Funktionsaufruf Liste Auswahloperation Menge Altemativ zu [ 1 Altemativ zu { } Funktion in spitzen Klammem Funktion in spitzen Klammem Funktion in spitzen Klammem

J.4 Escape-Zeichen Ein Escape-Zeichen zeigt an, daB der Text auf der Zeile auf besondere Weise verarbeitet werden soli. Zeichen II

\ \ ?

Position beliebig Ende der Zeile Nicht am Ende der Zeile Zeilenanfang Zeilenanfang

Beschreibung Rest der Zeile ist Kommentar Fortsetzung der Zeile Kein Effekt (zur besseren Lesbarkeit) Hilfe Befehl des unterliegenden Betriebssystems

Das escape-to-host-Zeichnen zum Zugriff auf das unterliegende Betriebssystem wird nicht von allen Maple-Plattformen unterstiitzt.

365

Das Maple Arbeitsbuch von Elkedagmar Heinrich und Hans-Dieter Janetzko 1995. X, 263 Seiten mit 72 Abbildungen und 55 Obungsaufgaben. Kartoniert. ISBN 3-528-06591-5

Aus dem Inhalt: Inhalt: EinfOhrung - Analysis -Integralrechnung - Algebra - Graphik - Maple als Programmiersprache. Computeralgebra-Pakete finden immer mehr Verb reitung und werden auch in hoherem MaBe schon in der Mathematik-Ausbildung von Studenten an Fachhochschulen und Universitaten verwendet. Analog zum Lehrbuch derselben Autoren zu Mathematica lernt der Leser das Programmpaket nicht als Selbstzweck, sondern als Werkzeug zum Losen seiner mathematischen Probleme kennen. DarOber hinaus erfahrt er, wo Maple an seine Grenzen gelangt und mit welchen Kniffen man seine Fahigkeiten voll ausnutzen kann.

Ober die Autoren: Prof. Dr. Elkedagmar Heinrich und Dipl.-Math. Hans-Dieter Janetzko lehren beide an der Fachhochschule Konstanz das Fach Mathematik.

Verlag Vieweg . Postfach 15 46 . 65005 Wiesbaden