25.12.2012 Aufrufe

Computeralgebra-Rundbrief - Fachgruppe Computeralgebra

Computeralgebra-Rundbrief - Fachgruppe Computeralgebra

Computeralgebra-Rundbrief - Fachgruppe Computeralgebra

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!