Symmetrized Arrays

Symmetry plays a key role in the treatment of high-rank tensors. Most high-rank tensors of importance in physics and mathematics have symmetry, from the symmetric inertia tensors to the rank-4 stiffness and curvature tensors. Many of them have transposition symmetries, in some cases rather complicated. The Wolfram System implements a complete language for permutation symmetries of tensors of any rank or dimensions, and provides a specialized type of array that stores only the independent components with respect to symmetry. This frequently results in a substantial gain in storage space, though usually at the expense of slower manipulations, because more complex algorithms are required. See "Tensor Symmetries" for a description of the language of symmetries.

Representation of Arrays with Symmetry

SymmetrizedArrayconstruct an array storing only symmetry independent components
SymmetrizedArrayRuleslist of rules of independent components of a symmetrized array
SymmetrizedReplacePartreplace independent components in a symmetrized array

Symmetrized arrays.

This is an array with symmetry.
In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=
That means that the array stays invariant under all permutations of its slots.
In[3]:=
Click for copyable input
Out[3]=
It can be stored a simpler way, which better reflects the fact that some elements are repeated several times.
In[4]:=
Click for copyable input
Out[4]=
The new representation contains the dimensions, the list of nonzero independent components, and the symmetry.
In[5]:=
Click for copyable input
Out[5]//InputForm=
Its normal form coincides with the original array.
In[6]:=
Click for copyable input
Out[6]=
These are rules for the independent components of the array. The default rule at the end represents the fact that independent components not given here are taken to have value 0.
In[7]:=
Click for copyable input
Out[7]=

Symmetrized arrays offer a compact way to store some arrays with much symmetry. In particular, antisymmetry maximizes this gain. In the most extreme nonzero case, a fully antisymmetric rank- array in dimension has one independent component. Its sparse representation contains nonzero elements, and its normal form has entries. On the other hand, manipulation of symmetrized arrays is usually slower because it requires more complex algorithms.

LeviCivitaTensor offers a sparse representation by default.
In[8]:=
Click for copyable input
Out[8]=
LeviCivitaTensor offers a symmetrized and normal represention.
In[9]:=
Click for copyable input
Out[9]=
In[10]:=
Click for copyable input
Compare sizes of the different representations.
In[11]:=
Click for copyable input
Out[11]=
In[12]:=
Click for copyable input
Out[12]=
In[13]:=
Click for copyable input
Out[13]=
There are other highly symmetric arrays in the Wolfram System.
In[14]:=
Click for copyable input
In[15]:=
Click for copyable input
Out[15]=
In[16]:=
Click for copyable input
Out[16]=

StructuredArray objects, in particular symmetrized arrays, are treated as atomic objects. Their information can be accessed using functions.

A symmetrized array is atomic.
In[17]:=
Click for copyable input
Out[17]=
The information about the array can be obtained as follows.
In[18]:=
Click for copyable input
Out[18]=
In[19]:=
Click for copyable input
Out[19]=
In[20]:=
Click for copyable input
Out[20]=
Extract components of the array, irrespectively of whether they are independent or not.
In[21]:=
Click for copyable input
Out[21]=
In[22]:=
Click for copyable input
Out[22]=
Extract subarrays, keeping their symmetry if possible.
In[23]:=
Click for copyable input
Out[23]=
In[24]:=
Click for copyable input
Out[24]=
Individual elements can be changed. Note that the given rule is transformed into its corresponding independent component rule.
In[25]:=
Click for copyable input
Out[25]=
In[26]:=
Click for copyable input
Out[26]=

Construction of Symmetrized Arrays

It has been shown that SymmetrizedArray can be used to rewrite a normal array with symmetry in a more efficient form. Following SparseArray, SymmetrizedArray can also construct the same efficient representation from a list of rules and a symmetry specification.

SymmetrizedArray form of an antisymmetric matrix.
In[27]:=
Click for copyable input
Out[27]=
These are its independent components.
In[28]:=
Click for copyable input
Out[28]=
Reconstruct the array from these rules and the symmetry.
In[29]:=
Click for copyable input
Out[29]=
In[30]:=
Click for copyable input
Out[30]=
If the symmetry is not provided, then the identity symmetry is assumed. The result is effectively equivalent to using SparseArray with the same rules.
In[31]:=
Click for copyable input
Out[31]=
Rules that are incompatible with the symmetry are discarded.
In[32]:=
Click for copyable input
Out[32]=
In[33]:=
Click for copyable input
Out[33]=

General patterns in rules can be used in the first argument of SymmetrizedArray. These rules are meant to be rules for the independent components only, as given by SymmetrizedIndependentComponents, and not for all positions of the array, as SparseArray would do. In particular, this is useful to generate symmetrized arrays with random entries.

A random rank-3 antisymmetric array in dimension 4.
In[34]:=
Click for copyable input
Out[35]=
In[36]:=
Click for copyable input
Out[36]=
Use indexed expression as components of the array.
In[37]:=
Click for copyable input
Out[37]=
In[38]:=
Click for copyable input
Out[38]=

An alternative way to construct symmetrized arrays is by actual symmetrization of other arrays, using the function Symmetrize.

Symmetrize a general matrix.
In[39]:=
Click for copyable input
Out[39]=
In[40]:=
Click for copyable input
Out[40]=
Symmetrized with other symmetries.
In[41]:=
Click for copyable input
Out[41]=
In[42]:=
Click for copyable input
Out[42]=

Antisymmetric Arrays

The antisymmetric tensors play a fundamental role in exterior algebra. The Wolfram System provides the basic operations of the wedge product of antisymmetric tensors and Hodge duality.

Take two antisymmetric arrays in dimension 5.
In[43]:=
Click for copyable input
Their wedge product is the antisymmetrized tensor product, except for a multiplicative factor given by the multinomial of the ranks.
In[46]:=
Click for copyable input
Out[46]=
In[47]:=
Click for copyable input
Out[47]=
When the total rank exceeds the dimension, the result vanishes.
In[48]:=
Click for copyable input
Out[48]=
The SymmetrizedArray representation allows working with high dimensions; that would not be possible otherwise with normal or sparse representations.
In[49]:=
Click for copyable input
In[52]:=
Click for copyable input
Out[52]=
The result is more conveniently represented giving its Hodge dual.
In[53]:=
Click for copyable input
Out[53]=
In[54]:=
Click for copyable input
Out[54]=