用迭代器索引变量
Indexing variables with iterators
我想用列表 X 中给出的许多生成器生成一个 FreeAlgebra。
X=[var('X_%d%d' %(i,j)) for i in range(1,10) for j in range(i+1,10)]
F = FreeAlgebra(QQ, X)
F.inject_variables()
我如何使用迭代器索引变量,例如。比如在 F
中写一个关系字典
X_ij * X_jk : X_jk * X_ij + X_ik, for i in range(1,10) for j in range(i+1,10) for k in range(j+1,10) ?
那我需要
A = F.g_algebra(D)
如果我分别写每个关系,它会起作用,X_12 * X_23 : X_23 * X_12 + X_13,但我希望它适用于任意数量的变量。
我试过
X[i]*X[j] : X[j]*X[i] + X[some formula],
但似乎列表 X 并不知道其元素来自代数 F(也不是 A)。
这可能是一个非常基本的问题 - 我是 Sage 的新手。
感谢您的帮助。
列表X
仍然是一个符号变量列表(具有注入的副作用,然后您可以通过注入自由代数变量来覆盖它)。这是一个副作用较少的,但还是一样的。
X = ['X_%d%d' %(i,j) for i in range(1,10) for j in range(i+1,10)]
F = FreeAlgebra(QQ, X)
F.inject_variables()
但是如果你随后强迫他们每个人都F
你就没事了 - see this example:
X = ['X_%d%d' %(i,j) for i in range(1,10) for j in range(i+1,10)]
F = FreeAlgebra(QQ, X)
F.inject_variables()
print type(X_12)
[F(x)*X_12 for x in X]
这会给你你想要的。请注意 X_12
确实是 F
的元素,但 x in X
不是。
我想用列表 X 中给出的许多生成器生成一个 FreeAlgebra。
X=[var('X_%d%d' %(i,j)) for i in range(1,10) for j in range(i+1,10)]
F = FreeAlgebra(QQ, X)
F.inject_variables()
我如何使用迭代器索引变量,例如。比如在 F
中写一个关系字典X_ij * X_jk : X_jk * X_ij + X_ik, for i in range(1,10) for j in range(i+1,10) for k in range(j+1,10) ?
那我需要
A = F.g_algebra(D)
如果我分别写每个关系,它会起作用,X_12 * X_23 : X_23 * X_12 + X_13,但我希望它适用于任意数量的变量。
我试过
X[i]*X[j] : X[j]*X[i] + X[some formula],
但似乎列表 X 并不知道其元素来自代数 F(也不是 A)。
这可能是一个非常基本的问题 - 我是 Sage 的新手。 感谢您的帮助。
列表X
仍然是一个符号变量列表(具有注入的副作用,然后您可以通过注入自由代数变量来覆盖它)。这是一个副作用较少的,但还是一样的。
X = ['X_%d%d' %(i,j) for i in range(1,10) for j in range(i+1,10)]
F = FreeAlgebra(QQ, X)
F.inject_variables()
但是如果你随后强迫他们每个人都F
你就没事了 - see this example:
X = ['X_%d%d' %(i,j) for i in range(1,10) for j in range(i+1,10)]
F = FreeAlgebra(QQ, X)
F.inject_variables()
print type(X_12)
[F(x)*X_12 for x in X]
这会给你你想要的。请注意 X_12
确实是 F
的元素,但 x in X
不是。