鼠尾草中的分数模整数?

问题描述 投票:1回答:1

在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]
python sage
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.