Guten Morgen Micha,
die Metrik ist aus Sicht des Programms sehr leicht zu beschreiben. Es sind zehn voneinander unabhängige Funktionen. Jede einzelne Funktion ist abhängig von (vorerst) maximal vier Parametern. Mathematisch sieht das so aus: f_1(x_1,x_2,x_3,x_4) ... f_10(x_1,x_2,x_3,x_4).
Aus Sicht des Programms ist jedes f_n eine Zeichenkette mit den Variablen x_1 bis x_4,den Verknüpfungszeichen +,-,*, festen Funktionen wie sin, sinh, exp, usw. und dem #-Zeichen für Potenzen. Z.B. f_1(x_1,x_2,x_3,x_4) = x_1#4 * x_2#2 + exp(x_3) * g(x_1,x_3). Dabei kann g(x_1,x_3) eine beliebige Funktion von den Variablen x_1 und x_3 sein. Durch die Möglichkeit Hilfsfunktionen zu verwenden kann der Anwender indirekt Klammern definieren. Mit f_1 kann man jetzt schon einiges anfangen. Eine partielle Ableitung nach x_1 ergibt f_1(x_1,x_2,x_3,x_4),1 = 4*x_1#3 * x_2#2 + exp(x_3) * g(x_1,x_3),1. Das ",1" steht als Abkürzung für eine partielle Ableitung nach x_1. Mit diesen Regeln ist die partielle Ableitung nach x_1 nichts anderes als eine Zeichenmanipulation der Zeichenkette für f_1(x_1,x_2,x_3,x_4) nach f_1(x_1,x_2,x_3,x_4),1. Für die Speicherung der Zeichenkette im RAM gibt es die Klasse Ausdruck.
Eine partielle Ableitung ist nichts anderes als eine normale Ableitung mit Angabe der Variablen nach der differenziert wird. Alle anderen Variablen werden wie gewöhnliche Konstanten behandelt.
Für die Berechnung des Riemann-Tensors gibt es zusätzlich noch eine kovariante und eine kontravariante Version der Metrik. Aus Sicht des Programms bedeutet das, dass man statt zehn Funktionen einfach zwanzig Funktionen speichern muss. Die beiden Mengen sind dabei mathematisch gesehen nicht unabhängig voneinander. Aus den zehn kovarianten Funktionen kann man also sehr oft die zehn zugehörigen kontravarianten Funktionen ausrechnen und umgekehrt. Diese Berechnung kann von Fall zu Fall aber auch schon wieder so kompliziert werden, dass man dazu eventuell wieder ein Computeralgebrasystem haben will.
Für den Fall, dass eine Funktion gleich Null ist bleibt die zugehörige Zeichenkette einfach leer.
Freundliche Grüße
Bernhard