python實現矩陣求行列式的值

2021-06-01 07:01:38 字數 1639 閱讀 5070

後註:這個函式只對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甚至手動計算是幾乎不可能的,故在這裡...