深度学习

线性代数(5) 行列式的性质

2020-07-27  本文已影响0人  zidea
linearalgebra.png

行列式转置

所谓转置就是把原来的行做成列就是转置的操作。转置符号就是用上标 T,矩阵的转置也是这样表示。有关转置在机器中也是一种对矩阵常见操作。在 numpy 提供了转置操作,对矩阵通过点 T 操作就可以对矩阵求转置。

转置

D = \left| \begin{array}{cccc} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ \end{array} \right|

D^T = \begin{bmatrix} 1 & 4 & 7\\ 2 & 5 & 8\\ 3 & 6 & 9\\ \end{bmatrix}

(D^T)^T = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ \end{bmatrix}

D= \left| \begin{array}{cccc} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9 \end{array} \right|

D^T= \left| \begin{array}{cccc} 1 & 4 & 7\\ 2 & 5 & 8\\ 3 & 6 & 9 \end{array} \right|

行列式性质

b = np.array([[1,2],[2,3]])
np.linalg.det(b) # -1
np.linalg.det(b.T) # -1

从上面代码执行结果来看,行列式转置值和行列式的值相等

a_1 = np.array([[1,2,3],[3,2,1],[1,3,3]])
np.linalg.det(a_1) # 8
a_2 = np.array([[3,2,1],[1,2,3],[1,3,3]])
np.linalg.det(a_2) # -8

接下来我们来看一个有趣行列式,我们会发现下面行列式 1 行 3 行相等,那么将 1 行 3 行互换后的行列式值和原行列式相等

D = \left| \begin{array}{cccc} 2 & 3 & 4 & 5\\ 1 & 0 & 0 & 0\\ 2 & 3 & 4 & 5\\ 5 & 6 & 7 & 8\\ \end{array} \right|
推论:两个行(列)相等,那么D=0
D = -D \rightarrow 2D = 0 \rightarrow D=0

推论: 某一行都有公因子 k 那么 ke 提取到行列式外面去。

a_3 =  np.array([[1,2,3],[3*2,2*2,1*2],[1,3,3]])
np.linalg.det(a_3) # 16

这里 16 = 8 * 2 也就是将 a_1 的第二行都乘以常数 2 后得到 a_3 的行列式值就是等于 a_1 行列式的值乘以 2.

a_5 =  np.array([[1*2,2*2,3*2],[3*2,2*2,1*2],[1*2,3*2,3*2]])
np.linalg.det(a_5) #64

行列式所有元素均有公因子,k 向外提取 n 次。

a_6 = np.array([[1,2,3],[2,4,6],[0,0,1]])
np.linalg.det(a_6) # 0

证明也很好理解
\left| \begin{array}{cccc} 1 & 2 & 3 \\ 2 & 4 & 6 \\ 0 & 0 & 1 \\ \end{array} \right| = 2 \left| \begin{array}{cccc} 1 & 2 & 3 \\ 1 & 2 & 3 \\ 0 & 0 & 1 \end{array} \right|

通过对第二行提取公因子 2 得到行列式两行相等,所以行列式值等于 0.

推论:如果行列式某一行全是 0 那么这个行列式为 0 。

a_7 = np.array([[1,2,3],[0,0,0],[0,0,1]])
np.linalg.det(a_7) #0

证明一下,我们可以把全部是 0 行看作其他行乘以 0 的结果,所以提出 0 公因子后两行就相等,所以行列式值为 0。

\left| \begin{array}{cccc} 1 & 2 & 3 \\ 2 + 3 & 3 + 4 & 5 + 6 \\ 2 & 2 & 1 \end{array} \right| = \left| \begin{array}{cccc} 1 & 2 & 3 \\ 2 & 3& 5 \\ 2 & 2 & 1 \end{array} \right| + \left| \begin{array}{cccc} 1 & 2 & 3 \\ 3 & 4 & 6 \\ 2 & 2 & 1 \end{array} \right|

这里比较主要我们来证明一下

\left| \begin{array}{cccc} 1 & 2 & 3 \\ 3 & 4 & 6 \\ 2 & 2 & 1 \end{array} \right| = \left| \begin{array}{cccc} 1 & 2 & 3 \\ 3 + 1 \times 2& 4 + 2 \times 2 & 6 + 3 \times2 \\ 2 & 2 & 1 \end{array} \right|

\left| \begin{array}{cccc} 1 & 2 & 3 \\ 3 + 1 \times 2& 4 + 2 \times 2 & 6 + 3 \times2 \\ 2 & 2 & 1 \end{array} \right| = \left |\begin{array}{cccc} 1 & 2 & 3 \\ 3 & 4 & 6 \\ 2 & 2 & 1 \end{array} \right| + 2 \times \left| \begin{array}{cccc} 1 & 2 & 3 \\ 1 & 2 & 3 \\ 2 & 2 & 1 \end{array} \right|

a_6 = np.array([[1,2,3],[3,4,6],[2,2,1]])
np.linalg.det(a_6) #4
a_8 = np.array([[1,2,3],[3 + 1 *2,4 + 2 *2 ,6 + 3*2],[2,2,1]])
np.linalg.det(a_8) #4
上一篇 下一篇

猜你喜欢

热点阅读