使用Sage多项式时的NameError

时间:2015-10-20 14:38:53

标签: python sage polynomials

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

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

Sage给了我以下错误:

NameError: name 't' is not defined

我该怎么办?

2 个答案:

答案 0 :(得分:3)

是的,在使用多项式环时,你必须注入变量名。您指出的文件指出

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)

玩得开心!

答案 1 :(得分:0)

为了补充@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()