我读了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()