岳毅然
(中山大學 智能工程學院,廣東 廣州510275)
矩陣是理工科數學中一個重要的概念,它是代數領域的主要研究對象,也是數學理論研究和結合應用的一個重要工具。十九世紀中葉,英國數學家西爾維斯特為了將數字的矩形陣列區(qū)別于行列式而發(fā)明了“矩陣”一詞[1]。
矩陣的應用非常廣泛,它不僅被應用于數學領域里,在傳統(tǒng)理學、力學、現代自然科學、工程技術、計算機科學以及社會科學等諸多領域都是一個重要的工具。
如圖像的數據化表示中,圖像在計算機中以矩陣的形式進行存儲和讀寫,也通過對矩陣進行運算和變換等操作實現對圖片的處理。
逆矩陣作為矩陣論的一個重要分支,它在工程數學上如解線性方程組等等的應用非常廣泛。
為了更好地在實際問題中求解矩陣的逆矩陣,本文根據逆矩陣的定義和性質總結了一種適合計算機語言求逆矩陣的方法,幫助我們更快更準地解決人工計算量較大的求逆矩陣問題。
設A 是數域上的一個n 階矩陣,若在相同數域上存在另一個n 階矩陣B,有AB=BA=E,則稱B 是A 的逆矩陣,而A 被稱為可逆矩陣。
通常來講,計算機求解逆矩陣的常規(guī)方法為伴隨矩陣法,其數學理論基礎如下。
首先,n 階矩陣A=[aij]為可逆的充分必要條件為A 是非奇異矩陣,故有:
其中|A|為矩陣A 的行列式的值,A*稱為伴隨矩陣,其各元素Aij由矩陣A 各元素的代數余子式組成:
當矩陣A 的行列式|A|為零時,該矩陣沒有逆矩陣(即分母不能為0)。
伴隨矩陣A*的元素與原矩陣A 的元素的下標是轉置關系,可以根據求解代數余子式(即行列式)功能函數和雙重循環(huán)矩陣賦值的方式生成伴隨矩陣,從而實現矩陣求逆功能。
這種求逆矩陣的方法要求解得矩陣A 的行列式|A|及A 的伴隨矩陣A*,人工計算量較大,但是計算程序和循環(huán)較為簡單,適合計算機運算,故在理論上具有重要的地位。
設A 為一個n 階矩陣,可以采用列主元高斯消去法,經過p次行交換或列交換將矩陣A 轉化為上三角矩陣,后根據:
求得矩陣行列式的值。
手動求解時用上述方法較為簡便,但在計算機語言程序設計中,為解決更多維的矩陣行列式問題,則傾向于使用按行展開的方法。
矩陣的行列式等于它的任一行(列)的各元素aij與其對應的代數余子式乘積之和,即:
設一個n 階矩陣A,將矩陣A 中的元素aij所在的第i 行和第j 列元素劃去后,剩余的各元素按原來的排列順序組成的n-1 階矩陣所確定的行列式稱為元素aij的余子式,記為Mij,稱Aij=(-1)i+jMij為元素aij的代數余子式。
由矩陣A 的各代數余余子式Aij組成一個新矩陣,被稱為矩陣A 的伴隨矩陣,記為A*。
在較為成熟的理論研究基礎之上,各類軟件常作為載體用以實現各類運算,提高了信息處理的效果與效率,為人們對信息所進行的處理提供了便利。常見的有matlab、SPSS、C/C++、Excel 等,本文基于C 語言對求逆矩陣的實現過程與機理進行詳細介紹。
全過程從三個方面展開:求解行列式函數、求解伴隨矩陣函數、主函數。
利用矩陣的按行展開方法求解行列式的值。輸入為欲求矩陣和行數,后經三重循環(huán),遍歷各元素,后將各項相加得到行列式的值。
詳細實現細節(jié)如下所示。
為求解伴隨矩陣,需要借鑒上一getA_value 函數的求解代數余子式部分,同樣借助for 循環(huán)遍歷矩陣各元素和伴隨矩陣各元素,而后組成伴隨矩陣。
如圖1、2、3 所示,測試每個函數和模塊,驗證基本功能的準確性,并對整個程序進行黑盒測試,程序良好運行。
圖1 測試案例1
圖2 測試案例2
圖3 測試案例3
本文基于C 語言實現了求解任意階數方陣的逆矩陣的任務。算法邏輯清晰簡潔,融合了高等數學、線性代數等數學基礎概念與結構化程序設計理念,主要應用的數學知識有行列式降階展開定理、伴隨矩陣定義以及(代數)余子式定義等,為日后包括圖像處理與分析、數據挖掘和處理、工程數學等領域提供了理論和實踐基礎。