機器學習之線性代數:單位矩陣與逆矩陣
已知某家庭近 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