行列式 在數學中,是一個函數,其定義域為 nxn 的矩陣A,取值為一個純量,寫作或 det(A) 或 |A|. 對於簡單的2階和3階的矩陣,行列式的表達式相對簡單,而且恰好是每條主對角線(左上至右下)元素乘積之和減去每條副對角線(右上至左下)元素乘積之和(見圖中紅線和藍線):
- 簡單範例
求下面矩陣之行列式值 det(A) :
答案為 -6, 如果你要使用 numpy 套件來計算, 可以如下:
伴隨矩陣 : (adjugate matrix)
在線性代數中,一個方形矩陣的伴隨矩陣是一個類似於逆矩陣的概念. 如果矩陣可逆,那麼它的逆矩陣和它的伴隨矩陣之間只差一個係數. 在此之前先來看看了解 伴隨矩陣 需要知道的一些定義.
- 定義
考慮 A 是一個以 R 中元素為係數的 n×n 的矩陣. A的伴隨矩陣可按如下步驟定義 (參考至 wiki) :
- 簡單範例
來看看範例有助理解, 如果是二維矩陣 :
如果是三維矩陣 :
- Numpy 範例
考慮下面的 adjugate matrix :
使用 numpy 模組, 我們可以先建立一個函數 adjugate() 將傳入參數 matrix 以其對應的 adjugate matrix 回傳 :
- def adjugate(matrix):
- import numpy as np
- C = np.zeros(matrix.shape) # 初始化 Cofactor matrix
- nrows, ncols = C.shape # 取出 Cofactor matrix 的 row,col
- # Loop to calculate Cofactor
- for row in xrange(nrows):
- for col in xrange(ncols):
- minor = matrix[np.array(range(row)+range(row+1,nrows))[:,np.newaxis],
- np.array(range(col)+range(col+1,ncols))]
- C[row, col] = (-1)**(row+col) * np.linalg.det(minor) # 計算 Cij | i=row,j=col
- return C.transpose()
反矩陣 : (Invertible matrix)
在線性代數中,給定一個 n 階方陣 ,若存在一 n 階方陣,使得 :
則稱 A 是可逆的,且 B 是 A 的逆矩陣,記作 A^-1. 若方陣 A 的逆陣存在,則稱 A 為非奇異方陣或可逆方陣. 並且如果矩陣 A 可逆, 則 :
- 反矩陣之性質
- 簡單範例
- Numpy 範例
使用 numpy 模組, 可以如下取得某個 matrix 的 inverse matrix :
或者你可以利用 伴隨矩陣 的特性 來求得 反矩陣 :
其他 Numpy 矩陣操作 :
底下是一些常見 numpy 上提供的 matrix 操作 :
- n dimension 的 transpose
你可以透過 numpy.core.defmatrix.matrix 上的方法或屬性取的該 matrix 的 transpose matrix :
或者 ndarray 上也可進行同樣操作 :
補充說明 :
* Speed up python code for computing matrix cofactors
沒有留言:
張貼留言