Is there a good way to compute Christoffel Symbols

Lets say you have a Riemannian Manifold $(M,g)$, and you have some given chart where $g = g_{ij} dx_i dx_j$ and you wish to compute the Christoffel symbols for the Riemannian connection in this chart. To do this involves:

1) Calculating the inverse matrix of $g$, which is not too bad in dimensions 2 and 3, but becomes quite painful in higher dimensions.

2) Using the formula

$\Gamma_{ij}^k = \frac{1}{2} g^{kl}(\partial_i g_{jl} + \partial_j g_{il} - \partial_l g_{ij})$

which if you look closely the index that is summed over on the right is $l$, so there are $n=dim M$ terms on the right that need to be evaluated, and inside each of these you must take a partial derivative of three terms in $g$, so in total on the right-side there are $3n$ terms to be computed. This is just for each value of $k$.

Luckily $\Gamma_{ij}^k$ is symmetric in $ij$, and so you only have to compute about half of the $3n^3$ quantities involved, but it is still a very involved calculation.

Does anyone know a simpler method to go about this? Or an easier way to look at the calculation of this? As $\Gamma_{ij}^k$ is an $n \times n$ symmetric matrix for each fixed $k$, maybe there is a way to write $(\Gamma_{ij}^k)$, the matrix, as a matrix product of some other matrices that would be easier to write down. That way you would not have to work with index notation for doing the calculation, which also slows things down.

-
There are some nice mathematica packages that can compute the Christoffel symbols. Easy computation usually happens by choosing the correct charts to compute the symbols in. This is especially the case with extra symmetries. Then you get extra relations for the symbols. –  Thomas Rot Feb 28 '11 at 22:57
The Christoffel symbols are not the components of a tensor field (did you already prove this?) and so there is not going to be any nice way (in general) to compute them. In practice, the method I find more tractible for computation is $\Gamma_{ij}^k = \left<\nabla_{e_i}e_j,e_k\right>$, where $\{e_i\}$ are an orthonormal frame, which is of course the definition. The expression you give is also important, as it shows how to compute the coefficients of a connection from a given metric tensor. –  Glen Wheeler Mar 1 '11 at 7:32
@Thomas Rot Which mathematica packages are good for the computation of Christoffel symbols? Thanks –  yCalleecharan Mar 15 '12 at 7:08
@yCalleecharan : These work nicely wps.aw.com/aw_hartle_gravity_1/0,6533,512496-,00.html . Even though they are made for General relativity, there are actually no restrictions on the signature of $g$. –  Thomas Rot Mar 15 '12 at 9:52
@Thomas Rot Thanks for the link. 1 vote up. –  yCalleecharan Mar 17 '12 at 10:08

You can read off the Christoffel symbols from the Euler–Lagrange equations for the Lagrangian naturally defined by the metric, $L=\frac12 g_{ij} v^i v^j$. Still messy, but at least there's not much you have to memorize in order to do the computation.

I can't recall a good reference right off the bat, but Google found this, for example: http://count.ucsc.edu/~rmont/classes/121A/polarChristoffelE_Lag.pdf

-

It's worth noting that if the metric is diagonal the calculations become much simpler. Explicitly,

\begin{align} &\Gamma^{\lambda}_{\;\,\mu \nu} = 0 \\ &\Gamma^{\lambda}_{\;\,\mu \mu} = -\frac{1}{2}(g_{\lambda \lambda})^{-1} \partial_{\lambda} g_{\mu \mu} \\ &\Gamma^{\lambda}_{\;\,\mu \lambda} = \partial_{\mu} (ln \sqrt{|g_{\lambda \lambda}|}) \\ &\Gamma^{\lambda}_{\;\,\lambda \lambda} = \partial_{\lambda} (ln \sqrt{|g_{\lambda \lambda}|}),\end{align}

where $\mu \neq \lambda \neq \nu$. These equations can easily be proven using the formula given in the original question.

-