命名组#

sympy.combinatorics.named_groups.SymmetricGroup(n)[源代码]#

在上生成对称组 n 元素作为置换群。

解释

发电机被拿走了 n -循环 (0 1 2 ... n-1) 以及换位 (0 1) (在循环符号中)。(参见 [1] ). 组生成后,将设置其一些基本属性。

实例

>>> from sympy.combinatorics.named_groups import SymmetricGroup
>>> G = SymmetricGroup(4)
>>> G.is_group
True
>>> G.order()
24
>>> list(G.generate_schreier_sims(af=True))
[[0, 1, 2, 3], [1, 2, 3, 0], [2, 3, 0, 1], [3, 1, 2, 0], [0, 2, 3, 1],
[1, 3, 0, 2], [2, 0, 1, 3], [3, 2, 0, 1], [0, 3, 1, 2], [1, 0, 2, 3],
[2, 1, 3, 0], [3, 0, 1, 2], [0, 1, 3, 2], [1, 2, 0, 3], [2, 3, 1, 0],
[3, 1, 0, 2], [0, 2, 1, 3], [1, 3, 2, 0], [2, 0, 3, 1], [3, 2, 1, 0],
[0, 3, 2, 1], [1, 0, 3, 2], [2, 1, 0, 3], [3, 0, 2, 1]]

工具书类

[R57]

https://en.wikipedia.org/wiki/Symmetric_组#生成器_和_关系

sympy.combinatorics.named_groups.CyclicGroup(n)[源代码]#

生成顺序的循环组 n 作为一个置换群。

解释

发电机是 n -循环 (0 1 2 ... n-1) (在循环符号中)。组生成后,将设置其一些基本属性。

实例

>>> from sympy.combinatorics.named_groups import CyclicGroup
>>> G = CyclicGroup(6)
>>> G.is_group
True
>>> G.order()
6
>>> list(G.generate_schreier_sims(af=True))
[[0, 1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 0], [2, 3, 4, 5, 0, 1],
[3, 4, 5, 0, 1, 2], [4, 5, 0, 1, 2, 3], [5, 0, 1, 2, 3, 4]]
sympy.combinatorics.named_groups.DihedralGroup(n)[源代码]#

生成二面体群 \(D_n\) 作为一个置换群。

解释

二面体群 \(D_n\) 是正则的对称群 n-gon. The generators taken are the n-cycle a = (0 1 2 ... n-1) (a rotation of the n-gon) and b = (0 n-1)(1 n-2)... (反映了 n -循环旋转。很容易看出这些满足 a**n = b**2 = 1bab = ~a 所以它们确实产生了 \(D_n\) (见 [1] ). 组生成后,将设置其一些基本属性。

实例

>>> from sympy.combinatorics.named_groups import DihedralGroup
>>> G = DihedralGroup(5)
>>> G.is_group
True
>>> a = list(G.generate_dimino())
>>> [perm.cyclic_form for perm in a]
[[], [[0, 1, 2, 3, 4]], [[0, 2, 4, 1, 3]],
[[0, 3, 1, 4, 2]], [[0, 4, 3, 2, 1]], [[0, 4], [1, 3]],
[[1, 4], [2, 3]], [[0, 1], [2, 4]], [[0, 2], [3, 4]],
[[0, 3], [1, 2]]]

工具书类

sympy.combinatorics.named_groups.AlternatingGroup(n)[源代码]#

在上生成交替组 n 元素作为置换群。

解释

为了 n > 2 ,所用的发电机是 (0 1 2), (0 1 2 ... n-1) 对于 n 奇数和 (0 1 2), (1 2 ... n-1) 对于 n 偶数(参见 [1] ,第31页,附录6.9.)。组生成后,将设置其一些基本属性。案件 n = 1, 2 单独处理。

实例

>>> from sympy.combinatorics.named_groups import AlternatingGroup
>>> G = AlternatingGroup(4)
>>> G.is_group
True
>>> a = list(G.generate_dimino())
>>> len(a)
12
>>> all(perm.is_even for perm in a)
True

工具书类

[R59]

阿姆斯特朗M.“群与对称”

sympy.combinatorics.named_groups.AbelianGroup(*cyclic_orders)[源代码]#

返回具有给定顺序的循环群的直积。

解释

根据有限交换群的结构定理( [1] )每个有限交换群都可以写成有限多个循环群的直积。

实例

>>> from sympy.combinatorics.named_groups import AbelianGroup
>>> AbelianGroup(3, 4)
PermutationGroup([
        (6)(0 1 2),
        (3 4 5 6)])
>>> _.is_group
True

参见

DirectProduct

工具书类