python - Sage 中具有未知数的排列向量

标签 python sage

我正在尝试使用 Sage 做一些工作,但我不明白如何执行以下操作。

我写了一些小代码:

def ElementDr1(r):
    G = SymmetricGroup(r)
    E = G.list()
    O = G.order()
    coeff = ZeroCoeff(O)

    for i in range(0,O):
        if E[i] == G("(1,r)"): 
            coeff [i]=1
        if E[i] == G("(2,3)*(1,r)"):
            coeff [i]=1
        if E[i] == G("(1,3)*(1,r)"):
            coeff [i]=-1
    return coeff

Sage 说排列向量 (1,r) 无效。我确信一定有一种方法可以编写未知数的排列向量,但是我通过查看 Sage 帮助找不到这个方法是什么。

最佳答案

这里有几个问题:

  1. 通过循环分解创建元素的语法为 G("(1,2)(3,4)"),中间没有 *。
  2. 循环必须是不相交的,即任何元素不能出现两次。您有 1 出现两次。
  3. 在字符串中使用 r 而不是替换:Samuel Lelièvre 已经对此发表了评论。

由于 (1,3)(1,r) 不是有效的循环分解,因此您要做的是将 (1,3) 乘以 (1,r)。为此,首先创建这些元素,然后然后将它们相乘(使用 * 运算符)。由于元素是循环,因此您甚至不需要字符串:可以从元组创建元素。

def ElementDr1(r):
    G = SymmetricGroup(r)
    E = G.list()
    O = G.order()
    coeff = [0 for i in range(0,O)]  # self-contained examples are good

    for i in range(0,O):
        if E[i] == G((1,r)):
            coeff[i] = 1
        if E[i] == G((2,3))*G((1,r)):
            coeff[i] = 1
        if E[i] == G((1,3))*G((1,r)):
            coeff[i] = -1
    return coeff

现在它运行并输出,例如,[-1, 0, 0, 1, 0, 1] with r=3。

关于python - Sage 中具有未知数的排列向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31592863/

相关文章:

python - 为 "just one instance"创建一个 Python 类?

python - 如何使用Python在数组的所有第三列中找到精确值?

python - 如何从生成集创建矩阵

python - django 1.10 在解析模板 'is_popup' 中的变量 'admin/login.html' 时出现异常

python - 如何使用 shuffle_batch() 函数避免超出范围错误?

python - 2 个地 block 的交集(鼠尾草)

python - "only length-1 arrays can be converted to Python scalars"在 Sage 中使用 scipy.optimize

python - SageMathCloud : Error: unexpected EOF while parsing

Python:TypeError:Unicode 对象必须在散列之前编码

python - iPython:类似操作的命令