?

數學實驗在線性代數教學中的應用

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.

猜你喜歡
明文筆算密文
一種針對格基后量子密碼的能量側信道分析框架
由“知識本位”到“能力習得”——“兩位數乘兩位數的筆算(不進位)”教學實踐與思考
“除數是整十數的筆算除法”的教學實踐與反思
一種支持動態更新的可排名密文搜索方案
基于模糊數學的通信網絡密文信息差錯恢復
從“法”到“理”悟本質——三位數乘兩位數的筆算的實踐與思考
口算 筆算 估算
奇怪的處罰
奇怪的處罰
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合