我读了here如何使用多项式。但是当我尝试这个时
R = QQ['t']
poly = (t+1) * (t+2); poly
Sage给了我以下错误:
NameError: name 't' is not defined
我该怎么办?
答案 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()