Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I need to compute the linearised Einstein Equations around a fixed metric $g_{\mu \nu}$ which is not the flat metric.

Someone knows any Mathematica package or a review that can help me?

share|improve this question
I recommend this one Efficient tensor computer algebra for Mathematica. Here is a related question Differential geometry add-ons for Mathematica. You could start with this answer How to calculate scalar curvature Ricci tensor and Christoffel symbols in Mathematica? and then exploit new tensor capabilities in Mathematica 9. – Artes Nov 8 '13 at 10:28
@Artes You could make that into an answer (reduce unanswered count). There's not much more to say here. – Szabolcs Jan 9 '14 at 20:03

As @Artes mentions in his comment, this can be done with xAct, in particular with its xPert package. After installing it, we may load it with

<< xAct`xPert`

We first need to set up some variables:

(* Define a 4-dimensional manifold. *)
DefManifold[M, 4, IndexRange[a, l]]

(* Define a (Lorentzian) metric and its associated curvature tensors. *)
DefMetric[-1, metric[-a, -b], CD, PrintAs -> "g"]

(* Define metric perturbations, with H being the fluctuation of the metric. *)
DefMetricPerturbation[metric, H, ϵ]

The linearized Einstein tensor can then be computed by perturbing the non-linear Einstein tensor, and subsequently expanding the perturbation:

linearEinstein = ExpandPerturbation @ Perturbation[ EinsteinCD[-a, -b] ]

$\tfrac{1}{2} (- \nabla_{a}\nabla_{b}H^{1c}{}_{c} - \nabla_{a}\nabla_{c}H^{1c}{}_{b} + \nabla_{a}\nabla^{c}H^{1}{}_{bc}) + \tfrac{1}{2} (\nabla_{c}\nabla_{a}H^{1c}{}_{b} + \nabla_{c}\nabla_{b}H^{1c}{}_{a} - \nabla_{c}\nabla^{c}H^{1}{}_{ba})$ $ + \tfrac{1}{2} (- H^{1}{}_{ab} R - g_{ab} (- H^{1cd} R_{cd} + g^{cd} (\tfrac{1}{2} (- \nabla_{c}\nabla_{d}H^{1e}{}_{e} - \nabla_{c}\nabla_{e}H^{1e}{}_{d} + \nabla_{c}\nabla^{e}H^{1}{}_{de})$ $ + \tfrac{1}{2} (\nabla_{e}\nabla_{c}H^{1e}{}_{d} + \nabla_{e}\nabla_{d}H^{1e}{}_{c} - \nabla_{e}\nabla^{e}H^{1}{}_{dc}))))$

We can clean this up a bit as follows:

linearEinstein // ContractMetric // ToCanonical

$\tfrac{1}{2} H^{1cd} g_{ab} R_{cd} - \tfrac{1}{2} H^{1}{}_{ab} R - \tfrac{1}{2} \nabla_{b}\nabla_{a}H^{1c}{}_{c} + \tfrac{1}{2} \nabla_{c}\nabla_{a}H^{1}{}_{b}{}^{c} + \tfrac{1}{2} \nabla_{c}\nabla_{b}H^{1}{}_{a}{}^{c} - \tfrac{1}{2} \nabla_{c}\nabla^{c}H^{1}{}_{ab} - \tfrac{1}{2} g_{ab} \nabla_{d}\nabla_{c}H^{1cd} + \tfrac{1}{2} g_{ab} \nabla_{d}\nabla^{d}H^{1c}{}_{c}$

If you know the values of the background curvature tensors, you could plug them in, or alternatively, compute them from the background metric with the xCoba package.

share|improve this answer
+1. Maybe you could incorporate you answer also here? The only difference is to put g = {-1,1,1,1}, right? – Kuba Feb 17 '15 at 15:38

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.