关于用矩阵算多项式的最大公因式,及其代码实现

大家一般用熟知的欧几里德算法来算最大公约数和公因式,下面介绍一种利用矩阵算最大公因式的方法:

,在开始前先来说几个定理,你可以先看下面的部分,等充满疑惑后再来看这一部分:

定理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个多项式互素。

代码的实现,

这个就以后写把,,现在懒的敲,,


你可能感兴趣的:(关于用矩阵算多项式的最大公因式,及其代码实现)