[摘 要] 科學和工程中的大部分問題最終將納入矩陣問題,而矩陣的初等變換是矩陣理論當中解決問題的一種重要手段。
[關 鍵 詞] 矩陣;初等變換;MATLAB;線性代數
[中圖分類號] G642 [文獻標志碼] A [文章編號] 2096-0603(2017)19-0032-01
一、前言
MATLAB是一個功能非常強大的數學軟件,是一種以矩陣運算為基礎的交互式程序語言。它輸入簡潔、運算高效、智能化程度高、人機交互性能好,是目前國內外大學教學和科研中最常用的數學軟件之一。
線性代數課程是高等院校的一門重要的基礎理論課程,該課程中的大部分問題都可歸結成矩陣問題,而矩陣的初等變換是矩陣理論當中解決問題的一種重要方法。
定義:下列變換稱為矩陣的初等行變換:(1)對調矩陣的某兩行;(2)以非零常數k乘某行中的所有元素;(3)以數k乘某行的每個元素加到另一行的對應元素上去。
把定義中的“行”換成“列”,即得矩陣的初等列變換的定義。矩陣的初等行變換和初等列變換統稱為矩陣的初等變換。
在許多實際的工程問題中,不僅要求理論正確,而且在計算上要求具有可實現性。記矩陣A的第i行為A(i,:),A的第i行第j列的元素為A(i,j)。則上述三種變換用MATLAB語言具體表述如下:(1)A([i,j],:)= A([j, i],:);(2)A(i,:)=k*A(i,:);(3)A(i,:)=A(i,:)+k*A(j,:)。
二、矩陣的初等變換的應用
矩陣的初等變換是矩陣的一種最基本的運算,它貫穿線性代數課程的始終。下面我們詳細介紹它在線性代數課程中的應用。
(一)應用矩陣的初等變換將非零矩陣化為行(最簡)階梯形矩陣
利用初等變換將一個非零矩陣化為行(最簡)階梯形矩陣是非常重要的運算,不難證明,任一非零矩陣總可通過有限次初等行變換化為行階梯形矩陣,進而化為行最簡階梯形矩陣。
MATLAB把行最簡階梯形矩陣的計算過程集成為一個子程序,程序名為“rref”。例如,求矩陣A的行最簡階梯形矩陣,可直接在MATLAB中調用命令rref(A)即可。
(二)應用矩陣的初等變換求可逆矩陣的逆
設A為n階方陣,E為n階單位矩陣,構造增廣矩陣B=[A,E],并對增廣矩陣B進行初等行變換,將其化為行最簡階梯形矩陣C,此時
1.若A所在的部分變為單位矩陣E,則單位矩陣E所在部分變為A的逆D;
2.若A所在的部分未變為單位矩陣E,則說明矩陣A不可逆。
上述過程的MATLAB實現命令為:
>>E=eye(n);B=[A,E];C=rref(B);D=C(:,n+1:2*n)
在實際的工程問題中,使用命令“rref”有時會難以適應各種特殊情況,因此在MATLAB中也提供了專門的求逆函數命令“inv”,該命令既可用于求數值矩陣的逆,也可用于求符號矩陣的逆。
(三)應用矩陣的初等變換求矩陣的秩
矩陣的初等變換作為一種運算,其深刻的意義在于它不改變矩陣的秩。矩陣的秩等于它對應的(最簡)階梯形矩陣的非零行(列)的行(列)數。
上述過程的MATLAB實現命令為:
>>[B,U]=rref(A);r=length(U).
MATLAB也提供了直接求秩的函數r=rank(A),其編程的思想是矩陣的行階梯變換,而且該函數對A是否為方陣沒有要求。
(四)應用矩陣的初等變換求解線性方程組
線性方程組Ax=b與其增廣矩陣B=[A,b]是一一對應的,因此對線性方程組的求解可以轉換為對其增廣矩陣的相關研究,具體地應用初等變換求解線性方程組的步驟為:
1.寫出線性方程組的增廣矩陣,應用矩陣的初等行變換將增廣矩陣化為行階梯形矩陣,此時如果系數矩陣A的秩rA小于增廣矩陣B的秩rB,則可以判斷方程組無解;如果rA=rB,則方程組有解。
2.若線性方程組有解,繼續將行階梯形矩陣化為行最簡階梯形矩陣C。
3.寫出矩陣C所對應的同解的線性方程組,求出其通解。
上述過程中的步驟1,2在MATLAB中的實現命令為:
>>B=[A,b];[rA,rB]=[rank(A),rank(B)];C=rref(B).
(五)應用矩陣的初等變換求向量組的秩及其極大無關組
初等變換不改變矩陣的秩。矩陣的秩等于它的行(列)向量組的秩,而且矩陣的初等變換不改變列向量組的線性關系。因此為了求向量組a1,a2,…,an的秩及其極大無關組,可以將a1,a2,…,an作為列向量組成矩陣A,即A=[a1,a2,…,an],再對矩陣A進行初等行變換,將其化為行最簡階梯形矩陣B。此時B中非零行的行數即為向量組的秩r,而且B中列向量之間的線性關系也是一目了然的,從而可得B的列向量組的一個極大線性無關組。又因矩陣的初等變換不改變列向量組的線性關系,從而得到A的一個極大線性無關組C。
注意,向量組的極大線性無關組不一定唯一,但是其秩是唯一的。
上述過程的MATLAB實現過程為:
>>A=[a1,a2,…,an];[B,U]=rref(A);r=length(U);C=A(:,U).
參考文獻:
陳懷琛,高淑萍,楊威.工程線性代數[M].北京:電子工業出版社,2007.