ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:18.59KB ,
资源ID:22660079      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22660079.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(matlab有限域上的运算之欧阳历创编Word文件下载.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

matlab有限域上的运算之欧阳历创编Word文件下载.docx

1、 给定 a 和 p,例1中的等式 ab+pc=1 可以通过扩展的欧几里得除法得到,从而求得 GF(p) 中任意非零元素的逆元.例2(有限域 GF(pn) 从 GF(p) 出发,对任意正整数 n,n2,我们可以构造元素元素个数为 pn 的有限域 GF(pn) 如下: 令 g(x) 为一个 GF(p) 上次数为 n 的不可约多项式,集合 GF(pn)=GF(p)x/g(x)=a0+a1x+a2x2+an1xn1|aiGF(p),0in1在 GF(pn) 上定义加法 和乘法 分别为模 g(x) 加法和模 g(x) 乘法,即任意的 a(x),b(x)GF(pn), a(x)b(x)=a(x)+b(x)

2、,a(x)b(x)=(a(x)b(x)modg(x)GF(pn), 为一个有 pn 个元素,特征为 p 的有限域,其中零元素为 GF(p) 中的 0,单位元为 GF(p) 中的 1.令 a(x) 为 GF(pn) 中的一个非零元素. 由于 gcd(a(x),g(x)=1,因此,存在 GF(p) 上的多项式 b(x),c(x),使得 a(x)b(x)+g(x)c(x)=1. 由此得到 a(x) 的逆元为 a1(x)=b(x)modg(x).域 GF(pn) 称为 GF(p) 的(n 次)扩域(extension field),而 GF(p) 称为 GF(pn) 的子域(subfield).例注2

3、.1: 给定 GF(p) 上的多项式 a(x) 和 g(x),例2中的等式 a(x)b(x)+g(x)c(x)=1 可以通过扩展的欧几里得除法得到,从而求得 GF(pn) 中任意非零元素的逆元.例注2.2:设 GF(q) 是一个含有 q 个元素的有限域. 对任意正整数 n, GF(q) 上的 n 次不可约多项式一定存在. 更进一步,GF(q) 上首项系数为 1 的 n 次不可约多项式的个数为 Nq(n)=1nd|n(nd)qd=1nd|n(d)qn/d其中 为Moebius函数,定义为 (m)=1(1)k0如果m=1如果m=p1p2pk,其中p1,p2,pk为互不相同的素数其它1.2 有限域的

4、性质令 GF(q) 是一个含有 q 个元素的有限域,Fq=GF(q)0 为有限域 GF(q) 中所有非零元素构成的集合. 则在乘法之下 Fq 是一个有限循环群. 循环群 Fq 的一个生成元称为有限域 GF(q) 的一个本原元.若 GF(q) 为一个本原元,则 GF(q)=0,1,2,q2并且 q1=1,即 q=.定义:设 GF(q) 是一个含有 q 个元素的有限域,GF(p) 是 GF(q) 的一个含有 p 个元素的子域(p 不一定为素数),GF(q). 则 GF(p) 上以 为根,首项系数为 1,并且次数最低的多项式称为 在 GF(p) 上的极小多项式(minimal polynomial

5、of over GF(p). 特别地,若 GF(q) 为 GF(q) 的一个本原元,则 在 GF(p) 上的极小多项式称为 GF(p) 上的一个本原多项式(primitive polynomial for GF(q) over GF(p).定义注1:对任意的 GF(q), 在 GF(p) 上的极小多项式存在并且唯一,并且 在 GF(p) 上的极小多项式为 GF(p) 上的一个不可约多项式.定义注2:设 GF(q), 则 和 p 在 GF(p) 上具有相同的极小多项式. 更进一步,集合 B()=,p,p2,p3,pi,中的元素具有相同的极小多项式. 设 q=pn,则 pn=. 因此,集合 B()

6、 中互不相同的元素的个数(记为 r)不超过 n. 可以证明, 为 GF(q) 的一个本原元当且仅当 r=n.定理:设 GF(q) 是一个含有 q 个元素的有限域,GF(p) 是 GF(q) 的一个含有 p 个元素的子域. 设 GF(q),r 为满足 pr= 的最小正整数. 则 在 GF(p) 上的极小多项式 g(x) 是一个 r 次不可约多项式,并且 B()=,p,p2,pr1中的元素为 g(x) 在 GF(q) 上的所有不同的根,即 g(x)=(x)(xp)(xp2)(xpr1).r 的计算方法如下:设 在 Fq 中的阶为 k. 集合 Zk=m0mk1,gcd(m,k)=1在模 k 乘法运算

7、下是一个含有 (k) 个元素的有限群(其中 为欧拉(Euler)函数). 则 r 等于 pmodk 在 Zk 中的阶.推论:设 GF(q) 是一个含有 q 个元素的有限域,GF(p) 是 GF(q) 的一个含有 p 个元素的子域. 设 |GF(q)|=pn,即 q=pn. 设 GF(q) 为 GF(q) 的一个本原元,则 在 GF(p) 上的极小多项式 g(x) 的次数为 n,并且 g(x)=(x)(xp)(xp2)(xpn1).更进一步,,p,p2,pn1 均为 GF(q) 的本原元.设 GF(p) 是一个含有 p 个元素的有限域,n 是任意一个正整数,则 GF(p) 上的 n 次本原多项式

8、一定存在. 更进一步,GF(p) 上的首项系数为 1 的 n 次本原多项式的个数为 (pn1)n,其中 为欧拉函数.例3 考虑二元域 GF(2) 上的不可约多项式 p()=3+1,构造有限域 GF(23)=GF(2)/p()=0,1,+1,2,2+1,2+,2+1.容易验证,,2,3,4,5,6 都是 GF(23) 的本原元. GF(2) 上的首项系数为 1 的 3 次本原多项式有两个,分别为 (i) ,2,4 在 GF(2) 上的极小多项式 g(x)=(x+)(x+2)(x+4)=x3+x+1(ii) 3,5,6 在 GF(2) 上的极小多项式 g(x)=x3+x2+1有限域 GF(p) 上

9、的本原多项式一定是 GF(p) 上的不可约多项式;但是,GF(p) 上的不可约多项式不一定是 GF(p) 上的本原多项式. 设 GF(q) 是一个含有 q 个元素的有限域,GF(p) 是 GF(q) 的一个含有 p 个元素的子域, g(x) 是 GF(p) 上的一个不可约多项式. 则 g(x) 为 GF(p) 上的本原多项式当且仅当 g(x) 在 GF(q) 上的根都是 GF(q) 的本原元.下面例子说明不可约多项式不一定是本原多项式.例4 考虑二元域 GF(2) 上的不可约多项式 p(x)=x4+x3+x2+x+1,构造有限域 GF(24)=GF(2)x/p(x)=a+bx+cx2+dx3a

10、,b,c,dGF(2).显然,xGF(24). 由于 x5=1,即 x 的阶为 5,因此,x 不是 GF(24) 的本原元. 于是, p(x) 不是 GF(2) 上的本原多项式. 另外,可以验证 x+1 是 GF(24) 的本原元.2 Matlab 中的有限域计算函数Matlab 中自带的有限域的计算是在 GF(2m) 上进行的,即在二元域 GF(2) 的扩域中进行计算,其中 1m16. 由 “1.1 有限域的构造” 的 “例2” 可知,我们只需先找到一个 GF(2) 上的 m 次不可约多项式 g(x),得到集合 GF(2)x/g(x),然后定义其上的加法和乘法分别为模 g(x) 加法和模 g

11、(x) 乘法,即得到有限域 GF(2m).然而,这样得到的有限域 GF(2m) 中,元素 x 未必是本原元,这将给后面的(乘法)运算带来很多麻烦. 因此,在不可约多项式 g(x) 的挑选上,我们最好选择一个本原多项式. 这其实就是 Matlab 中的做法.Matlab 中 GF(2m) 的元素: 在 Matlab 中 GF(2m):=GF(2)D/p(D),其中 p(D) 为一个 GF(2) 上的 m 次本原多项式. GF(2m)=am1Dm1+am2Dm2+a1D+a0,aiGF(2),0im1因此,每个 GF(2m) 中的元素本质上是一个次数小于 m 的多项式,每个元素和多项式之间有“11

12、”对应关系. 例如,取 m=3 和本原多项式 p(D)=D3+D+1,则我们得到有限域 GF(23),其中的元素和多项式之间的对应关系如下:GF(23)GF(2)D/p(D)二进制00010012D0103D+10114D21005D2+11016D2+D1107D2+D+1111GF(2) 上的多项式由系数组成的二进制所对应的(十进制)数字来表示. 例如,多项式 p(D)=D3+D+1 的系数组成的二进制为 1011,因此,多项式 p(D) 表示为数字 11.2.1 定义有限域数组在 Matlab 中,函数 gf 用来定义一个有限域数组,函数申明如下:X_GF = GF(X,M,PRIM_P

13、OLY)函数创建有限域 GF(2M) 上的一个数组,使用的 GF(2) 上的 M 次本原多项式为 PRIM_POLY; M 是一个 1 至 16 之间的整数;数组 X 中的元素为 0 至 2M1 之间的数. 例如,生成有限域 GF(23) 中的所有元素,并令本原多项式为 p(D)=D3+D2+1. GF8 = gf(0:7,3,13)GF8 = GF(23) array. Primitive polynomial = D3+D2+1 (13 decimal)Array elements = 0 1 2 3 4 5 6 7如果不指定本原多项式,则 Matlab 将使用默认本原多项式. 例如 gf

14、(0:7,3)ans = GF(23) array. Primitive polynomial = D3+D+1 (11 decimal)在这里例子中,Matlab 使用了 3 次本原多项式 D3+D+1.如果不指定次数 M 和本原多项式 PRIM_POLY,则生成二元域 GF(2) 中的元素.1)ans = GF(2) array. 0 1生成的有限域中的数组可以参与运算(+、.、.、等). 注意:参与运算的操作数必须来自同一个有限域,用于生成有限域的本原多项式也必须相同!一个典型的例子是计算有限域的乘法表如下:GF8 = GF(23) array. Primitive polynomial

15、 = D3+D+1 (11 decimal) GF8*GF8 0 0 0 0 0 0 0 0 0 2 4 6 3 1 7 5 0 3 6 5 7 4 1 2 0 4 3 7 6 2 5 1 0 5 1 4 2 7 3 6 0 6 7 1 5 3 2 4 0 7 5 2 1 6 4 3Warning: Lookup tables not defined for this order 23 andprimitive polynomial 13. Arithmetic still workscorrectly but multiplication, exponentiation, andinvers

16、ion of elements is faster with lookup tables.Use gftable to create and save the lookup tables. In gf.gettables at 35 In gf.mtimes at 20ans = GF(23) array. Primitive polynomial = D3+D2+1 (13 decimal) 0 2 4 6 5 7 1 3 0 3 6 5 1 2 7 4 0 4 5 1 7 3 2 6 0 5 7 2 3 6 4 1 0 6 1 7 2 4 3 5 0 7 3 4 6 1 5 2在这里我们用

17、两个不同的本原多项式构造有限域 GF(23),得到两张不同的乘法表.注1:当我们计算 GF(2)D/D3+D2+1 的乘法表时,Matlab 给产生一个警告 “Warning: Lookup tables not defined for this order 23 and primitive polynomial 13.” 从警告中我们可以看出,Matlab 中有限域的乘法是通过查表来完成的,这样可以显著地提高计算的速度. 我们可以通过命令 gftable 来创建并保存查找表格. 注2:用本原多项式 D3+D+1 和 D3+D2+1 生成两个不同的元素个数为 8 的有限域,然而这两个有限域是同

18、构的. 一般地,我们有如下有限域同构定理: 任意两个元素个数相同的有限域一定同构.与本原元多项式相关的函数primpoly函数 primpoly 用于计算 GF(2) 上的本原多项式,函数申明如下:PR = PRIMPOLY(M, OPT, nodisplay)其中 M 为本原多项式的次数,其取值为 2 至 16 之间的整数;选项 OPT 的定义如下:OPT = min 给出一个权值最小的本原多项式max 给出一个权值最大的本原多项式all 给出所有的本原多项式OPT = L 给出所有权值为L的本原多项式字符串 nodisplay 用于关闭默认的本原多项式显示方式.例如,输出 GF(2) 上所有次数为 3 的本原多项式. primpoly(3,Primitive polynomial(s) = D3+D1+1D3+D2+1ans =1113,isprimitive函数 isprimitive 用来检查 GF(2) 上的多项式是否为本原多项式,函数申明如下:CK = ISPRIMITIVE(A)其中 A 为一个表示多项式的数字,并且表示的多项式的次数不能超过 16. 如果 A 为本原多项式,则返回 1;否则返回 0.例如,检查多项式 D3+D2+1 和 D3+D2+D+1 是否为本原多项式如下: isprimitive(13) 1 isprimitive(15) 0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1