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:- Wikipedia Collatz-Problem
- Jeffrey C. Lagarias: The 3x+1 Problem: An Overview
- G.J. Wirsching: Das Collatz-Problem
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)
Das Script kann auch unter "Hemispherical Harmonics auf GitHub" eingesehen und abgerufen werden.
- 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.
- SageMath findet sich hier und zum Webinterface SageMathCell siehe hier. Auf der SageMathCell-Website finden sich auch eine Beschreibung zur Einbettung in eine Webseite.
- Zugeordnete Legendrepolynome
- Kugelflächenfunktionen