我想在Python中计算多元多项式的余数,我发现来自sympy的div()应该可以解决问题(我还需要同情Gröbner计算)。但我一直发现的问题是,似乎div()只检查除法的主要术语,因为
q, r = div(x**2 + y, 2*x)
给出r=y
,而
q, r = div(x**2 + y, 2*y)
给出r=x**2+y
。
我想做一些像Ideal Membership这样的事情,因此在G = {g_1,...,g_s}上找到除以某些多项式f的余数,其中我现在不能依赖div()。
虽然使用Sage我没有遇到这个问题(使用(x ^ 2 + y)%y给出x ^ 2),但我对Python更熟悉并且更喜欢通过Python来做到这一点。
有人可以告诉我,如果我做错了吗?或者有人知道更好的功能用于剩余部分吗?
答案 0 :(得分:1)
我发现了一个很好的选择:减少(x ^ 2 + y,[2 * y])得到所需的([1/2],x ^ 2)
答案 1 :(得分:0)
多项式除法的结果取决于单项式的顺序。
在Sympy中,默认顺序为lex
,因此x**2 > y
。这就是为什么你得到:
>> div(x**2 + y, 2*y)
(0, x**2 + y)
但是,您可以像这样更改生成器x和y的顺序:
>> div(x**2 + y, 2*y, gens=(y, x))
(1/2, x**2)