Skip to main content
added 16 characters in body
Source Link

I'm not sure I'm interpreting correctly the question, but here is what I would do. This is for an arbitrary matrix Lambda$\Lambda$.

First, construct the tensor product of the Lambda$\Lambda$ matrix and the delta$\delta$ matrix:

Lambda = Array[\[CapitalLambda]Array[Λ, {6, 6}];
delta = IdentityMatrix[6];
X = TensorProduct[Lambda, delta];

The array XX has dimensions {6, 6, 6{6, 6, 6, 6}, 6} and if we started with indices Lambda[I, J]Lambda[I, J] and delta[M, N]delta[M, N] then we got X[I, J, M, N]get X[I, J, M, N]. We need to antisymmetrize the pairs IM{I, M} and {J, N}, JN so it is convenient to transpose XX to have those indices together:

Y = Transpose[X, {1, 3, 2, 4}];

Now we have Y[I, M, J, N]Y[I, M, J, N]. Antisymmetrize the pairs:

Z = Symmetrize[Y, {Antisymmetric[{1, 2}], Antisymmetric[{3, 4}]}];

The result is a SymmetrizedArraySymmetrizedArray object (a way of storing the result without repeating independent components, or without lots of zeros). If you want the normal array, use Normal[Z]Normal[Z].

Then construct the list of 15 antisymmetric pairs you are interested in:

comps = SymmetrizedIndependentComponents[{6, 6}, Antisymmetric[{1, 2}]]
(* {{1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}, {2, 3}, {2, 4}, {2, 5}, {2, 6}, {3, 4}, {3, 5}, {3, 6}, {4, 5}, {4, 6}, {5, 6}} *)

Finally extract the {15, 15}{15, 15} matrix corresponding to those pairs:

A = Outer[Extract[Z, Join[##]] &, comps, comps, 1]

The result is too large to show here.

I tried to use your definition of LambdaLambda, but I do not understand it. That definition produces a matrix per pair IJIJ, while you seem to suggest it should be just a number.

Edit after the definition of Lambda has been updated:

Using the new definition of LambdaLambda:

Lambda = SymmetrizedArray[Thread[comps -> -Array[Subscript[x, #] &, 15]], {6, 6}, Antisymmetric[{1, 2}]]

we have the final result for AA:

enter image description hereresult

I'm not sure I'm interpreting correctly the question, but here is what I would do. This is for an arbitrary matrix Lambda.

First, construct the tensor product of the Lambda matrix and the delta matrix:

Lambda = Array[\[CapitalLambda], {6, 6}];
delta = IdentityMatrix[6];
X = TensorProduct[Lambda, delta];

The array X has dimensions {6, 6, 6, 6} and if we started with indices Lambda[I, J] and delta[M, N] then we got X[I, J, M, N]. We need to antisymmetrize the pairs IM, JN so it is convenient to transpose X to have those indices together:

Y = Transpose[X, {1, 3, 2, 4}];

Now we have Y[I, M, J, N]. Antisymmetrize the pairs:

Z = Symmetrize[Y, {Antisymmetric[{1, 2}], Antisymmetric[{3, 4}]}];

The result is a SymmetrizedArray object (a way of storing the result without repeating independent components, or without lots of zeros). If you want the normal array use Normal[Z].

Then construct the list of 15 antisymmetric pairs you are interested in:

comps = SymmetrizedIndependentComponents[{6, 6}, Antisymmetric[{1, 2}]]
(* {{1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}, {2, 3}, {2, 4}, {2, 5}, {2, 6}, {3, 4}, {3, 5}, {3, 6}, {4, 5}, {4, 6}, {5, 6}} *)

Finally extract the {15, 15} matrix corresponding to those pairs:

A = Outer[Extract[Z, Join[##]] &, comps, comps, 1]

The result is too large to show here.

I tried to use your definition of Lambda, but I do not understand it. That definition produces a matrix per pair IJ, while you seem to suggest it should be just a number.

Edit after the definition of Lambda has been updated:

Using the new definition of Lambda:

Lambda = SymmetrizedArray[Thread[comps -> -Array[Subscript[x, #] &, 15]], {6, 6}, Antisymmetric[{1, 2}]]

we have the final result for A:

enter image description here

I'm not sure I'm interpreting correctly the question, but here is what I would do. This is for an arbitrary matrix $\Lambda$.

First, construct the tensor product of the $\Lambda$ matrix and the $\delta$ matrix:

Lambda = Array[Λ, {6, 6}];
delta = IdentityMatrix[6];
X = TensorProduct[Lambda, delta];

The array X has dimensions {6, 6, 6, 6}, and if we started with indices Lambda[I, J] and delta[M, N] then we get X[I, J, M, N]. We need to antisymmetrize the pairs {I, M} and {J, N}, so it is convenient to transpose X to have those indices together:

Y = Transpose[X, {1, 3, 2, 4}];

Now we have Y[I, M, J, N]. Antisymmetrize the pairs:

Z = Symmetrize[Y, {Antisymmetric[{1, 2}], Antisymmetric[{3, 4}]}];

The result is a SymmetrizedArray object (a way of storing the result without repeating independent components, or without lots of zeros). If you want the normal array, use Normal[Z].

Then construct the list of 15 antisymmetric pairs you are interested in:

comps = SymmetrizedIndependentComponents[{6, 6}, Antisymmetric[{1, 2}]]
(* {{1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}, {2, 3}, {2, 4}, {2, 5}, {2, 6}, {3, 4}, {3, 5}, {3, 6}, {4, 5}, {4, 6}, {5, 6}} *)

Finally extract the {15, 15} matrix corresponding to those pairs:

A = Outer[Extract[Z, Join[##]] &, comps, comps, 1]

The result is too large to show here.

I tried to use your definition of Lambda, but I do not understand it. That definition produces a matrix per pair IJ, while you seem to suggest it should be just a number.

Edit after the definition of Lambda has been updated:

Using the new definition of Lambda:

Lambda = SymmetrizedArray[Thread[comps -> -Array[Subscript[x, #] &, 15]], {6, 6}, Antisymmetric[{1, 2}]]

we have the final result for A:

result

added 338 characters in body
Source Link
jose
  • 6.7k
  • 1
  • 16
  • 26

I'm not sure I'm interpreting correctly the question, but here is what I would do. This is for an arbitrary matrix Lambda.

First, construct the tensor product of the Lambda matrix and the delta matrix:

Lambda = Array[\[CapitalLambda], {6, 6}];
delta = IdentityMatrix[6];
X = TensorProduct[Lambda, delta];

The array X has dimensions {6, 6, 6, 6} and if we started with indices Lambda[I, J] and delta[M, N] then we got X[I, J, M, N]. We need to antisymmetrize the pairs IM, JN so it is convenient to transpose X to have those indices together:

Y = Transpose[X, {1, 3, 2, 4}];

Now we have Y[I, M, J, N]. Antisymmetrize the pairs:

Z = Symmetrize[Y, {Antisymmetric[{1, 2}], Antisymmetric[{3, 4}]}];

The result is a SymmetrizedArray object (a way of storing the result without repeating independent components, or without lots of zeros). If you want the normal array use Normal[Z].

Then construct the list of 15 antisymmetric pairs you are interested in:

comps = SymmetrizedIndependentComponents[{6, 6}, Antisymmetric[{1, 2}]]
(* {{1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}, {2, 3}, {2, 4}, {2, 5}, {2, 6}, {3, 4}, {3, 5}, {3, 6}, {4, 5}, {4, 6}, {5, 6}} *)

Finally extract the {15, 15} matrix corresponding to those pairs:

A = Outer[Extract[Z, Join[##]] &, comps, comps, 1]

The result is too large to show here.

I tried to use your definition of Lambda, but I do not understand it. That definition produces a matrix per pair IJ, while you seem to suggest it should be just a number.

Edit after the definition of Lambda has been updated:

Using the new definition of Lambda:

Lambda = SymmetrizedArray[Thread[comps -> -Array[Subscript[x, #] &, 15]], {6, 6}, Antisymmetric[{1, 2}]]

we have the final result for A:

enter image description here

I'm not sure I'm interpreting correctly the question, but here is what I would do. This is for an arbitrary matrix Lambda.

First, construct the tensor product of the Lambda matrix and the delta matrix:

Lambda = Array[\[CapitalLambda], {6, 6}];
delta = IdentityMatrix[6];
X = TensorProduct[Lambda, delta];

The array X has dimensions {6, 6, 6, 6} and if we started with indices Lambda[I, J] and delta[M, N] then we got X[I, J, M, N]. We need to antisymmetrize the pairs IM, JN so it is convenient to transpose X to have those indices together:

Y = Transpose[X, {1, 3, 2, 4}];

Now we have Y[I, M, J, N]. Antisymmetrize the pairs:

Z = Symmetrize[Y, {Antisymmetric[{1, 2}], Antisymmetric[{3, 4}]}];

The result is a SymmetrizedArray object (a way of storing the result without repeating independent components, or without lots of zeros). If you want the normal array use Normal[Z].

Then construct the list of 15 antisymmetric pairs you are interested in:

comps = SymmetrizedIndependentComponents[{6, 6}, Antisymmetric[{1, 2}]]
(* {{1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}, {2, 3}, {2, 4}, {2, 5}, {2, 6}, {3, 4}, {3, 5}, {3, 6}, {4, 5}, {4, 6}, {5, 6}} *)

Finally extract the {15, 15} matrix corresponding to those pairs:

A = Outer[Extract[Z, Join[##]] &, comps, comps, 1]

The result is too large to show here.

I tried to use your definition of Lambda, but I do not understand it. That definition produces a matrix per pair IJ, while you seem to suggest it should be just a number.

I'm not sure I'm interpreting correctly the question, but here is what I would do. This is for an arbitrary matrix Lambda.

First, construct the tensor product of the Lambda matrix and the delta matrix:

Lambda = Array[\[CapitalLambda], {6, 6}];
delta = IdentityMatrix[6];
X = TensorProduct[Lambda, delta];

The array X has dimensions {6, 6, 6, 6} and if we started with indices Lambda[I, J] and delta[M, N] then we got X[I, J, M, N]. We need to antisymmetrize the pairs IM, JN so it is convenient to transpose X to have those indices together:

Y = Transpose[X, {1, 3, 2, 4}];

Now we have Y[I, M, J, N]. Antisymmetrize the pairs:

Z = Symmetrize[Y, {Antisymmetric[{1, 2}], Antisymmetric[{3, 4}]}];

The result is a SymmetrizedArray object (a way of storing the result without repeating independent components, or without lots of zeros). If you want the normal array use Normal[Z].

Then construct the list of 15 antisymmetric pairs you are interested in:

comps = SymmetrizedIndependentComponents[{6, 6}, Antisymmetric[{1, 2}]]
(* {{1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}, {2, 3}, {2, 4}, {2, 5}, {2, 6}, {3, 4}, {3, 5}, {3, 6}, {4, 5}, {4, 6}, {5, 6}} *)

Finally extract the {15, 15} matrix corresponding to those pairs:

A = Outer[Extract[Z, Join[##]] &, comps, comps, 1]

The result is too large to show here.

I tried to use your definition of Lambda, but I do not understand it. That definition produces a matrix per pair IJ, while you seem to suggest it should be just a number.

Edit after the definition of Lambda has been updated:

Using the new definition of Lambda:

Lambda = SymmetrizedArray[Thread[comps -> -Array[Subscript[x, #] &, 15]], {6, 6}, Antisymmetric[{1, 2}]]

we have the final result for A:

enter image description here

Source Link
jose
  • 6.7k
  • 1
  • 16
  • 26

I'm not sure I'm interpreting correctly the question, but here is what I would do. This is for an arbitrary matrix Lambda.

First, construct the tensor product of the Lambda matrix and the delta matrix:

Lambda = Array[\[CapitalLambda], {6, 6}];
delta = IdentityMatrix[6];
X = TensorProduct[Lambda, delta];

The array X has dimensions {6, 6, 6, 6} and if we started with indices Lambda[I, J] and delta[M, N] then we got X[I, J, M, N]. We need to antisymmetrize the pairs IM, JN so it is convenient to transpose X to have those indices together:

Y = Transpose[X, {1, 3, 2, 4}];

Now we have Y[I, M, J, N]. Antisymmetrize the pairs:

Z = Symmetrize[Y, {Antisymmetric[{1, 2}], Antisymmetric[{3, 4}]}];

The result is a SymmetrizedArray object (a way of storing the result without repeating independent components, or without lots of zeros). If you want the normal array use Normal[Z].

Then construct the list of 15 antisymmetric pairs you are interested in:

comps = SymmetrizedIndependentComponents[{6, 6}, Antisymmetric[{1, 2}]]
(* {{1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}, {2, 3}, {2, 4}, {2, 5}, {2, 6}, {3, 4}, {3, 5}, {3, 6}, {4, 5}, {4, 6}, {5, 6}} *)

Finally extract the {15, 15} matrix corresponding to those pairs:

A = Outer[Extract[Z, Join[##]] &, comps, comps, 1]

The result is too large to show here.

I tried to use your definition of Lambda, but I do not understand it. That definition produces a matrix per pair IJ, while you seem to suggest it should be just a number.