行列式基本知識及代碼實現


參考鏈接: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()
View Code

輸出結果:

 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

總結:對如何用工具或代碼生成數學公式還不了解,導致這篇博客寫得很僵硬。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM