张量对称性
张量对称性
出现在应用中的二阶或者更高阶的张量通常在位置交换下具有对称性. 例如惯性张量,应力-能量张量或者 Ricci 曲率张量是阶数为 2 的完全对称张量;电磁张量是阶数为 2 的反对称张量;而黎曼曲率张量和弹性模量是阶数为 4 的具有非平凡对称性的张量. Wolfram 系统有一种通用语言来描述任意张量位置的排列下的任意对称性,并且实现了高效的算法,用于对这种张量给出这样的对称性下的唯一的规范性,这是符号张量计算中的重要的一步.
| {permutation,phase} | 对称性生成器的常见形式 |
| TensorTranspose[tensor,gen] | 对称性生成器在张量上的行为 |
TensorTranspose[T, {{3, 4, 1, 2}, -1}]array = {{{{0, a}, {-a, b}}, {{a, c}, {-b, d}}}, {{{-a, -b}, {-c, -d}}, {{b, d}, {-d, 0}}}};TensorTranspose[array, {Cycles[{{1, 2, 3, 4}}], -1}]% === arrayTensorTranspose[array, {Cycles[{{1, 2}, {3, 4}}], -1}]% === array生成器的连续应用等价于生成器的乘积,其中相位和置换分开相乘. 事实上,如果一个张量在两个相控置换下是不变的,那么它在它们的乘积下也是不变的. 因为,相控置换(其中张量是不变的)的集合形成一个群,张量的位子对称性群.
gen1 = {{2, 3, 4, 1}, -1}
gen2 = {{2, 3, 4, 1}{2, 3, 4, 1}, (-1)(-1)}
gen3 = {PermutationPower[{2, 3, 4, 1}, 3], (-1) ^ 3}
gen4 = {PermutationPower[{2, 3, 4, 1}, 4], (-1) ^ 4}TensorTranspose[array, gen1] === arrayTensorTranspose[array, gen2] === arrayTensorTranspose[array, gen3] === array函数 TensorSymmetry 返回张量的置换对称性的完整描述. 它可以以已命名对称性或者某些对称性生成器的列表(从中,可以通过置换乘积和幂构建剩余生成器)的形式给出.
| TensorSymmetry[tensor] | 找到 tensor 的转置对称 |
| Symmetric[{s1,…,sn}] | 在任意两个位置 si 交换下张量保持符号 |
| Antisymmetric[{s1,…,sn}] | 在任意两个位置 si 交换下张量改变符号 |
| ZeroSymmetric[{s1,...,sn}] | 任意零张量的对称性 |
| {symgen1,…,symgenm} | 张量对称性的生成器列表 |
| {sym1,…,symk} | 对称性指定的直接乘积 |
TensorSymmetry[{{a, b}, {b, c}}]TensorSymmetry[{{{0, 0, 0}, {0, 0, 7}, {0, -7, 0}}, {{0, 0, -7}, {0, 0, 0}, {7, 0, 0}}, {{0, 7, 0}, {-7, 0, 0}, {0, 0, 0}}}]TensorSymmetry[{{a, b}, {c, d}}]TensorSymmetry[{{0, 0}, {0, 0}}]在普通情况下,TensorSymmetry 以生成器列表的形式返回张量对称性. 置换以循环形式给出:
array = {{{{0, a}, {-a, b}}, {{a, c}, {-b, d}}}, {{{-a, -b}, {-c, -d}}, {{b, d}, {-d, 0}}}};TensorSymmetry[array]TensorSymmetry[{{0, a}, {-a, 0}}{{0, b}, {-b, 0}}]SymmetrizedArray[{{1, 2}, {2, 3}}]//InputForm可能通过对其进行对称化处理,增加数组的对称性,通过使用函数 Symmetrize. 结果以类型为SymmetrizedArray 的结构化数组给出. 若要获取更多关于结构类型的信息,请查看 "对称数组".
| Symmetrize[tensor,sym] | 将 tensor 按对称性 sym 进行对称化处理 |
| SymmetrizedArray[rules,dims,sym] | 给出独立分量构建具有对称性的数组 |
| SymmetrizedArray[StructuredData[dims,{rules,sym}]] | 具有对称性的数组的结构化数组表示法 |
Array[Subscript[a, ##]&, {3, 3, 3}]投射到反对称部分,结果以类型为 SymmetrizedArray 的结构化数组的形式给出,它只存储独立分量:
proj = Symmetrize[%, Antisymmetric[{1, 2, 3}]]SymmetrizedArrayRules[proj]Normal[proj]Symmetrize[proj, Antisymmetric[{1, 2, 3}]] === projSymmetrize[proj, Symmetric[{1, 2}]]//Normal//Simplify非独立和独立分量
| SymmetrizedIndependentComponents[dims,sym] | 具有给定维度和对称性的数组的独立分量 |
| SymmetrizedDependentComponents[comp,sym] | 在对称性下与给定分量相关联的非独立分量 |
array = {{{{0, a}, {-a, b}}, {{a, c}, {-b, d}}}, {{{-a, -b}, {-c, -d}}, {{b, d}, {-d, 0}}}};dims = Dimensions[array]sym = TensorSymmetry[array]indeps = SymmetrizedIndependentComponents[dims, sym]Extract[array, indeps]Rsym = {{{2, 1, 3, 4}, -1}, {{3, 4, 1, 2}, 1}};SymmetrizedIndependentComponents[{3, 3, 3, 3}, Rsym]Length[SymmetrizedIndependentComponents[{#, #, #, #}, Rsym]]& /@ Range[20]% === Table[(d^4 - 2d^3 + 3d^2 - 2d) / 8, {d, 20}]SeedRandom[0];
array = Normal@Symmetrize[RandomInteger[{-10, 10}, {3, 3, 3}], Symmetric[{1, 2, 3}]]indeps = SymmetrizedIndependentComponents[{3, 3, 3}, Symmetric[{1, 2, 3}]](orbits = SymmetrizedDependentComponents[#, Symmetric[{1, 2, 3}]]& /@ indeps)//ColumnExtract[array, #]& /@ orbits//Column我们将使用函数 SymmetrizedIndependentComponents 来给出对称性指定的更多示例.
SymmetrizedIndependentComponents[{3, 3, 3, 3}, {Cycles[{{1, 2, 3, 4}}], I}]SymmetrizedIndependentComponents[{3, 3, 3, 3}, {{Cycles[{{1, 2}}], 1}, {Cycles[{{1, 2, 3, 4}}], 1}}]SymmetrizedIndependentComponents[{3, 3, 3, 3}, {Antisymmetric[{1, 2}], Symmetric[{3, 4}]}]SymmetrizedIndependentComponents[{3, 3, 3, 3}, {Antisymmetric[{1, 2}], {{1, 2, 4, 3}, 1}}]对于单位根 ϕ 的相控置换 {perm,ϕ},通常您将有 ϕn1,其中 n 是 perm 的置换阶数,由 PermutationOrder[perm] 给出. 否则,生成器只能是零张量的对称性,并且在这种情况下,生成器被称为是不相容的或者非自洽的. 张量对称性也可能只与零张量兼容,即使它使用自洽生成器表示. 换句话说,自洽生成器的合成给出一个非自洽生成器.
SymmetrizedIndependentComponents[{3, 3, 3}, {{2, 3, 1}, -1}]SymmetrizedIndependentComponents[{3, 3, 3}, {{Cycles[{{1, 2}}], -1}, {Cycles[{{2, 3}}], 1}}]SymmetrizedIndependentComponents[{3, 3, 3}, ZeroSymmetric[{1, 2, 3}]]相关指南
-
▪
- 符号张量