使用Sage多项式时的NameError

问题描述 投票:3回答:2

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

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

Sage给了我以下错误:

NameError: name 't' is not defined

我能做些什么呢?

python sage polynomials
2个回答
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)

玩得开心!


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()
© www.soinside.com 2019 - 2024. All rights reserved.