Learning how to compute Christoffel symbols using Mathematica

In summary, the conversation revolved around using a code provided by Artes to calculate the Chrisfoffel-symbol formula, but the solution was missing some components. The code involved defining coordinates and the components of the metric, as well as relabeling the Christoffel symbol function to call out specific symbols. The final solution was found using the provided code.
  • #1
JD_PM
1,131
158
TL;DR Summary
I want to compute the Christoffel-symbol for a given metric.
I am using the code provided by Artes here, but I am missing something.

The Chrisfoffel-symbol formula is

$$\Gamma^{\mu}_{\phantom{\mu}\nu\sigma}=\frac{1}{2}g^{\mu\alpha}\left\{\frac{\partial g_{\alpha\nu}}{\partial x^{\sigma}}+\frac{\partial g_{\alpha\sigma}}{\partial x^{\nu}}-\frac{\partial g_{\nu\sigma}}{\partial x^{\alpha}}\right\}\quad$$

The metric is given to be$$
g_{\mu \nu} =
\begin{pmatrix}
1 & 0 & 0 & 0 \\
0 & r^2+b^2 & 0 & 0 \\
0 & 0 & (r^2+b^2)\sin^2(\theta) & 0 \\
0 & 0 & 0 & -1
\end{pmatrix}
$$

The provided solution is:

$$\Gamma^{1}_{22}=-r$$

$$\Gamma^{1}_{33}=-r\sin^2(\theta)$$

$$\Gamma^{2}_{21}=\frac{r}{b^2+r^2}$$

$$\Gamma^{2}_{33}=-\cos(\theta)\sin(\theta)$$

$$\Gamma^{3}_{31}=\frac{r}{b^2+r^2}$$

$$\Gamma^{3}_{32}=\cot(\theta)$$

The code I'm using is

Code:
    xx = {t, x, \[Theta], \[Phi]};

    g  = { {1,0,0,0},
       {0,r^2+b^2,0,0},
       {0,0,(r^2+b^2)Sin[\[Theta]]^2,0},
       {0,0,0,-1}};

    ChristoffelSymbol[g_, xx_] := 
        Block[{n, ig, res}, 
               n = 4; ig = InverseMetric[ g]; 
               res = Table[(1/2)*Sum[ ig[[i,s]]*(-D[ g[[j,k]], xx[[s]]] + 
                                                  D[ g[[j,s]], xx[[k]]] 
                                                + D[ g[[s,k]], xx[[j]]]), 
                                      {s, 1, n}], 
                           {i, 1, n}, {j, 1, n}, {k, 1, n}];
               Simplify[ res]
             ]

But I get

Captura de pantalla (1064).png


What am I missing? Besides, I'd like to learn how could I display the answer (once I know how to actually get it of course).

Any help is appreciated.

Thank you :smile:
 
  • Like
Likes etotheipi
Physics news on Phys.org
  • #2
What is InverseMetric?
 
  • Like
Likes JD_PM
  • #3
Oh I did not define the InverseMetric! Thanks for pointing it out.

I now have

Code:
xx = {t, x, \[Theta], \[Phi]};

g = { {1,0,0,0},
{0,r^2+b^2,0,0},
{0,0,(r^2+b^2)Sin[\[Theta]]^2,0},
{0,0,0,-1}};

InverseMetric=Simplify[Inverse[g]]

ChristoffelSymbol[g_, xx_] :=
Block[{n, ig, res},
n = 4; ig = InverseMetric;
res = Table[(1/2)*Sum[ ig[[i,s]]*(-D[ g[[j,k]], xx[[s]]] +
         D[ g[[j,s]], xx[[k]]]
                  + D[ g[[s,k]], xx[[j]]]),
         {s, 1, n}], {i, 1, n}, {j, 1, n}, {k, 1, n}];
    Simplify[ res]
]
ChristoffelSymbol[g, xx]

I now get

Captura de pantalla (1065).png


So apparently I only get ##\Gamma^3_{32}##
 
  • #4
I found an alternative here

Code:
Clear [coord, metric, inversemetric, affine]

n = 4;
coord = {t, x, y,z};

metric = { {1,0,0,0}, {0,r^2+b^2,0,0}, {0,0,(r^2+b^2)Sin[\[Theta]]^2,0},
  {0,0,0,-1}};

inversemetric = Simplify[Inverse[metric]];

affine :=
  affine = Simplify[
Table[(1/2)*
Sum[inversemetric[[i,
s]]*(D[metric[[s, j]], coord[[k]]] +
D[metric[[s, k]], coord[[j]]] -
D[metric[[j, k]], coord[[s]]]), {s, 1, n}], {i, 1, n}, {j,
      1, n}, {k, 1, n}]];

listaffine :=
  Table[If[UnsameQ[affine[[i, j, k]],
0], {ToString[\[CapitalGamma][i - 1, j - 1, k - 1]],
affine[[i, j, k]]}], {i, 1, n}, {j, 1, n}, {k, 1, j}];
TableForm[Partition[DeleteCases[Flatten[listaffine], Null], 2],
TableSpacing -> {2, 2}]

I am struggling now in how to call out the specific Christoffel symbols correctly; I am trying

Code:
affine[[3,3,2]]

But I get zero instead of ##\cot(\theta)##; the same happens to me with other non-zero terms.
 
  • #5
  • Like
Likes Ishika_96_sparkles and JD_PM
  • #6
OK I understand how to do it now! :smile: (more details)

My issue was in how to call out the function. Let's go step by step:

1) Define the Christoffel symbol function:

Code:
    ChristoffelSymbol[g_, xx_] := 
     Block[{n, ig, res}, n = Length[xx]; ig = Inverse[g];
      res = Table[(1/2)*
         Sum[ig[[i, s]]*(-D[g[[j, k]], xx[[s]]] + D[g[[j, s]], xx[[k]]] + 
             D[g[[s, k]], xx[[j]]]), {s, 1, n}], {i, 1, n}, {j, 1, n}, {k,
          1, n}];
      Simplify[res]]

2) Define the coordinates and the components of the metric wrt the coordinate basis

Code:
    (* The coordinates *)
    xx = {r, \[Theta], \[Phi], t};

    (* The metric *)
    g = {{1, 0, 0, 0}, {0, r^2 + b^2, 0, 0}, {0, 
        0, (r^2 + b^2) Sin[\[Theta]]^2, 0}, {0, 0, 0, -1}};
3) Relabel the Christoffel symbol function so that you can call out specific Christoffel symbols
Code:
    sol = ChristoffelSymbol[g, xx] (* This calls the function! *);

    sol[[1, 2, 2]](*for instance*)
    (* -r *)
 
  • #7
Gen. Relativity... :cool:
got my answer.
 
  • Like
Likes JD_PM

Related to Learning how to compute Christoffel symbols using Mathematica

What is Mathematica and how can it help me compute Christoffel symbols?

Mathematica is a powerful mathematical software program that allows you to perform complex calculations and visualizations. It has built-in functions and tools specifically designed for tensor calculus, making it a useful tool for computing Christoffel symbols.

What are Christoffel symbols and why are they important in tensor calculus?

Christoffel symbols, also known as connection coefficients, are a set of coefficients used to describe the curvature and connections of a manifold in tensor calculus. They are important in understanding the geometry and behavior of objects in curved spaces.

Do I need to have a background in Mathematica or tensor calculus to use this tutorial?

While some familiarity with Mathematica and tensor calculus may be helpful, this tutorial is designed to be accessible to all levels. It provides step-by-step instructions and explanations to guide you through the process of computing Christoffel symbols using Mathematica.

Can I use Mathematica to compute Christoffel symbols for any type of manifold?

Yes, Mathematica can be used to compute Christoffel symbols for any type of manifold, including Euclidean spaces, curved spaces, and non-Euclidean spaces. It has built-in functions that can handle different types of manifolds and coordinate systems.

Are there any limitations or drawbacks to using Mathematica for computing Christoffel symbols?

While Mathematica is a powerful tool, it may have limitations in handling very large or complex calculations. It is important to check for any errors or inconsistencies in your results and to consult other sources to verify your calculations.

Similar threads

  • Special and General Relativity
Replies
9
Views
650
  • Special and General Relativity
Replies
11
Views
1K
  • Advanced Physics Homework Help
Replies
18
Views
2K
  • Special and General Relativity
Replies
19
Views
3K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
485
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
1K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
2K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
2
Views
532
Replies
4
Views
1K
  • Differential Geometry
Replies
9
Views
3K
Back
Top