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