後註:這個函式只對2,3維矩陣有效,存檔在此,權當自嘲,這裡《python矩陣運算》實現了乙個有效的求行列式的演算法
python本身對科學計算支援的不夠,相關演算法都是numpy來實現的。最近資料探勘的專案需求,需要複習久違的線性代數的知識,下面的乙個計算矩陣行列式的演算法實現,權當複習連手。
def matrixgetdet(m):
length = len(m)
if length == 2:
return m[0][0]*m[1][1] - m[0][1]*m[1][0]
import itertools
# sum positive
positive = 0
indexer1 = itertools.cycle(range(length))
indexer2 = itertools.cycle(range(length))
for index in range(length):
indexer1.next()
_tmp = 1
for index in range(length):
index1 = indexer1.next()
index2 = indexer2.next()
_tmp *= m[index1][index2]
positive += _tmp
# sum negative
negative = 0
indexer1 = itertools.cycle(range(length))
indexer2 = itertools.cycle(range(length)[::-1])
for index in range(length):
indexer1.next()
_tmp = 1
for index in range(length):
index1 = indexer1.next()
index2 = indexer2.next()
_tmp *= m[index1][index2]
negative += _tmp
# return
return positive - negative
matrix1 = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 0],
]matrix2 = [
[1, 2],
[4, 5]
]matrix3 = [
[1, 0, 1],
[0, 1, 0],
[1, 0, 1],
]matrix4 = [
[1,2,3,4,5],
[2,3,4,5,1],
[3,4,5,1,2],
[4,5,1,2,3],
[5,1,2,3,4]
]print matrixgetdet(matrix1)
print matrixgetdet(matrix2)
print matrixgetdet(matrix3)
print matrixgetdet(matrix4)
輸出結果:
27-3
0-3825
矩陣行列式
對於乙個 n 行 n 列的矩陣 a 有矩陣的行列式 常用 det a a 表示 如果將矩陣的每一行視為乙個 n 維向量,則 n 階行列式的意義可以看做是 有向長度 面積 體積在 n 為空間下的擴充套件 具體的例子 n 1 時,a a 即有向長度 n 2 時,a a a a a vec times v...
行列式求值 矩陣求逆
include include include include include include include include using namespace std 動態分配大小位size的一維陣列 templatebool allocatememory1d t p,const int size ...
行列式與矩陣
說明 本公式只針對在二維或三通道的計算機視覺中所遇到的問題,不代表傳統意義上數學知識點範圍。矩陣的行列式,稱之為det,是基於矩陣所包含的行列資料計算得到的標量。本質上是乙個數。高階行列式計算比較複雜。對於三通道未進行壓縮的影象而言,描述該影象的矩陣所計算的det甚至手動計算是幾乎不可能的,故在這裡...