我如何处理Sage中R ^ n中的向量的循环置换?

时间:2018-04-05 22:55:08

标签: sage

如果一个n-循环群作用于一个向量,我们有n个向量,我称之为v的排列。

例如,R3中向量(1,2,3)的置换是:

(1,2,3),(3,1,2),(2,3,1)

现在在R ^ n我有一个向量,我需要处理这个向量的排列。在Sage有什么方法可以使用它吗?当n很大时,很难手工输入。

1 个答案:

答案 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]]