-
求多项式最大公因式程序实现
2012-05-09 19:49:38在代数学中的最大公因式问题,利用程序实现。 -
扩展欧几里得求两多项式最大公因式
2013-10-14 13:01:35#include #include #include #include using namespace std; typedef long long LL; const double eps = 1e-8; const int MOD = 999983; const int N = 55; struct Poly { int n; ...Poly p#include <iostream> #include <string.h> #include <stdio.h> #include <math.h> using namespace std; typedef long long LL; const double eps = 1e-8; const int MOD = 999983; const int N = 55; struct Poly { int n; LL a[N]; }; Poly p[25]; LL gcd(LL a,LL b) { return b? gcd(b,a%b):a; } Poly delete_zero(Poly x) { int i,j; Poly tmp; for(i=0;i<x.n && x.a[i] == 0;i++); for(j=0;i<x.n;i++,j++) tmp.a[j] = x.a[i]; tmp.n = j; return tmp; } Poly poly_gcd(Poly x,Poly y) { x = delete_zero(x); y = delete_zero(y); Poly yy = y,tmp; tmp.n = 0; int i=0; if(x.n == y.n) { double k = x.a[0] / y.a[0]; for(i=1;i<x.n;i++) if(fabs(x.a[i]*1.0 - k*y.a[i]) > eps) break; if(i == x.n) return y; } LL g = gcd(x.a[0],y.a[0]); LL tx = y.a[0] / g; LL ty = x.a[0] / g; for(i=0;i<x.n;i++) { x.a[i] *= tx; x.a[i] %= MOD; } for(i=0;i<y.n;i++) { y.a[i] *= ty; y.a[i] %= MOD; } if(x.n < y.n) swap(x,y); for(i=1;i<y.n;i++) tmp.a[i-1] = ((x.a[i] - y.a[i])%MOD + MOD)%MOD; for(;i<x.n;i++) tmp.a[i-1] = x.a[i]; tmp.n = x.n - 1; tmp = delete_zero(tmp); if(tmp.n == 0) return yy; return poly_gcd(y,tmp); }
-
GF(2)域求两多项式的最大公因式
2013-05-14 00:12:54信息论作业中有一道题目要求判断两个生成函数g1(x)和g2(x)构成的(2,1,m)卷积码是否为恶性卷积码。...在matlab的help文件里查了下,没有找到现成的GF(2)域求两多项式最大公因式的函数,于是自己动手写了一信息论作业中有一道题目要求判断两个生成函数g1(x)和g2(x)构成的(2,1,m)卷积码是否为恶性卷积码。解题的关键是判断两多项式g1(x)和g2(x)是否有非常数的公因式。一种办法是:在GF(2)域上求两多项式的最大公因式。若最大公因式不是常数,则两多项式构成的卷积码是恶性卷积码。
在matlab的help文件里查了下,没有找到现成的GF(2)域求两多项式最大公因式的函数,于是自己动手写了一个。代码附在下面。
被注释掉的代码是第一个版本。当时不知道有个现成的gfdeconv函数可以直接在GF(2)计算多项式除法,因此写得笨笨的。知道以后就改写现在的样子。不过值得注意的是,与一般的翻卷积函数不同,gfdeconv函数把向量看做升幂排列的多项式。
clear;
%在GF(2)域中求两多项式的最大公因式
%注意多项式是降幂排列的还是升幂排列的
% b(x) = x^2, a(x) = x^3 + x^2 + 1
%降幂排列表示
% b = [1 0 0];
% a = [1 0 1 1];
%升幂排列表示
b = [ 0 0 1];
a = [1 1 0 1];
while(sum(b) > 0)
t = b;
%注意!conv和deconb函数认为多项式按降幂排列
% [q,r] =deconv(a,b);
% b =mod(r,2);
% ind =find(b,1,'first');
% b =b(ind:end);
%而gfconv和gfdeconv等函数认为多项式按升幂排列
%例如[0 0 1]代表x^2
[quot,remd] = gfdeconv(a,b);
b = remd;
a = t;
end
-
关于用矩阵算多项式的最大公因式
2016-01-19 18:59:14大家一般用熟知的欧几里德算法来算最大公约数和公因式,下面介绍一种利用矩阵算最大公因式的方法: 一,在开始前先来说几个定理,你可以先看下面的部分,等充满疑惑后再来看这一部分: 定理1:(f(x),g(x))=...大家一般用熟知的欧几里德算法来算最大公约数和公因式,下面介绍一种利用矩阵算最大公因式的方法:
一,在开始前先来说几个定理,你可以先看下面的部分,等充满疑惑后再来看这一部分:
定理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使其中一行末尾出现00 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个多项式互素。
-
论文研究-基于近似最大公因多项式问题的公钥密码方案.pdf
2019-07-23 00:09:17研究了有限域F2上有随机噪声的一组多项式的近似最大公因式问题, 提出了基于近似最大公因多项式问题的公钥密码方案。证明了方案的正确性并归约证明了方案的安全性等价于求解近似最大公因式问题, 同时讨论了对于该方案... -
实例四十八:最大公因式问题
2019-09-29 22:46:44编制利用辗转相除法求两个多项式的最大公因式。 算法思路: 设多项式的系数按照幂次由高到低的顺序存于一维数组中,多项式的最高幂次存于一变量中。 辗转相除法求两多项式去除另一个多项式,然后将所得余式变成...实例四十八:最大公因式问题
问题描述:
编制利用辗转相除法求两个多项式的最大公因式。算法思路:
设多项式的系数按照幂次由高到低的顺序存于一维数组中,多项式的最高幂次存于一变量中。
辗转相除法求两多项式去除另一个多项式,然后将所得余式变成除式,原除式变为被除式。如此反复相除,直到余式为零,最后的除式即为最大公因式。#include<stdio.h> #define N 10 int main() { float a[N+1],b[N+1],c[N+1]; int i,j,n,m,k,flag; float x,y; printf("Please input the highest power of two polynomials(n,m):"); scanf("%d,%d",&n,&m); printf("Please enter the coefficients of the terms of the polynomial(x) in order of power from high to low:\n"); for(i=ni>=0;i--) scanf("%f",&a[i]); printf("请按幂次由高到低输入多项式B(x)各项的系数:\n"); for(j=m;j>=0;j--) scanf("%f",&b[j]); if(n<m) { for(i=n;i>=0;i--) { c[i] = a[i]; a[i] = b[i]; b[i] = c[i]; } for(i=n+1;i<=m;i++) a[i] = b[i]; flag = n;n = m;m = flag; } flag = 1; while(flag) { for(k=n-m;k>=0;k--) { x = a[k+m]/b[m]; for(j=m-1;j>=0;j--) { y = a[k+j] - x * b[j]; a[k+j] = (y<0.0005 && y>-0.0005)?0.0:y; } } for(i=m;i>=0;i--} c[i] = b[i]; for(flag=0,i=m-1;i>=0;i--) { if(a[i]!=0) flag = 1; b[i] = a[i]; } for(i=m;i>=0;i--) a[i] = c[i]; n = m--; } printf("这两个多项式的公因式是:"); for(i=n;i>=0;i--) if(i!=0) printf("%4.1fx^%d+",a[i],i); else printf("%4.1f\n",a[i]); return 0; }
-
最大公因式+因式分解
2019-09-18 19:44:33文章目录最大公因式定义辗转相除法依据的原理定理2(最大公因式的表示)互素定理3:互素的充要条件定理4证明推论证明不可约多项式定理5因式分解及唯一性定理标准分解式 最大公因式定义 f(x),g(x)∈P[x],d(x)∈P[x]f... -
高等代数 多项式环(第7章)2 公因式,因式分解,重因式
2020-08-13 16:46:45公因式与最大公因式 1.公因式与最大公因式 (1)定义: (2)最大公因式的判定: 引理:设f(x),g(x)∈K[x]f(x),g(x)∈K[x]f(x),g(x)∈K[x],如果在K[x]K[x]K[x]中有下述等式成立:f(x)=h(x)g(x)+r(x)(1)f(x)=h(x)g(x)+r(x... -
最大公因式
2013-03-13 14:16:00一元多项式环: 所有系数在数域P中的一元多项式的全体,称为数域P上的一元多项式环,记为P[x],P称为P[x]的系数域。 带余除法: 对于P[x]中任意两个多项式f(x)与g(x),其中g(x)≠0,一定有P[x]中的多项式q(x), r... -
多项式辗转相除法求最大公约数_辗转相除法求最大公约数
2020-12-24 12:26:302005-08-05多项式的除法-辗转相除法对这个概念不了多项式的辗转相除法!整数固然有辗转相除法的现象,多项式也有相似的性质....如果r(x)≡0,则a(x)、 b(x)的最大公因式就是b(x). 如果r(x)≡0,则以r(... -
因式分解理论基础(3)最大公因式
2021-01-14 13:10:39最大公因式 我们回顾整数环上a,ba,ba,b最大公因数定义: ∀d∣a,d∣b,d∣(a,b)\...对于两个一元多项式f(x),g(x)f(x),g(x)f(x),g(x),它们的最大公因式(f(x),g(x))(f(x),g(x))(f(x),g(x))满足下述条件: ∀d(x)∣f(x),d -
多项式辗转相除法求最大公约数_多项式的除法-辗转相除法
2021-02-05 10:02:50多项式的辗转相除法!整数固然有辗转相除法的现象,多项式也有相似的性质....如果r(x)≡0,则a(x)、 b(x)的最大公因式就是b(x).如果r(x)≡0,则以r(x)除b(x)得商式a1(x),余式r1(x),即b(x)=a1(... -
求最大公共多项式
2020-02-02 16:22:59定义1 若h(x)既是f(x)的因式,又是g(x)的因式,...设d(x)是f(x)与g(x)的一个公因式,如果对于f(x)与g(x)的 任一个公因式h(x),都有h(x)|d(x)则称d(x)是f(x)与g(x)的一个最大公因式。 定理 如果d(x)是f(x)与g(x)的... -
多项式的综合运算
2013-01-08 19:37:40多项式运算包括:多项式的加减乘除,多项式的最小公倍式及最大公因式,求多项式在某一点的值,对多项式N次求导。 -
怎么判断两个多项式互素_两个多项式的结式及其应用
2021-01-05 18:50:33对于数域 上的两个多项式 ,我们通常是通过辗转相除法计算最大公因式,并判断其是否互素。本节我们将介绍一种新方法,判断两个多项式是否互素。我们先看如下引理引理:设 均为数域 上的非常数的多项式, 的次数为 , ... -
一本正经之高等代数 Chapter 1 多项式(高等代数考研真题集,解题精粹,多项式)
2019-03-06 14:50:58@Lovemathematics #一本正经之高等代数 Chapter 1 多项式 目录 火眼金睛:易混淆知识点: 实时热点 1. :多项式的次数 : 要点归纳 实时热点2:整除,多项式的根,因子 : 要点归纳:整除的性质 ...求最大公因式... -
高等代数 多项式环(第7章)1 一元多项式环,整除关系,带余除法
2020-08-11 16:04:16一.一元多项式环 二.整除关系与带余除法 三.最大公因式 -
多项式类的 C++ 实现
2016-07-26 19:44:298、可通过 gcd(Poly P, Poly Q)、lcm(Poly P, Poly Q) 求两个多项式的最大公因式、最小公倍式; 9、可以获取多项式的各种信息: 9.1、可通过 P.deg() 获取多项式的次数; 9.2、可通过 P.mainCoef() 获取... -
多项式类的C++实现
2016-07-25 22:05:287、可通过 gcd(Poly P, Poly Q)、lcm(Poly P, Poly Q) 求两个多项式的最大公因式、最小公倍式; 8、可以获取多项式的各种信息: 8.1、可通过 P.deg() 获取多项式的次数; 8.2、可通过 P.mainCoef() 获取多项式的... -
欧几里得算法(辗转相除法)求最大公约数
2017-12-11 21:10:23之前在高等代数(也可能你们学的线性代数)中有讲到多项式求最大公因式的方法——辗转相除法,当时没仔细研究,后来细想发现这个方法是可以用计算机实现的,今天看资料的时候有看到欧几里得算法,正式求最大公因数的... -
矩阵分析学习(补充)
2019-10-14 11:14:22一、k级行列式因子 在A(λ)特征矩阵中所有非0的k级子式首项系数为1的最大公因式Dk(λ)称为A(λ)的一个k级行列...2级非0子式为((λ+1)(λ-1),(λ+1)(λ-2),(λ-1)(λ-2)),这三个多项式的最大公因式为1,所以D2... -
《线性代数》 李炯生\查建国\王新茂 中国科学技术大学 第2版 部分习题答案
2019-10-31 18:06:06文章目录第一章 多项式1.3 整除性与最大公因式习题3习题101.5 实系数与复系数多项式习题1习题2.(4)习题101.6 整系数与有理系数多项式例1例2习题2习题6习题7习题81.8 对称多项式习题3习题6习题8,10习题11. ... -
高等代数
2019-10-04 22:11:33高等代数多项式数域:...一元多项式的运算:加法交换,加法结合,乘法交换,乘法结合,乘法分配因式分解:最大公因式:d(x)是f(x),g(x)的因式,d(x)具有其他公因式为因式(用辗转相除法来求)最大公约数的求法很有... -
基于Matlab的辗转相除法
2021-01-30 11:51:08辗转相除法是整数和多项式理论中求最大公因数和最大公因式的一类重要方法,对于较大的两个整数和次数较高的两个多项式而言,利用辗转相除法手动计算它们的最大公因数和最大公因子运算量非常大,基于减少运算时间并... -
论文研究-三元域上三次和四次剩余码的幂等生成元.pdf
2019-09-10 09:31:48有限域上高次剩余码的生成多项式都是多项式[xn-1]的因式。针对多项式[xn-1]在有限域上分解的困难性,给出...利用计算机软件求解这些幂等生成元与[xn-1]最大公因式就可得到三次和四次剩余码生成多项式而不用分解[xn-1]。 -
论文研究-一类半无限规划问题的神经网络算法.pdf
2019-09-07 02:38:08有限域上高次剩余码的生成多项式都是多项式[xn-1]的因式。针对多项式[xn-1]在有限域上分解的困难性,给出了...利用计算机软件求解该幂等生成元与[xn-1]最大公因式就可得到三次和四次剩余码生成多项式而不用分解[xn-1]。 -
王萼芳第一章
2019-04-10 23:39:363.最大公因式,互素,互素充要条件及3推论 4.不可约多项式、充要条件、2推论、一次多项式、任意数域因式分解存在性及唯一性,标准分解式 5.重因式,N阶微商,N阶微商与重因式关系,重因式存在判别、去重方法 6.... -
关于欧几里得算法(Euclidean Algorithm)的迭代次数的证明
2021-03-06 12:02:41我们直到欧几里得算法是计算两个数的最大公因数(或者两个多项式的最大公因式),并且在其他算法中(例如因子分解算法)经常会用到欧几里得算法。本篇专门证明欧几里得算法的迭代次数和计算复杂度。 欧几里得算法...