Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 余数序列_Math_Sympy_Polynomial Math_Polynomials - Fatal编程技术网

Math 余数序列

Math 余数序列,math,sympy,polynomial-math,polynomials,Math,Sympy,Polynomial Math,Polynomials,我想计算GCD使用的两个多项式的余数序列。如果我理解维基百科的文章,计算它的一种方法是使用欧几里得算法: gcd(a, b) := if b = 0 then a else gcd(b, rem(a, b)) 这意味着我将收集rem()零件。然而,如果系数是整数,中间分数增长非常快,因此存在所谓的“伪余数序列”,它试图将系数保持在小整数中 我的问题是,如果我理解正确(我理解了吗?),上面两个序列只在常数因子上不同,但是当我尝试运行下面的示例时,我得到了不同的结果,为什么?第一个余数序列不同于-

我想计算GCD使用的两个多项式的余数序列。如果我理解维基百科的文章,计算它的一种方法是使用欧几里得算法:

gcd(a, b) := if b = 0 then a else gcd(b, rem(a, b))
这意味着我将收集
rem()
零件。然而,如果系数是整数,中间分数增长非常快,因此存在所谓的“伪余数序列”,它试图将系数保持在小整数中

我的问题是,如果我理解正确(我理解了吗?),上面两个序列只在常数因子上不同,但是当我尝试运行下面的示例时,我得到了不同的结果,为什么?第一个余数序列不同于
-2
,好吧,但是为什么第二个序列如此不同呢?我假设
subresultants()
工作正常,但是为什么
g%(f%g)
不工作呢

f = Poly(x**2*y + x**2 - 5*x*y + 2*x + 1, x, y)
g = Poly(2*x**2 - 12*x + 1, x)
print
print subresultants(f, g)[2]
print subresultants(f, g)[3]
print
print f % g
print g % (f % g)
导致

Poly(-2*x*y - 16*x + y - 1, x, y, domain='ZZ')
Poly(-9*y**2 - 54*y + 225, x, y, domain='ZZ')

Poly(x*y + 8*x - 1/2*y + 1/2, x, y, domain='QQ')
Poly(2*x**2 - 12*x + 1, x, y, domain='QQ')
上述两个序列仅因常数因子不同

对于一个变量的多项式,它们是。对于多元多项式,它们不是

多变量多项式的划分是:结果取决于所选的单项式顺序(默认情况下,Symphy使用字典顺序)。当你要求它将
2*x**2-12*x+1
除以
x*y+8*x-1/2*y+1/2
时,它发现分母的前导单项式是
x*y
,分子中没有单项式可以被
x*y
整除。商是零,所有的都是余数

子结果的计算(在sympy中实现)将x,y中的多项式视为x中的单变量多项式,其系数恰好来自y中的多项式环。肯定会产生一个子结果序列,其相对于x的次数不断减少,直到它达到0:序列的最后一个多项式中不会有x。相对于y的阶数可能(并且确实)会上升,因为算法将这些项乘以y中的任何多项式,以使x退出

结果是,两种计算都能正确工作,它们只是做了不同的事情