這裡會使用到NumPy套件,請讀者先行安裝。首先來看看怎麼使用NumPy定義一個矩陣:
# Matrix A
A = np.array(
[
[1, 2, 4],
[5, 3, 6],
[8, 9, 7]
])
# Matrix B
B = np.array(
[
[7, 8, 9],
[6, 5, 4],
[3, 1, 1]
])
上面的程式碼含有兩個矩陣A與B,接著我們可以使用Python的運算子:+, -, *, / ,來對矩陣的元素做加減乘除運算。
# Matrix operations
print("A + B")
print(A + B)
print("A - B")
print(A - B)
print("A * B")
print(A * B)
print("A / B")
print(A / B)
好,那我們先來解個線性方程式(下圖取自Wiki):
# Matrix A
A = np.array(
[
[3, 2, -1],
[2, -2, 4],
[-1, 0.5, -1]
])
# Matrix B
B = np.array(
[1, -2, 0]
)
print("Solution:")
print(np.linalg.solve(A, B))
上面的程式碼中的np.linalg.solve(A, B) 就可以幫我們解出這個線性方程式的解,是不是很方便呢?除了solve這個方便的function之外,NumPy還提供了很多常用的線性代數函數:
- dot:內積。
- trace: 計算對角線元素的和。
- det:計算行列式的值。
- eig:求出eigenvalue與eigenvector。
- inv:求出逆矩陣
- qr:QR分解
- svd:SVD分解
- solve:解線性方程式。
那這些線性代數的方法可以用在什麼地方呢?以現在的聊天機器人來說,有用SVD為基礎來做文字語意的分析。此外,線性代數也是深度學習(MIT出版的Deep Learning一書的第二章)的數學基礎之一。那為什麼在使用電腦做運算時,線性代數會有很大的關連?
沒有留言:
張貼留言