如何在整数的 PolynomialRing 上使用方法 lagrange_polynomial?

How do I use method lagrange_polynomial over a PolynomialRing of Integers?

R.<x> = PolynomialRing(RR)
points = [(1,2), (2,2), (3,6)]
R.lagrange_polynomial(points)
2.00000000000000*x^2 - 6.00000000000000*x + 6.00000000000000

以上工作正常,但由于所有系数都是整数,我更愿意这样做而不是整数。

但是当我尝试使用

R.<x> = PolynomialRing(ZZ)
R.lagrange_polynomial(points)

我收到错误

AttributeError: 'PolynomialRing_integral_domain_with_category' object has no attribute 'lagrange_polynomial'

我知道我可以使用 QQ 而不是 RR 并将系数打印为整数,但我想知道为什么不允许使用 ZZ?

ZZ^2中三个点的拉格朗日多项式不 总是在 ZZ 中有系数,所以有 它作为 QQ['x'] 的方法而不是 ZZ['x'].

的方法
sage: R.<x> = PolynomialRing(QQ)
sage: points = [(0, 1), (1, 0), (2, 2)]
sage: R.lagrange_polynomial(points)
3/2*x^2 - 5/2*x + 1

因为 points = [(1, 2), (2, 2), (3, 6)] 拉格朗日 多项式的系数最终是整数,可以这样做:

sage: R.<x> = PolynomialRing(ZZ)
sage: points = [(1, 2), (2, 2), (3, 6)]

sage: q = R.change_ring(QQ).lagrange_polynomial(points)
sage: q
2*x^2 - 6*x + 6
sage: parent(q)
Univariate Polynomial Ring in x over Rational Field

sage: p = R(q)
sage: p
2*x^2 - 6*x + 6
sage: parent(p)
Univariate Polynomial Ring in x over Integer Ring