/* Maxima:     
Computeralgebra-System (OpenSource)
Webseite: maxima.sourceforge.net  
*/;

/*  Parametrisierung der Kugel durch Kugelkoordinaten */
x: cos(theta[1])*cos(theta[2]);
y: cos(theta[1])*sin(theta[2]);
z: sin(theta[1]);
F:[x,y,z];

/* Berechnen der induzierten Metrik*/
g[i,j]:= diff(F, theta[i]).diff(F, theta[j]);

/* Gibt die zugehörige Matrix (Name: lg) der induzierten Metrik  aus
-- trigsimp performs simplifications that use the Pythagorean identity
-- genmatrix (a, i_2, j_2, i_1, j_1): Generiert eine Matrix aus einem Array a. Das erste Element der Matrix ist der Wert a[i_1,j_1] und das letzte Element der Matrix ist a[i_2,j_2]. 
*/
lg:trigsimp(genmatrix(g,2,2,1,1));

/* Setzt ug auf die inverse Matrix von lg*/
ug:invert(lg);

/* Laden des ctensor-Pakets - das ist ein Paket zum Manipulieren von Tensoren (wie Metrik, Krümmungstensor...)
Anleitung/Definition (auch um die Index- und Vorzeichenkonventionen zu sehen)  
unter http://maxima.sourceforge.net/docs/manual/maxima_26.html
-- darunter uebergeben wir die Dimension und die Koordinaten*/
load(ctensor); 

dim:2;
ct_coords:[theta[1], theta[2]];

/* Berechnet die Christoffelsymbole, Krümmungen ... - 
lcs berechnet \Gamma_{ij}^k 
mcs berechnet \Gamma_{ijl}:=\Gamma_{ij}^kg_{kl}
Es werden immer nur die Ausdrücke angezeigt, die nicht Null sind.
*/;

christof(lcs);
christof(mcs);

riemann(1);

ricci(1);

/*Skalarkrümmung*/
scurvature(); 