数学实验在线性代数教学中的应用

2018-12-27 10:25周琴
数学学习与研究 2018年18期
关键词:明文笔算密文

周琴

【摘要】本文探讨了数学实验在线性代数课程中的应用,以逆矩阵为例设计了实验内容,实验要求利用MATLAB软件按照两种方法计算逆矩阵,并利用hill密码原理破译密文.文中给出了实验步骤,该实验有利于学生更深入地掌握理论方法及理解逆矩阵在实际中的应用.

【关键词】逆矩阵MATLAB;数学实验

【基金项目】2017年湖南涉外经济学院教学改革研究项目“数学实验在地方本科院校非数学专业教学中的应用研究”.

一、引言

线性代数是针对大部分高校专业学生开设的一门数学公共类课程,它主要包括行列式、矩阵、线性方程组及相关运算等内容.许多学生认为该课程比较抽象,计算量大,计算时容易出错.为此,我们考虑将数学实验引入线性代数教学中,通过学生自己动手来探索数学规律,提高学生的学习参与度,有助于学生更深入地理解和巩固所学的数学概念和原理.

二、逆矩阵实验案例

逆矩阵的计算是线性代数课程的一个重要内容,在求解某些线性方程组时也可利用逆矩阵进行运算.但因其计算步骤复杂,计算量大,学生在笔算时正确率较低.因此,我们以逆矩阵为例设计了相关的数学实验,要求学生在MATLAB软件下完成该实验,旨在帮助学生熟练掌握计算逆矩阵A-1的两种基本方法,并理解逆矩阵在密码学中的应用.

实验要求:设A=1-32-30111-1,完成以下内容:(1)判断矩阵A是否可逆;(2)利用公式A-1=1|A|A*,求A-1;(3)利用矩阵的初等行变换求A-1;(4)设A为密钥矩阵,根据hill密码原理将密文gqanhs解密成明文.

关于矩阵A的可逆性判断,我们可以用命令det(A)计算A的行列式,若行列式不为0,则可判断A可逆.关于逆矩阵的计算,MATLAB中可直接用命令inv(A)来实现,但若用现成的命令来做实验,其最大作用是辅助学生判断笔算结果是否正确,并不利于学生掌握理论方法.因此,实验要求中(2)和(3)要求用理论方法进行实验.

利用公式A-1=1|A|A*,A*=(Aij)T,Aij=(-1)i+jMij(Mij为A的元素aij的余子式)笔算逆矩阵时,学生容易出现几个误区:一是计算代数余子式Aij时忘记乘符号(-1)i+j,二是计算伴随矩阵A*时没有将Aij转置,三是部分学生用|A|A*来计算A-1.如果学生平时笔算时易犯这些错误,在进行实验时也会出现相应的错误.这时我们可将实验结果与MATLAB自带的函数执行结果做对比来发现错误.比如,将实验过程中产生的A*结果与执行命令det(A)*inv(A)的结果对比,最后产生的A-1的结果与执行命令inv(A)的结果对比.通过该实验能强化学生对计算步骤中每个细节的掌握,从而减少笔算的错误.实现此过程的代码如下:

A=[1-3 2;-3 0 1;1 1-1];

fori=1:3

for j=1:3

C=A;

C(:,[i])=[];%删除i行

C([j],:)=[];%删除j列

A1(i,j)=(-1)^(i+j)*det(C);

end

end

Astar=A1′%A*

invA=Astar′/det(A)%逆

初等行变换方法利用(A|E)→(E|A-1)计算逆矩阵.在生成矩阵AE=(A|E)后,直接用命令rref(AE)可得到(E|A-1)的形式,从而求出逆.为了强化学生对计算步骤的掌握,实验过程要求学生按笔算步骤编程.以下代码的作用是将矩阵AE中元素按AE21,AE31,AE32,AE12,AE13,AE23的顺序逐一化0,再将AE22,AE33元素化1,从而将AE化为(E|A-1)的形式,最后取其4至6列即A-1.实现此过程的代码如下:

A=[1-3 2;-3 0 1;1 1-1];

E=eye(3,3);

AE(:,1:3)=A;

AE(:,4:6)=E;

EA=rref(AE)

AE(2,:)=AE(2,:)-AE(1,:)*AE(2,1)/AE(1,1);

AE(3,:)=AE(3,:)-AE(1,:)*AE(3,1)/AE(1,1);

AE(3,:)=AE(3,:)-AE(2,:)*AE(3,2)/AE(2,2);

AE(1,:)=AE(1,:)-AE(2,:)*AE(1,2)/AE(2,2);

AE(1,:)=AE(1,:)-AE(3,:)*AE(1,3)/AE(3,3);

AE(2,:)=AE(2,:)-AE(3,:)*AE(2,3)/AE(3,3);

AE(2,:)=AE(2,:)/AE(2,2);

AE(3,:)=AE(3,:)/AE(3,3);

invA=AE(:,4:6)

若去除代码中每行结尾分号再运行即可在MATLAB命令行窗口显示每步的结果.

该结果也可与命令rref(AE)的结果对比判断正确与否.此代码便于学生判断笔算时每一步是否正确,若需计算四阶及四阶以上矩阵的逆可仿此进行.以上两段代码执行后在MATLAB命令行窗口将得到结果A-1=113237349.

实验要求(4)中,希尔密码的基本思想是:将英文字母a—z用模26的数字1—26代替,26即0,对于密钥矩阵An×n,将英文明文对应数字构造相应的行数为n的矩阵X,令Y=AX,将Y中数字转变为字母,即相应的密文.若已知密文求明文,利用X=A-1Y即可.已知密钥矩阵为3阶方阵,即n=3,密文gqanhs,对应为矩阵即Y=714178119,利用MATLAB语句Y=[7 14;17 8;1 19];X=inv(A)*Y即可输出X=27729879185245,再利用語句mod(X,26)将X的元素在模26下转化为0—26之间的数字即X=120201311,再将数字对应字母得到明文attack.该实验内容的设置将抽象的知识点与实际问题联系起来,有利于学生了解逆矩阵在实际中的应用,提高学生学习兴趣.

综上所述,借助MATLAB软件我们完成了逆矩阵相关的实验,包括逆矩阵的两种计算方法及其在密码学中的应用.线性代数课程的其他知识点也可设计相应的实验案例,帮助学生更深入地理解和掌握理论方法,在实验的过程中动手动脑能力也能得到提升.

【参考文献】

[1]李建平,全志勇.线性代数(修订版)[M].上海:复旦大学出版社,2009.

[2]刘卫国.MATLAB程序设计教程:第2版[M].北京:中国水利水电出版社,2010.

猜你喜欢
明文笔算密文
一种针对格基后量子密码的能量侧信道分析框架
由“知识本位”到“能力习得”——“两位数乘两位数的笔算(不进位)”教学实践与思考
“除数是整十数的笔算除法”的教学实践与反思
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
从“法”到“理”悟本质——三位数乘两位数的笔算的实践与思考
口算 笔算 估算
奇怪的处罚
奇怪的处罚