機器學習之線性代數:單位矩陣與逆矩陣

已知某家庭近 3 周對豬肉、牛肉、雞蛋消費支出分別爲 154 元、153 元、153 元,試計算該家庭每週對豬肉、牛肉、雞蛋的需求量。

豬肉、牛肉、雞蛋價格見下表:

可以列方程組求解,設該家庭每週對豬肉、牛肉、雞蛋的需求分別爲 x 千克、y 千克、z 千克,可列出三元一次方程組:

我們使用矩陣來解上面的方程組,方程組的係數用矩陣 A 表示,方程組的未知項用矩陣 x 表示,已知項用矩陣 b 表示。

方程組可表示爲:

 

若 A、x 和 b 不是矩陣,x 很容易求解:

矩陣沒有定義除法運算,1/A 對矩陣運算來說沒有意義,但我們可以引入單位矩陣和逆矩陣這兩個概念,來完成矩陣的除法運算。

在我們學過的數字中,1 是一個比較特別的數字,用數字 1 乘以任何數還是這個數。在矩陣運算中有沒有類似於數字 1 的矩陣呢?這就是單位矩陣。

單位矩陣是一個 n 階矩陣,該矩陣的主對角線(從矩陣的左上角到右下角這一斜線上的 n 個元素的位置,叫做 n 階矩陣的主對角線)元素都爲 1,其餘元素都爲 0。單位矩陣用大寫字母 I 表示。下圖是 3 階單位矩陣。

用 n 階單位矩陣乘以 n 階矩陣 A,結果還是 n 階矩陣 A,並且滿足乘法交換律。

若一個 n 階矩陣 A 與 n 階矩陣 B 相乘的結果是 n 階單位矩陣,則這個 n 階 B 矩陣稱爲 A 矩陣的逆矩陣。即:

A 的逆矩陣被記爲:

設 A 爲 n 階矩陣,A 與 A 的逆矩陣滿足如下條件:

因此對於方程組 Ax=b,我們可以得到 x 的解:

在上面的推導公式中,只要求出 A 的逆矩陣,再通過矩陣的乘法運算,就可以得到 x 的解。

要計算 A 的逆矩陣,可以使用伴隨矩陣法、待定係數法和初等變換法。計算逆矩陣是一個非常複雜的過程,特別是計算 3 階以上的逆矩陣。矩陣的運算可以交給 Python 程序來完成。

# 導入numpy庫
import numpy as np
# 定義矩陣A
A = np.array([[15,28,5],
             [12,31,6],
             [13,29,7]
            ])
# 定義矩陣b
b = np.array([[154,153,153]])
# 計算矩陣A的逆矩陣inverseA
inverseA = np.linalg.inv(A)
# 輸出A與其逆矩陣的乘積
print(np.matmul(inverseA,A))
# 求解x
x = np.matmul(inverseA,np.transpose(b))
# 輸出解x
print(x)

輸出結果如下圖所示:

從輸出結果可以看出,x=4,y=3,z=2。還注意看到矩陣 A 與其逆矩陣的乘積不完全是單位矩陣,這是因爲逆矩陣在數字計算機上只能表現出有限的精度,因此逆矩陣主要是作爲理論工具來使用。

n 階矩陣的逆矩陣也稱爲非奇異矩陣,否則稱爲奇異矩陣。判斷一個 n 階矩陣 A 是否可逆,要看矩陣 A 的行列式 | A | 是否等於零,若等於零,則矩陣 A 爲奇異矩陣,否則爲非奇異矩陣。若 A 爲奇異矩陣,則 AX=0 有無窮解,AX=b 有無窮解或者無解。若 A 爲非奇異矩陣,則 AX=0 有且只有唯一零解,AX=b 有唯一解。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Q3dymamoMNmCLWCYP8sVSQ