使用 Sage 多项式时出现 NameError

NameError when using Sage polynomials

我阅读了 here 如何使用多项式。但是当我尝试这个

R = QQ['t']
poly = (t+1) * (t+2); poly

Sage 给我以下错误:

NameError: name 't' is not defined

我该怎么办?

对了,使用多项式环的时候必须注入变量名。你指向的文件指出

sage: R.<t> = PolynomialRing(QQ)

这样做。或者,你可以做

sage: R=QQ['t']
sage: R.inject_variables()
Defining t
sage: t+1
t + 1

您想知道如何不打印姓名:

sage: R.inject_variables(verbose=False)

玩得开心!

为了补充@kcrisman 的答案,另一种方法是:

sage: R = PolynomialRing(QQ, 't')
sage: t = R.gen()

然后 t 按预期工作:

sage: (t+1) * (t+2)
t^2 + 3*t + 2

请注意,Sage 语法 R.<t> = ....sage 文件中有效,但在 .py 文件中无效,而上述语法在 .py 文件中也有效。

.py 文件中,您首先要按如下方式导入 PolynomialRing

from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing

要找出您需要的进口商品,您可以这样做

sage: import_statements(PolynomialRing)
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing

最后,如果你不需要戒指 R, 你可以直接用

定义t
sage: t = polygen(QQ)

如果您以后需要R,您可以使用

sage: R = t.parent()