參考鏈接:https://cloud.tencent.com/developer/article/1594842
另外參考了張宇的考研視頻。
1. 基本知識
一、行列式的定義與性質
1. 幾何法定義
二階行列式的值為平時四邊形的面積。
![]()
面積表示如下:

三階行列式表示的是平行六面體的體積。
依次類推:n階行列式表示的就是n個n維向量為鄰邊的n維圖形的體積。
可以把行列式看作一個算式。
2. 逆序法定義

有以下相關點:
(1)展開后有n!個項;
(2)每項取自不同行、不同列n個元素的乘積;
(3)行下標順序排列后,每項前乘以
。
稱作j1 j2 ... jn的逆序數。
逆序數的概念:平時我們說的1 2叫做順序,4 3就叫做逆序(也就是大的數在前,小的數在后)。
如t(6 4 1 2 3 5)的逆序數就是8。
3. 展開法定義

行列式等於它的任一行(列)的各元素與其對應的代數余子式乘積之和。
2. python代碼實現
python的numpy庫提供了用於進行行列式計算的庫函數,使用起來很方便。
代碼實現如下:
1 # encoding: utf-8 2 3 import os 4 import numpy as np 5 from numpy.linalg import det 6 7 8 def test_2d_linalg(): 9 D2 = np.arange(4).reshape(2, 2) 10 val = det(D2) 11 print (D2) 12 print (val) 13 14 15 def test_3d_linalg(): 16 D3 = np.arange(9).reshape(3, 3) 17 val = det(D3) 18 print (D3) 19 print (val) 20 21 22 def test_multiD_linalg(): 23 data = [[1, 2, 3, 4, 5], [2, 2, 2, 1, 1], [3, 1, 2, 4, 5], [1, 1, 1, 2, 2], [4, 3, 1, 5, 0]] 24 d5 = np.array(data) 25 print (d5) 26 print (det(d5)) 27 28 29 if __name__ == "__main__": 30 31 test_2d_linalg() 32 33 test_3d_linalg() 34 35 test_multiD_linalg()
輸出結果:
1 [[0 1] 2 [2 3]] 3 -2.0 4 [[0 1 2] 5 [3 4 5] 6 [6 7 8]] 7 0.0 8 [[1 2 3 4 5] 9 [2 2 2 1 1] 10 [3 1 2 4 5] 11 [1 1 1 2 2] 12 [4 3 1 5 0]] 13 26.99999999999999
總結:對如何用工具或代碼生成數學公式還不了解,導致這篇博客寫得很僵硬。
