上一講當(dāng)中我們復(fù)習(xí)了行列式的內(nèi)容,行列式只是開胃小菜,線性代數(shù)的大頭還是矩陣。 矩陣的定義很簡單,就是若干個數(shù)按照順序排列在一起的數(shù)表。比如m * n個數(shù),排成一個m * n的數(shù)表,就稱為一個m * n的矩陣。 矩陣運(yùn)算的相關(guān)性質(zhì)不多,主要的有這么幾點(diǎn):
很多人會覺得矩陣乘法比較復(fù)雜,不僅是計算復(fù)雜,而且經(jīng)常會記不清運(yùn)算的方法。會覺得復(fù)雜,可能只是因?yàn)槲覀儗⑺?dāng)做了數(shù)學(xué)公式來生硬的記憶,而沒有理解其中的原理。 我們不妨假設(shè)A和B分別是一個m*n和n*k的矩陣: 那么, 其中, Arowi指的是A矩陣中第i行的行向量,同樣Bcolj指的是B矩陣中第j列的列向量。 我們單從公式上來看不太容易理解,但我們可以轉(zhuǎn)變一下思路。將B不要當(dāng)做一個完整的矩陣,而當(dāng)做是k個列向量的集合,代表一種線性變換。將一個n維的向量線性變換到k維空間的變換。 那么A和B矩陣相乘的結(jié)果,其實(shí)也就意味著A矩陣當(dāng)中m個n維向量分別進(jìn)行線性變換之后組合成的新矩陣。向量的數(shù)量沒有變,還是m個,只不過維度從n變成了k,所以最終的結(jié)果是一個m*k的矩陣。 這點(diǎn)搞明白了之后,就到了接下來的重頭戲——逆矩陣。 我們先來看一下逆矩陣的定義,假設(shè)A是一個n階的方陣,如果存在一個矩陣B,使得A?B的結(jié)果是單位矩陣I,那么就稱B是A的逆矩陣。 計算逆矩陣需要用到之前介紹過的代數(shù)余子式,如果不清楚的同學(xué)可以回顧一下之前關(guān)于行列式的相關(guān)內(nèi)容。 我們列舉出所有的代數(shù)余子式,將這些余子式組合成一個矩陣,這樣的矩陣稱為伴隨矩陣。定義如下: 通過上面的定義,我們可以看出來,伴隨矩陣也是一個n階的方陣。關(guān)于伴隨矩陣,有一個定理: 其中I是n階的單位矩陣,也即是正對角線全為1,其他位置均為0的方陣。 我們來試著證明一下這個定理:
當(dāng)i=j時, 在上一篇文章當(dāng)中,我們介紹過,矩陣中的某一行與它對應(yīng)的代數(shù)余子式的乘積為行列式的值:
我們令 我們以B12為例:
根據(jù)我們之前關(guān)于代數(shù)余子式的定義,這個式子其實(shí)是以下這個矩陣行列式根據(jù)第一行展開的結(jié)果:
同樣展開其他的Bij,我們可以證明: 所以B=|A|I,使用同樣的方法,也可以證明A?A=|A|I 我們費(fèi)這么大力氣證明伴隨矩陣有什么用呢?其實(shí)是為了求逆矩陣做準(zhǔn)備。有了伴隨矩陣的這個性質(zhì),我們求逆矩陣就方便了。 在求解之前,我們先來看一下逆矩陣的定義。 假設(shè)存在方陣B,使得AB=BA=I,那么就稱作B是A的逆矩陣。 在我們介紹逆矩陣的計算方法之前,需要先明確,逆矩陣不等于矩陣轉(zhuǎn)置。矩陣轉(zhuǎn)置的操作是將一個矩陣行和列互換,在線性代數(shù)當(dāng)中,矩陣A的轉(zhuǎn)置記作AT,而A的逆矩陣記作A?1,看起來比較相似,很容易搞混。 我們之前證明了AA?=|A|I,當(dāng)矩陣A的行列式|A|不等于0時,那么顯然有: 根據(jù)我們之前逆矩陣的定義: 如果|A|=0怎么辦? 行列式等于0的矩陣稱為奇異矩陣,奇異矩陣沒有逆矩陣。所以一個矩陣有逆矩陣的前提就是非奇異矩陣。 以上就是逆矩陣的推導(dǎo)過程和計算方法,當(dāng)然在實(shí)際的應(yīng)用當(dāng)中,我們并不需要如此麻煩。因?yàn)镻ython的numpy庫當(dāng)中已經(jīng)為我們封裝好了現(xiàn)成的計算工具,我們只需要直接調(diào)用即可,使用方法和之前的計算行列式基本一樣: 通過調(diào)用np.linalg.inv方法來得到逆矩陣: |
|