Assume we have the following Tensor objects: \begin{equation} F_{i}{}^{j}\;and\;S_{ij}{}^{k}, \end{equation} where the components of $F$ are known, and we would like to solve for the components of $S$ if they satisfy the following equation \begin{equation} F^{l}{}_{i}S_{jl}{}^{k}-F^{l}{}_{j}S_{il}{}^{k}=0. \end{equation} $l$ is summed over, all the indices run from 1 to 4, and $S$ is symmetric in the lower indices.

Can you please help in writing a Mathematica code for this.

My attempt:

First, suppose we know all the components of $F$, and they are given by \begin{equation} F= \begin{matrix} a & b & c & d\\ e & f & g & h \\ i & j & k & l \\ m & n & o & p \end{matrix} \end{equation}

Then I defined the components of $S$ by:

S[i_, j_, k_] := S[i, j, k]

The first term of the equation I defined it as:

SF[i_, j_, k_] := SF[i, j, k] = S[1, i, j].F[k, 1] +
                                V[2, i, j].F[k, 2] + 
                                V[3, i, j].F[k, 3] + 
                                V[4, i, j].F[k, 4];

As for the second term in the equation, I think it can be found using Transpose

FS[i, j, k] = Transpose[SF, {i, k}]

Then for example:


is not working. I'm sure there is something wrong in my commands, but I can't figure out what it is. The functions $a$,$b$,$c$,... in the expression of $F$ are some complicated scalar functions of space coordinates.

  • $\begingroup$ Have you tried something? Do you have some approximate code? $\endgroup$ Sep 20 '12 at 12:15
  • $\begingroup$ @belisarius Thanks for your comments, I have a code that gives me $F$ which is an endomorphisms acting on the tangent space of some moduli space. I will update the questions with what I tried to do... $\endgroup$
    – Imagine
    Sep 20 '12 at 13:01


f = RandomInteger[{-1, 1}, {4, 4}]; 
 And @@ Join[
       Sum[f[[l, i]] s[j, l, k] - f[[l, j]] s[i, l, k], {l, 4}], 
   {i, 4}, {j, 4}, {k, 4}], 2], 0]], 
   Flatten@Table[s[i, j, k] == s[j, i, k], {i, 4}, {j, 4}, {k, 4}]]]
  • $\begingroup$ Thanks for your answer, Mathematica is running now your code. Hope it works. I logged in with my google account, does it mean I'm registered or I have sign up differently? (sorry for the silly question). $\endgroup$
    – Imagine
    Sep 20 '12 at 13:54
  • $\begingroup$ @user2348 You're already registered. Just go to your account panel (by clicking on user2348 at the top of this screen) and edit your name into something meaningful! $\endgroup$ Sep 20 '12 at 14:15
  • $\begingroup$ Is it possible to write the code in different way such that it takes less time. I've been running the program since yesterday and still waiting. I think its because my F entries are complicated function of space. Also If, say, we suppress the condition of S being symmetric in the lower indices, would that decrease the time cost? $\endgroup$
    – Imagine
    Sep 21 '12 at 14:57
  • $\begingroup$ @Imagine I would recommend the following: 1) Check if my answer works as you expect with a simple case. 2) Report that here 3) The optimization problem depends on your F entries, so if the above is working you should post another question with details about your F's and tag it as optimization. $\endgroup$ Sep 21 '12 at 15:04
  • $\begingroup$ @Dr. belisarius , thank you for your answer. I have posted a write-up on a general method to solve tensor equations using structured (i.e., symmetrized) tensors, basic link , and I altered your routine to give an example. $\endgroup$
    – Bill N
    Nov 25 '16 at 17:00

A convenient method for solving tensor equations in general, is to use structured (i.e., symmetrized) arrays in order to impose the symmetry conditions on them, without then needing to explicitly give these conditions in the Solve blocks. This becomes especially handy when the number of tensors and their symmetries get large, or complex tensor quantities are formed from symmetric tensors (such as the Riemann tensor formed from the symmetric metric).

I've posted a detailed write-up on this method in the "asked-and-answered" question Conveniently solving tensor equations in which the contained tensors have various symmetries, where I use the above posted question as the example (solving the equation $F^{l}{}_{i}S_{jl}{}^{k}-F^{l}{}_{j}S_{il}{}^{k}=0$ where $S_{ij}{}^{k}$ is symmetric in i and j ).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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