在Sage中,我有一些具有有理系数的多项式,我想对这些系数应用同余,例如(1 + 7/2 x, 3)
应该发送到1 + 1/2 x mod 3
。
我尝试了mod_ui(n)
,但它没有用,因为它会返回int
。我在Python中有这个函数的代码,但我无法翻译它#34;进入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]
答案 0 :(得分:1)
您可以定义这两个功能
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