Assume we have the following Tensor objects: FijandSijk,
where the components of F are known, and we would like to solve for the components of S if they satisfy the following equation FliSjlk−FljSilk=0.
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 F=abcdefghijklmnop
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:
Solve[SF==FS,{S[i,j,k]},{i,4},{j,4},{k,4}]
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.
Answer
Perhaps
f = RandomInteger[{-1, 1}, {4, 4}];
Solve[
And @@ Join[
Thread[Equal[Flatten[Table[
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}]]]
Comments
Post a Comment