[摘 要] Matlab是當(dāng)今國際上公認(rèn)的最優(yōu)秀的科技應(yīng)用軟件之一。主要介紹了Matlab在矩陣求逆中的應(yīng)用,旨在增強(qiáng)學(xué)生對線性代數(shù)的學(xué)習(xí)興趣,提高學(xué)生的學(xué)習(xí)積極性和數(shù)值計(jì)算能力。
[關(guān) 鍵 詞] Matlab;矩陣求逆;線性代數(shù)
[中圖分類號] G642 [文獻(xiàn)標(biāo)志碼] A [文章編號] 2096-0603(2016)18-0016-01
一、引言
線性代數(shù)是一門應(yīng)用性極強(qiáng)但理論上又具有高度抽象性的基礎(chǔ)課程,其包含的數(shù)學(xué)原理和方法廣泛應(yīng)用于控制、機(jī)械及信息工程等領(lǐng)域。瑞典數(shù)學(xué)家Lars Garding說:“如果不熟悉線性代數(shù)的概念,要去學(xué)習(xí)自然科學(xué),現(xiàn)在看來就和文盲差不多。”然而抽象的理論、繁瑣的計(jì)算往往讓學(xué)生感受不到線性代數(shù)理論體系存在的實(shí)際意義,難以調(diào)動學(xué)生的學(xué)習(xí)積極性,學(xué)生也很難體會到其在科學(xué)與工程應(yīng)用領(lǐng)域中的重要地位。
Matlab是一種以矩陣計(jì)算為基礎(chǔ)的交互式程序語言,擁有強(qiáng)大的科學(xué)計(jì)算和可視化圖形處理功能。而線性代數(shù)的主角就是矩陣及其運(yùn)算,因此將Matlab引入線性代數(shù)課堂教學(xué),可以提高學(xué)生的數(shù)值計(jì)算能力,激發(fā)學(xué)生的學(xué)習(xí)興趣,有利于教學(xué)質(zhì)量的提高。
本文主要結(jié)合線性代數(shù)中矩陣求逆這一知識點(diǎn),深入探討如何借助Matlab軟件來求矩陣的逆。
二、矩陣求逆的方法
設(shè)矩陣A(aij)n×n是n階方陣,E是n階單位矩陣,并假方陣可逆。下面詳細(xì)介紹求解逆矩陣的方法:
方法一:借助逆矩陣的定義,利用待定系數(shù)法求矩陣A的逆。設(shè)B是由n2個(gè)未知數(shù)組成的n階方陣滿足,利用矩陣的乘法運(yùn)算將其展開可得一個(gè)含n2個(gè)未知量的線性方程組,應(yīng)用高斯消元法求解該線性方程組。如果該方程組有唯一解,此時(shí)即可得到矩陣A的逆矩陣。但當(dāng)矩陣A的階數(shù)比較高時(shí),利用該方法求逆運(yùn)算量將非常大。
方法二:借助伴隨矩陣來求解矩陣A的逆:此時(shí),A-1=A*A其中A*為A的伴隨矩陣;注意伴隨矩陣A*的第i行第j列的元素是aji的代數(shù)余子式。利用該方法求矩陣A的逆需要計(jì)算1個(gè)n階行列式和n2個(gè)n-1階行列式,因此應(yīng)用該方法求解高階矩陣的逆時(shí),計(jì)算量非常大。
方法三:借助初等變換來求解矩陣A的逆:該方法的基本思路是構(gòu)造一個(gè)n×2n階矩陣A=A E,對A進(jìn)行初等行變換,當(dāng)子塊A所在部分化為單位矩陣E時(shí),子塊E所在部分就被化為A-1;類似地也可以借助初等列變換來得到矩陣A的逆矩陣。
上述三種方法都可以用來求解矩陣的逆,但當(dāng)矩陣的階數(shù)比較高時(shí),計(jì)算將變得非常復(fù)雜。此時(shí)為激發(fā)學(xué)生的學(xué)習(xí)興趣,增強(qiáng)學(xué)生應(yīng)用數(shù)學(xué)知識解決實(shí)際問題的能力,可以將Matlab引入課堂教學(xué),使學(xué)生了解到數(shù)學(xué)不是枯燥乏味的,它具有很強(qiáng)的實(shí)用性。
下面通過一個(gè)具體的例子來詳細(xì)介紹如何利用Matlab來進(jìn)行矩陣求逆運(yùn)算。
①調(diào)用求逆命令inv
>>B=inv(A)
②調(diào)用左除命令或右除命令,其中表示階單位矩陣,運(yùn)算符“\”“/”分別表示左除和右除。眾所周知,在矩陣?yán)碚撝袥]有矩陣除法的概念,但在Matlab中可以把乘以逆矩陣看作除法。程序如下:
>>E=eye(5),B=A\E(或B=E/A)
③調(diào)用求行列式命令det.首先定義伴隨矩陣函數(shù)adj,M函數(shù)文件編寫如下:
function adj=adj(A,n)
adj=zeros(n);
for i=1:n
for j=1:n
adj(j,i)=(-1)^(i+j)*det(A([1:i-1,i+1:n],[1:i-1,i+1:n]));
end
end
程序如下:
>>B=adj(A,5)/det(A)
④調(diào)用最簡行階梯形命令rref.程序如下:
>>R=rref([A eye(5)]),B=R(:,6:10)
三、結(jié)束語
在線性代數(shù)教學(xué)中適當(dāng)?shù)匾隡atlab,利用Matlab的強(qiáng)大計(jì)算功能,激發(fā)學(xué)生的學(xué)習(xí)興趣,提高課堂效率,讓學(xué)生在感覺到學(xué)有所用的同時(shí),提高學(xué)生的數(shù)值計(jì)算能力,為學(xué)生日后應(yīng)用該軟件進(jìn)行科學(xué)與工程計(jì)算打下良好的基礎(chǔ)。
參考文獻(xiàn):
[1]陳懷琛,龔杰民.線性代數(shù)實(shí)踐及MATLAB入門[M].北京:電子工業(yè)出版社,2009.
[2]李尚志.數(shù)學(xué)實(shí)驗(yàn)[M].北京:高等教育出版社,2004.
[3]同濟(jì)大學(xué)數(shù)學(xué)系.工程數(shù)學(xué)線性代數(shù)[M].北京:高等教育出版社,2014.
[4]王沫然.MATLAB與科學(xué)計(jì)算[M].北京:電子工業(yè)出版社,2003.