SageMath

SageMathCell

SageMath ist ein quelloffenes und kostenloses Computeralgebrasystem (CAS). Dieses Programm ermöglicht das Umstellen, Faktorisieren, Vereinfachen, Differenzieren, Integrieren von Termen (symbolischen Ausdrücken) und vieles mehr. Mit SageMathCell kann dies sogar online über eine Web-Benutzeroberfläche erfolgen, wobei eine Python-ähnliche Skriptsprache verwendet wird.

Beispiele
Als Beispiel sei die Reihenentwicklung einer Funktion genannt:

oder auch mit LaTeX-Ausgabe

und auch als plot

Eine Eingabe von Parametern ist ebenfalls möglich

 

Ein Beispiel für eine Tabellenausgabe mithilfe von SageMath findet sich hier (Astronomische Entfernungen).

 

Collatz-Problem

Die Collatz-Funktion ist eine Funktion, die eine positive ganze Zahl als Eingabe nimmt und eine neue ganze Zahl gemäß der folgenden Regel berechnet: \[ f(n) = \begin{cases} \frac{n}{2} & \text{falls } n \text{ gerade ist} \\ 3n + 1 & \text{falls } n \text{ ungerade ist} \end{cases}, \qquad n \in \mathbb{N}. \] Der Collatz-Orbit ist eine Folge von Zahlen, deren erster Eintrag durch die Anwendung dieser Funktion auf eine bestimmte Ausgangszahl entsteht, und deren weitere Elemente aus dem aktuellen Vorgänger berechnet werden, bis der Wert 1 erreicht wird:

\[ O_0=n, \quad O_{i+1} = f(O_i), \qquad \text{Stopp, falls } O_i = 1. \] Die Collatz-Vermutung besagt, dass für alle natürlichen Zahlen die Folge irgendwann stoppt. Sie ist eine berühmte ungelöste mathematische Fragestellung.

Das folgende SageMath-Script berechnet den Collatz-Orbit. Eine Änderung des Anfangswertes kann durch die Setzung in Zeile 16 erfolgen.
Es gibt im Netz zahlreiche Quellen zur Collatz-Vermutung, hier eine kleine Auswahl:

 

Berechnung der hemisphärischen Kugelflächenfunktionen

An dieser Stelle verwenden wir SageMath zur Visualisierung der Pyramide der Basisfunktionen zu den hemisphärischen Kugelflächenfunktionen. Das entsprechende SageMath-Script ist etwas umfangreicher und sieht wie folgt aus:

SageMath-Script (klicke hier, um den Code einzuklappen oder auszuklappen)

 

# Normierungsfaktoren 
def Klm(l,m):
    if (m<0):
        return Klm(l,-m)
    return sqrt( (2*l+1)/(2*pi) * factorial(l-m)/factorial(l+m))
#
# assoziierte Legendrepolynomen
def P_shift(l,m,x):
    return gen_legendre_P( l,m,(2*x-1))
#
# Die Basisfunktionen 
#
def hsh(l,m,x,y):
    if m == 0:
        return Klm(l,0)*P_shift(l,m,cos(x))
    if m < 0: 
        return sqrt(2)*Klm(l,-m)*P_shift(l,-m,cos(x))*sin(-m*y) 
    if m > 0:
        return sqrt(2)*Klm(l,m)*P_shift(l,m,cos(x))*cos(m*y)
#
var("theta,phi,l,m")
#
#
# Anmerkung: 
#  * srange statt range, sonst hat gen_legendre_P ein Problem
#  * siehe https://ask.sagemath.org/question/8131/attributeerror-int-object-has-no-attribute-mod/
# statt über die for-loops 
# for l in srange(0,5):
#    for m in srange(-l,l+1): 
# zur Erzeugung aller Basisfunktionen, hier jetzt ein "interact" zur 
# Auswahl der Parameter von l und m, für m muss -l <= m <= l gelten.
# 
@interact
def data(l=(4,srange(4,5)), m=(2,srange(-4,5))):
        Y=hsh(l,m,theta,phi)
        rea = spherical_plot3d( max_symbolic(Y,0.0), (phi,0,2*pi), (theta,0.0,pi/2), 
                                color='blue', plot_points=(80,80), opacity=0.9)
        ima = spherical_plot3d( abs(min_symbolic(Y,0.0)), (phi,0,2*pi), (theta,0.0,pi/2), 
                                color='green', plot_points=(80,80), opacity=0.9)
        (rea+ima).show(aspect_ratio=1)

SageMath: hemisphärische Kugelflächenfunktionen
plot einer hemisphärische Kugelflächenfunktionen
  • die Parameter l und m können direkt im Script geändert werden (Zeile 22). Aber Achtung: für m muss -l < m <= l gelten.
 Links