在Sage中,我有一些具有有理系数的多项式,我想对这些系数应用同余,例如(1 + 7/2 x, 3)
应该发送到1 + 1/2 x mod 3
。
我尝试了mod_ui(n)
,但这并不好,因为它返回了int
。我在Python中有该函数的代码,但我无法将其“翻译”为Sage脚本。这是Python代码:
def modPoly(c, k):
if k == 0:
print("Error in modPoly(c, k). Integer k must be non-zero")
else:
return [fracModulo.fracMod(x, k) for x in c]
您可以定义这两个功能
def rat_mod_int(a, k): # rational modulo integer
return a.numerator() % (k * a.denominator()) / a.denominator()
def ratpoly_mod_int(p, k): # polynomial modulo integer
return p.parent()([rat_mod_int(a, k) for a in p])
然后以下工作
sage: R.<x> = PolynomialRing(QQ)
sage: p = 7/2*x + 1
sage: ratpoly_mod_int(p, 3)
1/2*x + 1