対称化された配列
対称性は,高階のテンソルの扱いにおいて重要な役割を果たす.物理学や数学で重要な高階のテンソルは,対称慣性テンソルから四階剛性テンソルや曲率テンソル等のように対称性を持っている.その多くは転置対称性を持っているが,かなり複雑なこともある.Wolframシステムは任意の階数あるいは次元のテンソルの置換対称性に対する完全な言語を実装しており,対称性による独立成分だけを保存する特殊な配列を提供する.これにはより複雑なアルゴリズムが要求されるので,通常の速さを犠牲にするが,それでも大きな記憶空間が必要となることがよくある.対称性については「テンソルの対称性」で説明してある.
SymmetrizedArray | 対称の独立要素のみを保存する配列を構築する |
SymmetrizedArrayRules | 対称化された配列の独立成分の規則のリスト |
SymmetrizedReplacePart | 対称化された配列の独立成分を交換する |
対称化された配列では,対称性を含むいくつかの配列をコンパクトに保存することができる.特に反対称の配列では利点が最大になる.最も極端な非ゼロ配列の場合,次元 の 階完全反対称配列には1つの独立成分がある.その疎配列には 個の非ゼロ要素が,その正規形には 個の項目がある.ところが,対称化された配列の操作はより複雑なアルゴリズムを必要とするので,通常操作は遅くなる.
LeviCivitaTensorはデフォルトで疎な表現を返す:
LeviCivitaTensorは対称化された正規の表現を提供する:
StructuredArrayオブジェクトは原子オブジェクトとして扱われる.その情報は関数を使ってアクセスすることができる.
SymmetrizedArrayを使うとより効率的な形式で対称性のある通常の配列を書き換えることができるということが分かっている.SparseArray,SymmetrizedArrayに従っても,規則のリストや対称性指定から同様に効率的な表現が構築できる.
歪対称行列のSymmetrizedArray形式:
対称性が与えられないと,恒等対称性が想定される.結果は同じ規則でSparseArrayを使ったときと同じである:
SymmetrizedArrayの第1引数の規則に一般的なパターンを使うことができる.これらの規則はSymmetrizedIndependentComponentsによって与えられるように独立成分のみの規則であり,SparseArrayで与えられるような配列のすべての位置に対するものではない.特に,これは乱数の項目で対称化された配列を生成するのに便利である.
対称化された配列を構築する別の方法として,関数Symmetrizeを使った別の配列の実際の対称化によるものがある.
SymmetrizedArray表現を使うと高次元でも扱える.これは通常の表現や疎な表現では不可能である: