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 Answers
In Version 14.1, VectorSymbol
, MatrixSymbol
, ArraySymbol
, etc. are introduced, see Symbolic Vectors, Matrices and Arrays document page for more info.
Version 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.
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.
Tools of Tensor Calculus (free) - there is a list of publications explaining its functionality but I coudn't find a documentation file for it, so I'm unable to figure out how to work with it.
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$– SzabolcsCommented 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$– SzabolcsCommented Feb 21, 2013 at 21:08
-
-
1$\begingroup$ library.wolfram.com/infocenter/ID/8848 is another one. $\endgroup$ Commented 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$– SzabolcsCommented 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.
guide/SymbolicTensors
in the help. $\endgroup$Maththematica 9
you might try to look at newer capabiliteis $\endgroup$