Sage ohne Notebook
SAGE – Die interaktive Kommandozeile
In den meisten Teilen dieses Tutorials gehen wir davon aus, dass Sie Sage mit dem sage
-Befehl starten. Dieser startet eine angepasste Version der IPython Kommandozeile und lädt Funktionen und Klassen, sodass sie in der Kommandozeile genutzt werden können. Nach dem Start von Sage sehen Sie etwa folgendes:
----------------------------------------------------------------------
| SAGE Version 4.5.2, Release Date: 2010-08-05 |
| Type notebook() for the GUI, and license() for information. |
----------------------------------------------------------------------
sage:
Um Sage zu beenden drücken Sie Strg-D oder geben Sie quit
oder exit
ein.
sage: quit
Exiting SAGE (CPU time 0m0.00s, Wall time 0m0.89s)
Unter „wall time“ finden Sie die vergangene Echtzeit (der Uhr an Ihrer Wand). Diese ist nötig, da die CPU Zeit Unterprozesse wie GAP oder Singular nicht berücksichtigt.
(Vermeiden Sie es den Sage Prozess mit kill -9
in der Konsole zu beenden, da so möglicherweise Unterprozesse wie z.B. Maple-Prozesse nicht beendet oder temporäre Dateien in $HOME/.sage/tmp
nicht gelöscht würden.)
Ihre Sage Sitzung
Unter einer Sitzung verstehen wir die Ein- und Ausgaben von Sage vom Starten bis zum Beenden. Sage speichert alle Eingaben mittels IPython. Wenn Sie die interaktive Kommandozeile nutzen (im Gegensatz zur Browser-Oberfläche „Notebook“), so können Sie jederzeit mittels %hist
eine Liste aller bisher getätigten Eingaben sehen. Sie können auch ?
eingeben, um mehr über IPython zu erfahren. Beispielsweise unterstützt IPython Zeilennummerierung … sowie Ein- und Ausgabezwischenspeicherung. Alle Eingaben werden gespeichert und können in Variablen abgerufen werden (neben der normalen Pfeiltasten-Navigation). Die folgenden globalen Variablen existieren immer (also bitte überschreiben Sie sie nicht!)“:
_: letzte Eingabe (interaktive Kommandozeile und Browser-Oberfläche)
__: vorletzte Eingabe (nur in der Kommandozeile)
_oh: Liste aller Eingaben (nur in der Kommandozeile)
Hier ein Beispiel:
sage: factor(100)
_1 = 2^2 * 5^2
sage: kronecker_symbol(3,5)
_2 = -1
sage: %hist # funktioniert nur in der Kommandozeile, nicht im Browser.
1: factor(100)
2: kronecker_symbol(3,5)
3: %hist
sage: _oh
_4 = {1: 2^2 * 5^2, 2: -1}
sage: _i1
_5 = 'factor(ZZ(100))\n'
sage: eval(_i1)
_6 = 2^2 * 5^2
sage: %hist
1: factor(100)
2: kronecker_symbol(3,5)
3: %hist
4: _oh
5: _i1
6: eval(_i1)
7: %hist
Wir lassen die Zeilennummerierung im restlichen Tutorial sowie in der weiteren Sage-Dokumentation weg. Sie können auch eine Liste von Eingaben einer Sitzung in einem Makro für diese Sitzung speichern.
sage: E = EllipticCurve([1,2,3,4,5])
sage: M = ModularSymbols(37)
sage: %hist
1: E = EllipticCurve([1,2,3,4,5])
2: M = ModularSymbols(37)
3: %hist
sage: %macro em 1-2
Macro `em` created. To execute, type its name (without quotes).
sage: E
Elliptic Curve defined by y^2 + x*y + 3*y = x^3 + 2*x^2 + 4*x + 5 over
Rational Field
sage: E = 5
sage: M = None
sage: em
Executing Macro...
sage: E
Elliptic Curve defined by y^2 + x*y + 3*y = x^3 + 2*x^2 + 4*x + 5 over
Rational Field
Während Sie die interaktive Kommandozeile nutzen, können Sie jeden UNIX-Kommandozeilenbefehl in Sage ausführen, indem Sie ihm ein Ausrufezeichen !
voranstellen. Zum Beispiel gibt
sage: !ls
auto example.sage glossary.tex t tmp tut.log tut.tex
den Inhalt des aktuellen Verzeichnisses aus.
In der PATH
-Variablen steht das Sage „bin“ Verzeichnis vorne. Wenn Sie also gp
, gap
, singular
, maxima
, usw. eingeben, starten Sie die in Sage enthaltenden Versionen.
sage: !gp
Reading GPRC: /etc/gprc ...Done.
GP/PARI CALCULATOR Version 2.2.11 (alpha)
i686 running linux (ix86/GMP-4.1.4 kernel) 32-bit version
...
sage: !singular
SINGULAR / Development
A Computer Algebra System for Polynomial Computations / version 3-1-0
0<
by: G.-M. Greuel, G. Pfister, H. Schoenemann \ Mar 2009
FB Mathematik der Universitaet, D-67653 Kaiserslautern \
Ein- und Ausgaben loggen
Die Sage Sitzung loggen bzw. speichern ist nicht das Gleiche (siehe Speichern und Laden kompletter Sitzungen). Um Eingaben (und optional auch Ausgaben) zu loggen nutzen Sie den Befehl logstart
. Geben Sie logstart?
ein um weitere Informationen zu erhalten. Sie können diesen Befehl nutzen um alle Eingaben und Ausgaben zu loggen, und diese sogar wiederholen in einer zukünftigen Sitzung (indem Sie einfach die Log-Datei laden).
was@form:~$ sage
----------------------------------------------------------------------
| SAGE Version 4.5.2, Release Date: 2010-08-05 |
| Type notebook() for the GUI, and license() for information. |
----------------------------------------------------------------------
sage: logstart setup
Activating auto-logging. Current session state plus future input saved.
Filename : setup
Mode : backup
Output logging : False
Timestamping : False
State : active
sage: E = EllipticCurve([1,2,3,4,5]).minimal_model()
sage: F = QQ^3
sage: x,y = QQ['x,y'].gens()
sage: G = E.gens()
sage:
Exiting SAGE (CPU time 0m0.61s, Wall time 0m50.39s).
was@form:~$ sage
----------------------------------------------------------------------
| SAGE Version 4.5.2, Release Date: 2010-08-05 |
| Type notebook() for the GUI, and license() for information. |
----------------------------------------------------------------------
sage: load("setup")
Loading log file <setup> one line at a time...
Finished replaying log file <setup>
sage: E
Elliptic Curve defined by y^2 + x*y = x^3 - x^2 + 4*x + 3 over Rational
Field
sage: x*y
x*y
sage: G
[(2 : 3 : 1)]
Wenn Sie Sage in der Linux KDE Konsole konsole
verwenden, können Sie Ihre Sitzung wie folgt speichern:
Nachdem Sie Sage in konsole
gestartet haben, wählen Sie „Einstellungen“, dann „Verlauf…“, dann „auf unbegrenzt“ setzen. Wenn Sie soweit sind Ihre Sitzung zu speichern, wählen Sie „Bearbeiten“ und dann „Verlauf speichern unter…“ und geben einen Namen ein, um den Text ihrer Sitzung auf dem Computer zu speichern. Nach dem Speichern der Datei können Sie jene in einem Editor wie GNU Emacs öffnen und ausdrucken.
Einfügen ignoriert Eingabeaufforderungen
Stellen Sie sich vor, Sie lesen eine Sitzung von Sage oder Python Berechnungen und wollen sie in Sage kopieren, aber überall sind noch die störenden >>>
oder sage:
Eingabeaufforderungen. Tatsächlich können Sie einfach die gewünschte Stelle mit Eingabeaufforderungen in Sage einfügen. Der Sage Parser wird standardmäßig die führenden >>>
oder sage:
Eingabeaufforderungen entfernen bevor er es an Python weitergibt. Zum Beispiel:
sage: 2^10
1024
sage: sage: sage: 2^10
1024
sage: >>> 2^10
1024
Quelle: https://doc.sagemath.org/html/de/tutorial/interactive_shell.html#chapter-interactive-shell