Der Standardtorus: Metrik und Christoffelsymbole

Immersion:

x1 = (R + r Sin[u]) Cos[v]; x2 = (R + r Sin[u]) Sin[v]; 
    x3 = r*Cos[u];

So sieht er aus:

R = 5; r = 2;
ParametricPlot3D[{x1, x2, x3}, {u, -Pi, Pi}, {v, -Pi, 
        Pi}]
Clear[R]; Clear[r];

Berechnung der induzierten Metrik:

n1 = 3; n2 = 2;
coord1 = {x1, x2, x3};coord2 =  {u, v};

(J = 
          Table[Simplify[D[coord1[[i]], coord2[[j]]]], {j, 1, 
              n2}, {i, 1, n1}]) // MatrixForm

metric1 = {{1, 0, 0}, {0, 1, 0}, {0, 0, 
            1}};
(metric2 = 
          Table[Simplify[
              Sum[J[[i, k]]*J[[j, l]]*metric1[[k, l]], {k, 1, 
                  n1}, {l, 1, n1}]], {i, 1, n2}, {j, 1, n2}]) // 
      MatrixForm

Berechnung der Christoffelsymbole:

(inversemetric = Simplify[Inverse[metric2]]) // 
      MatrixForm

affine := affine = 
        Simplify[
          Table[(1/2)*
              Sum[(inversemetric[[i, s]])*
(D[
                        metric2[[s, j]], 
                        coord2[[k]] ] + 
D[
                        metric2[[s, k]], coord2[[j]] ] - 
                      D[metric2[[j, k]], coord2[[s]] ]), {s, 1, 
                  n2}], 
{i, 1, n2}, {j, 1, n2}, {k, 1, 
              n2}] ]

listaffine := 
      Table[If[UnsameQ[affine[[i, j, k]], 
            0], {ToString[Γ[i, j, k]], 
            affine[[i, j, k]]}] , {i, 1, n2}, {j, 1, n2}, {k, 1, 
          n2}]

Nur die von Null verschiedenen Christoffelsymbole werden ausgegeben:

TableForm[Partition[DeleteCases[Flatten[listaffine], Null], 2], 
      TableSpacing -> {2, 2}]