Mathematik

Mathematische SW kurz vorgestellt: GAP

GAP (“Gruppen Algorithmen Programmierung”) ist ein Spezialprogramm für Diskrete Algebra (also nicht für Messdatenverarbeitung. Fourieranalyse, Fliesskommaberechnungen usw.) mit Schwerpunkt in Gruppentheorie und verwandten Bereichen.  Es ist frei (Opensource und Copyleft) und wird international in der mathematischen Forschung eingesetzt.  Es läuft unter Unix Derivaten, Windows und Macs. Es kann primär mit Gruppen, Darstellungen, Vektoren, Tensoren, Algebren und Ringen umgehen. Die Funktionalität wird vielen Paketen (packages, Libraries) erweitert; zum Beispiel mit der Small Groups Library (alle Gruppen bis zu einer gewissen Grösse).

GAP kann mit Einschränkungen auch in der Mathematik Software SAGE angesprochen werden, in der standalone und Cloudversion (SAGE Components).

Quelle: http://www.gap-system.org/. Die SW wird mittlerweile an mehreren GAP Centers betreut und weiterentwickelt, zum Beispiel wieder in Aachen. Der Source Code ist auf Github.

GAP sollte in wissenschaftlichen Artikeln wie folgt zitiert werden (BiBTeX)

  @manual{GAP4,
    key          = "GAP",
    organization = "The GAP~Group",
    title        = "{GAP -- Groups, Algorithms, and Programming,
                    Version 4.8.4}",
    year         = 2016,
    url          = "\verb+(http://www.gap-system.org)+",
    }

Anleitungen und Tutorien

Der Funktionsumfang von GAP ist riesig und wohl kaum ein Mathematiker kennt mehr als einen kleinen Bruchteil seiner Fähigkeiten.

Einfache Anwendung: Primfaktorzerlegung:

gap> FactorsInt( 10^42 + 1 ); [ 29, 101, 281, 9901, 226549, 121499449, 4458192223320340849 ]

Studenten der Algebra kennen und lieben die Sylow Gruppen:

gap> g:=SymmetricGroup(4);;
gap> SylowSubgroup(g,2);
Group([ (1,2), (3,4), (1,3)(2,4) ])

oder die Konjugationsklassen:

gap> s8:=SymmetricGroup(8);
Sym( [ 1 .. 8 ] )
gap> Size(ConjugacyClass(a8, (1,2)(3,4)(5,6)(7,8) ));
105


Anwendungsbeispiel

Die Analyse des Rubik’s Cube ist ein schönes Anwendungsbeispiel (Link).  Die 6 Drehungen einer Seite erzeugen eine Gruppe:

gap> cube := Group(
> ( 1, 3, 8, 6)( 2, 5, 7, 4)( 9,33,25,17)(10,34,26,18)(11,35,27,19),
> ( 9,11,16,14)(10,13,15,12)( 1,17,41,40)( 4,20,44,37)( 6,22,46,35),
> (17,19,24,22)(18,21,23,20)( 6,25,43,16)( 7,28,42,13)( 8,30,41,11),
> (25,27,32,30)(26,29,31,28)( 3,38,43,19)( 5,36,45,21)( 8,33,48,24),
> (33,35,40,38)(34,37,39,36)( 3, 9,46,32)( 2,12,47,29)( 1,14,48,27),
> (41,43,48,46)(42,45,47,44)(14,22,30,38)(15,23,31,39)(16,24,32,40) );
<permutation group with 6 generators>

Die Ordnung ist:

gap> Size( cube );
43252003274489856000

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert