大家一般用熟知的欧几里德算法来算最大公约数和公因式,下面介绍一种利用矩阵算最大公因式的方法:
一,在开始前先来说几个定理,你可以先看下面的部分,等充满疑惑后再来看这一部分:
定理1:(f(x),g(x))=(f(x)±g(x),g(x)±f(x))=(f(x)±g(x),g(x))=(f(x),g(x)±f(x))
定理2:如果f(x)=ax^n+bx^n-1+……+cx,那f(x)=x*(ax^n-1+bx^n-2+……+c)。而如果同时(x,g(x))=1,那易得(f(x),g(x))=(f(x)/x,g(x))
二,
用矩阵算多项式的最大公因式中最重要的2点:
1,由定理1可得,2个多项式加减不改变最大公因式。
2,由定理2可得,移位不变最大公因式。(此时不理解没关系看完下面例子就知道了)
例1:求4x^5+4x^4+4x^3+4x^2+4x-20与5x^4+5x^3+5x^2+5x-20的最大公因式
系数矩阵
4 4 4 4 4 -20
0 5 5 5 5 -20
运用定理1,将第一行减去第二行
4 -1 -1 -1 -1 0
0 5 5 5 5 -20
再运用定理2将第一行向右移一位,在行首补上0,上下对齐
0 4 -1 -1 -1 -1
0 5 5 5 5 -20
再运用定理1使其中一行末尾出现0
0 4 -1 -1 -1 -1
0 -75 25 25 25 0
移位
0 4 -1 -1 -1 -1
0 0 -75 25 25 25 (当然,可能已经有人发现了。其实一开始,第一行,和第二行有个公倍数4,5,,貌似把它们提出了也不要紧。对,对于一行的公倍数提出来对结果没影响,只是如果提出来,下面的运算就会出现分数,个人不太喜欢分数,所以没提)
就这样反复运用定理1,2,将一行的末尾化为0,再向右移位,最后上述矩阵化为:
0 0 0 0 1 -1
0 0 0 0 1 -1 这个就说明f(x),g(x)最后可以化成x-1,和x-1,,,公因式即为x-1
如果算到最后有一行全为0,但另一行却不全为0,,那就说明2个多项式互素。
三代码的实现,
这个就以后写把,,现在懒的敲,,