宋愛斌 陸軍裝甲兵學(xué)院基礎(chǔ)部
《線性代數(shù)》主要以離散量為研究對(duì)象,用數(shù)學(xué)的語言表述自然科學(xué)中最為普遍的線性概念,其典型特點(diǎn)是內(nèi)容抽象、理論性強(qiáng),蘊(yùn)含豐富的數(shù)學(xué)思想,側(cè)重對(duì)抽象思維和邏輯思維能力的培養(yǎng),在數(shù)學(xué)、物理學(xué)和技術(shù)科學(xué)中具有非常重要的作用,在計(jì)算機(jī)廣泛應(yīng)用的今天,計(jì)算機(jī)圖形學(xué)、計(jì)算機(jī)輔助設(shè)計(jì)、密碼學(xué)、虛擬現(xiàn)實(shí)等技術(shù)無不以《線性代數(shù)》為其理論和算法基礎(chǔ)的一部分。
目前,該課程教學(xué)存在的主要矛盾問題是,第一,內(nèi)容抽象,學(xué)生對(duì)內(nèi)容的理解存在困難,學(xué)習(xí)難度大;第二,內(nèi)容與實(shí)際應(yīng)用聯(lián)系不夠緊密,對(duì)所學(xué)內(nèi)容的作用和地位不夠清楚,學(xué)生學(xué)完了不知道怎么用。針對(duì)矛盾問題,我們?cè)诮虒W(xué)實(shí)踐中探討案例式教學(xué),通過知識(shí)點(diǎn)的典型應(yīng)用及MATLAB軟件的引入能夠很好的幫助學(xué)員掌握所學(xué)知識(shí)和應(yīng)用技巧。下面以逆矩陣為例進(jìn)行說明。
密碼術(shù)伴隨著人類書寫文明產(chǎn)生,而編碼和解碼這場(chǎng)持續(xù)了三千多年的攻防戰(zhàn)至今仍是方興未艾。編碼者努力地建立更強(qiáng)更安全的密碼系統(tǒng)來防衛(wèi)通訊,而解碼者則力爭(zhēng)找到極具威懾力的方法來破解密碼。二者的斗志斗勇產(chǎn)生了很多種密碼。[1]有一種通用的傳遞信息方法,是將每個(gè)字母與一個(gè)整數(shù)對(duì)應(yīng)(通常A對(duì)應(yīng)1,B對(duì)應(yīng)2,…,Z對(duì)應(yīng)26,0對(duì)應(yīng)空格),然后傳輸一串整數(shù)。例如,信息SEND MONEY,可以編碼為:
5,8,10,21,7,2,10,8,3
其中S表示5,E表示為8,等等.但是,這種編碼很容易破譯.在一段較長(zhǎng)的信息中,我們可以根據(jù)數(shù)字出現(xiàn)的相對(duì)頻率猜測(cè)每一數(shù)學(xué)表示的字母.例如,若8為編碼信息中最常出現(xiàn)的數(shù)學(xué),則它最有可能表示字母E,即英文中最常出現(xiàn)的字母。
我們可以用矩陣乘法對(duì)信息進(jìn)行進(jìn)一步的偽裝.設(shè)矩陣A是所有元素均為整數(shù)的矩陣(A稱為密鑰矩陣),且其行列式為±1(后面解釋行列式為什么為±1?)。我們可以用這個(gè)矩陣對(duì)信息進(jìn)行變換.變換后的信息將很難破譯.為演示這個(gè)技術(shù),令:
需要編碼的信息放置在三行矩陣B(B稱為明文矩陣)的各個(gè)列上。
乘積C(C稱為暗文矩陣)為:
給出了用于傳輸?shù)木幋a信息:
31,80,54,37,83,67,29,69,50
接收到信息的人可通過乘以矩陣A的逆矩陣A-1進(jìn)行譯碼,即A-1C=A-1AB=B。那么什么是逆矩陣,怎樣求逆矩陣?這就是我們接下來要講的內(nèi)容。
在數(shù)的乘法中,對(duì)不等于零的數(shù)a 總存在惟一的數(shù)b,使得ab=ba=1,此數(shù)b 即是a 的倒數(shù),即.利用倒數(shù),數(shù)的除法可轉(zhuǎn)化為乘積的形式:,這里a≠0.把這一思想應(yīng)用到矩陣的運(yùn)算中,并注意到單位矩陣E 在矩陣的乘法中的作用與數(shù)1類似,由此我們引入逆矩陣的定義[1]。對(duì)于n 階矩陣A ,如果有一個(gè)n 階矩陣B,使:
AB=BA=E,
則稱矩陣是可逆的,并把矩陣B稱為A的逆矩陣,記作A-1.如何求一個(gè)可逆矩陣的逆矩陣?由于矩陣A的伴隨矩陣A*滿足:
為了信息傳遞的安全性,已知信息和接收到的信息分別是密鑰矩陣A和暗文矩陣C ,這里要求密鑰矩陣A所有元素均為整數(shù),且其行列式為±1,是為了保證逆矩陣A-1的所有元素均為整數(shù)。根據(jù)逆矩陣求法,求得:
明文矩陣B為:
按照字母與整數(shù)的對(duì)應(yīng)關(guān)系可以知道傳遞的信息是:SEND MONEY。
這個(gè)應(yīng)用案例引起學(xué)生極大的興趣,課后給學(xué)生布置一個(gè)任務(wù),讓每位學(xué)生用密鑰矩陣和暗文矩陣給老師傳遞一個(gè)信息,字母與整數(shù)的對(duì)應(yīng)關(guān)系是字母A對(duì)應(yīng)數(shù)字1,字母B對(duì)應(yīng)數(shù)字2,…,字母Z對(duì)應(yīng)數(shù)字26,0對(duì)應(yīng)空格。這個(gè)任務(wù)有一個(gè)難點(diǎn),就是密鑰矩陣的構(gòu)造,學(xué)生要通過行列式的性質(zhì)構(gòu)造一個(gè)其行列式的值為±1的方陣.學(xué)生傳遞的信息各種各樣,充分說明了學(xué)生對(duì)這項(xiàng)任務(wù)非常感興趣.每名學(xué)生傳遞一個(gè)信息,每條信息翻譯成明文都需求解一個(gè)逆矩陣并進(jìn)行矩陣的乘法,計(jì)算量非常大.因此,借助MATLAB這個(gè)數(shù)學(xué)軟件編寫一個(gè)簡(jiǎn)單的程序進(jìn)行計(jì)算就解決這個(gè)問題了,借此還可以教學(xué)生掌握MATLAB軟件的使用.下面舉幾個(gè)學(xué)生傳遞的信息,通過MATLAB編程翻譯成明文。
學(xué)生1傳遞信息:
A=[1 2 3 4 5;0 1 2 3 4;0 0 1 2 3;0 1 2 4 6;1 2 3 4 6];
C=[136 245 169 191 191; 95 179 115 123 138; 63 118 79 74 93; 126 236 158 163 187; 147 266 188 211 210];
An=inv(A);
Bm=An*C
運(yùn)行結(jié)果:
答案:I like your lesson thinks.
學(xué)生2傳遞的信息:
A=[1 0 0 0;0 1 0 0;0 0 1 0;1 0 0 1];
C=[13 1 22 5;7 1 0 7;15 15 4 0;4 1 25 0 ];
An=inv(A)
Bm=C*An
通過案例式教學(xué),雖然課上加了MATLAB的使用和應(yīng)用實(shí)例的講解,課后加了應(yīng)用的作業(yè),同樣的時(shí)間內(nèi)需要學(xué)習(xí)的知識(shí)多了,但提起了學(xué)生的學(xué)習(xí)興趣,激發(fā)了學(xué)生的學(xué)習(xí)動(dòng)力(比如編碼問題)。從考核成績(jī)可以看出,學(xué)生的學(xué)習(xí)效果有明顯提高。