如果一个n-循环群作用于一个向量,我们有n个向量,我称之为v的排列。
例如,R3中向量(1,2,3)的置换是:(1,2,3),(3,1,2),(2,3,1)
现在在R ^ n我有一个向量,我需要处理这个向量的排列。在Sage有什么方法可以使用它吗?当n很大时,很难手工输入。
答案 0 :(得分:1)
首先定义循环组及其生成器:
sage: C3 = groups.permutation.Cyclic(3)
sage: g = C3.gen()
然后你可以通过对相关列表或元组进行操作,让g
对某个向量进行操作:
sage: v = vector([10.,-20.,35.])
sage: g(list(v))
[-20.0000000000000, 35.0000000000000, 10.0000000000000]
sage: g(tuple(v))
(-20.0000000000000, 35.0000000000000, 10.0000000000000)
您可以通过g
行为的权力获得所有循环排列:
sage: [(g**n)(list(v)) for n in range(3)]
[[10.0000000000000, -20.0000000000000, 35.0000000000000],
[-20.0000000000000, 35.0000000000000, 10.0000000000000],
[35.0000000000000, 10.0000000000000, -20.0000000000000]]