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