Has anybody used tensors in Mathematica? How to properly work with them? I find Mathematica not very friendly in this field, as I am defining my own functions for lowering & raising indices, multiplication and stuff like that. I was wondering if there is some good package or a secret way to use tensors more properly in Mathematica. For example, I need tensor analysis for general relativity kind of calculations.

  • 2
    $\begingroup$ Have a look at guide/SymbolicTensors in the help. $\endgroup$ Feb 21, 2013 at 13:34
  • 2
    $\begingroup$ Related mathematica.stackexchange.com/questions/8895/…. For Maththematica 9 you might try to look at newer capabiliteis $\endgroup$
    – Artes
    Feb 21, 2013 at 13:41
  • $\begingroup$ @Vladimir, What exactly is it that you find difficult to use? $\endgroup$
    – user21
    Feb 21, 2013 at 18:42
  • $\begingroup$ @b.gatessucks: I am aware there is a package in Mathematica called Tensors, but I do not agree that is able to do any computation in physics. It is more like N-dim matrix operations. This is why extra packages for Mathematica were made, as I was starting, and like some others have already developed in depth. The list of available packages with some description on them would be a great start (like you can see bellow). $\endgroup$
    – Vladimir
    Feb 21, 2013 at 20:37
  • $\begingroup$ I agree, @Artes, there is a related question. However, this one is more general, while first one was for one-time problem. I would suggest you to have a look at some free packages (knowing that you were also working on these functions). $\endgroup$
    – Vladimir
    Feb 21, 2013 at 20:42

2 Answers 2


Mathematica 9 contains some functionality for working with symbolic tensors.

Here's a list of packages in no particular order, that may have some functionality for working with symbolic tensors.

  • TensoriaCalc - intended for basic calculations in general relativity, but not finished (calculates only Christoffel symbols, Riemann and Ricci tensor). Parallel working with many metrics is possible. Symbolic calculations are not supported.

  • FeynCalc

  • grt - intended for basic calculations in general relativity, but full of bugs (only Christoffel symbols fully function). Symbolic calculations are not supported.

  • NCAlgebra, for manipulating non-commuting algebraic expressions and computing non-commutative Gröbner bases. It allows working with symbolic matrices and symbolic block matrices (e.g. symbolic block matrix inversion).

  • xAct - a package designed by researchers for large scale projects in general relativity; subpackages capable of extensive tensor manipulation (xTensor, xCoba) as well as perturbation theory in general relativity to any order (xPert). Other subpackages can also work with tensor spherical harmonics, spinor computations as well as exterior calculus (diferential forms).


  • MathTensor (non-free)

  • Tensorial (non-free)

  • Ricci (last updated Sep 2011)

  • diffgeo (free) - a very simple package for differential geometry. Works only with given basis and metric

  • GREATER2 (free) - a simple package for tensorial calculations. Aimed more at physicists where e.g. the metric can be input as a line element.

  • OGRe (free) - released in 2021 for Mathematica 12.0 and later. Designed to be both powerful and user-friendly. Especially suitable for general relativity. Allows performing arbitrarily complicated tensor operations, and automatically transforms between index configurations and coordinate systems behind the scenes as needed for each operation.

See also the Wikipedia page on Tensor Software.

  • 1
    $\begingroup$ I marked this as community wiki so everyone can edit. If you have used any of these, please edit this post and add a short description. This question could be repurposed to be a list of tensor-related packages, explaining what each one can or cannot do, so people who are looking for this functionality can more easily decide which one to try. Symbolic tensors or matrices are a common question, so this will be useful to have. $\endgroup$
    – Szabolcs
    Feb 21, 2013 at 14:49
  • $\begingroup$ Also feel free to remove packages from the list if you have tried them and found them significantly wanting. A list of the best, with short descriptions of what they're meant for, is much more useful than an exhaustive list. $\endgroup$
    – Szabolcs
    Feb 21, 2013 at 21:08
  • $\begingroup$ Very nice idea! $\endgroup$ Feb 22, 2013 at 2:06
  • 1
    $\begingroup$ library.wolfram.com/infocenter/ID/8848 is another one. $\endgroup$
    – Bill Watts
    Feb 10, 2021 at 21:36
  • $\begingroup$ @BillWatts If you are familiar with it, please add it to the post with a short description. $\endgroup$
    – Szabolcs
    Feb 11, 2021 at 11:17

The link for Tensorial above is dead, you may find something interesting on J. F. Gouyet's page.

I prefer in general not to use packages and make my own simple cooking.

Also there are two functions Subscript and Index with almost same formats but slightly different syntaxes and definitions.

Index was introduced in V10. Using Subscript may be more careful because many people still have old Mathematica versions.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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