Computeralgebra-Rundbrief - Fachgruppe Computeralgebra
Computeralgebra-Rundbrief - Fachgruppe Computeralgebra
Computeralgebra-Rundbrief - Fachgruppe Computeralgebra
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
nungen erforderlich sind. Daher wurde kein Wert auf<br />
eine interaktive Benutzerumgebung ähnlich zu der ” traditioneller“<br />
<strong>Computeralgebra</strong>systeme gelegt. Eine solche<br />
existiert zwar, ist jedoch in erster Linie für Testzwecke<br />
gedacht. Selbstverständlich kann GiNaC aber<br />
als Grundlage für ein interaktives System dienen, wie<br />
das Paket gTybalt beweist.<br />
Darüberhinaus fehlen in GiNaC zur Zeit noch einige<br />
Fähigkeiten wie die Faktorisierung von Polynomen,<br />
die Berechnung von Grenzwerten oder symbolisches<br />
Integrieren, wie sie von den meisten anderen <strong>Computeralgebra</strong>systemen<br />
angeboten werden. Auf die Implementierung<br />
von Funktionen wie einem allgemeinen<br />
simplify() zum Vereinfachen von Ausdrücken, deren<br />
Ergebnis nicht klar vorhersagbar ist (nach welchem<br />
Maß ist ein Ausdruck ” einfach“?) wurde jedoch bewusst<br />
verzichtet.<br />
Warum <strong>Computeralgebra</strong> in C ++ ? Die Motivation<br />
zur Entwicklung von GiNaC waren die Erfahrungen<br />
mit ” xloops“, einem ebenfalls an der Universität<br />
Mainz erstellten Programm zur automatisierten Berechnung<br />
von Schleifenintegralen in der Quantenfeldtheorie.<br />
Die dabei notwendigen, sehr umfangreichen algebraischen<br />
Rechnungen wurden ursprünglich in der Sprache<br />
des kommerziellen <strong>Computeralgebra</strong>systems Maple implementiert,<br />
was sich schnell als sehr problematisch herausstellte.<br />
Zum einen sind die in Maple und ähnlichen Systemen<br />
eingebauten Programmiersprachen zwar einfach zu<br />
lernen und für kleine Projekte recht praktisch, aber zur<br />
Entwicklung von Anwendungen wie xloops, die mehrere<br />
tausend Programmzeilen umfassen, eher ungeeignet.<br />
Möglichkeiten zur Modularisierung von Programmen<br />
und zur Informationskapselung fehlen fast vollständig,<br />
als einzige Datenstruktur stehen meist nur anonyme Listen<br />
zur Verfügung, und auch die angebotenen Hilfen zur<br />
Fehlersuche in Programmen sind üblicherweise sehr bescheiden.<br />
Zum anderen führt die Verwendung eines proprietären<br />
Systems zu einer Abhängigkeit von einem bestimmten<br />
Programm (teilweise sogar einer bestimmten<br />
Programmversion) und seinem Hersteller, die für langlebige<br />
Projekte nicht wünschenswert ist. Syntax und Se-<br />
mantik der Sprache von Maple haben sich im Laufe letzten<br />
Jahre mehrfach geändert. Für xloops waren bereits<br />
zwei getrennte Versionen für Maple V Release 1 und<br />
Release 3 erforderlich. Mit neueren Maple-Versionen ist<br />
der gleiche Code nicht mehr lauffähig.<br />
Die Entscheidung für C ++ als Implementationssprache<br />
fiel aus mehreren Gründen:<br />
• C ++ ist standardisiert, was das Projekt gegenüber<br />
Willkürlichkeiten seitens des Herstellers der Programmierumgebung<br />
schützt.<br />
• Entwicklungssysteme für C ++ existieren nicht<br />
nur in großer Zahl, sondern auch für alle relevanten<br />
Plattformen.<br />
• C ++ hat sich nicht nur in der Physik zur Entwicklung<br />
von umfangreichen Applikationen bewährt.<br />
• Die Möglichkeit zum Überladen von Operatoren<br />
erlaubt es in C ++ symbolische Ausdrücke in ihrer<br />
gewohnten Art und Weise hinzuschreiben, also<br />
z. B. x+y statt add(x, y) oder ähnlicher Konstrukte.<br />
• Als universelle Programmiersprache ist C ++ auch<br />
für Anwendungen geeignet, die nur teilweise auf<br />
symbolischen Rechnungen beruhen. Insbesondere<br />
müssen algebraische Resultate oft numerisch<br />
weiterverarbeitet werden, was in C ++ ebenfalls<br />
effizient möglich ist. Das für viele Programm ” pakete“<br />
der Hochenergiephysik typische Chaos aus<br />
einer Vielzahl von Sprachen und Systemen (C ++ ,<br />
Fortran, Mathematica, Maple, FORM . . . ) wird<br />
somit vermieden.<br />
Verfügbarkeit und Ausblick GiNaC ist unter der<br />
GNU General Public License (GPL) auf http://<br />
www.ginac.de verfügbar. Aktuell ist Version 1.1.6.<br />
Für die nähere Zukunft sind insbesondere eine noch<br />
stärkere Integration mit C ++ und eine leichtere Erweiterbarkeit<br />
geplant. So wird Version 1.2 unter Anderem<br />
STL-kompatible Iteratoren zum Durchlaufen von<br />
Ausdrücken und Templates zur einfachen Erzeugung<br />
neuer algebraischer Klassen bereitstellen.<br />
gTybalt – ein frei verfügbares <strong>Computeralgebra</strong>system<br />
gTybalt ist ein frei verfügbares <strong>Computeralgebra</strong>system,<br />
das unter der GNU General Public Licence steht [1].<br />
Entwickelt wurde gTybalt im Bereich der Elementarteilchenphysik.<br />
In diesem Fachgebiet sind symbolische<br />
Rechenmethoden mit Hilfe eines Computers mittler-<br />
Stefan Weinzierl (München)<br />
15<br />
weile ein unumgänglicher Bestandteil täglicher Arbeit.<br />
Eine Analyse der Anforderungen an ein <strong>Computeralgebra</strong>system<br />
für diese Rechnungen zeigt, dass in erster<br />
Linie das <strong>Computeralgebra</strong>system in der Lage sein<br />
muss, große Datenmengen zu verarbeiten. Zweitens ist