Wang Haihua
🍈 🍉🍊 🍋 🍌
矩阵的操作很简单,加法性质如下:
矩阵乘法性质如下
矩阵的乘法通常不满足交换律 $\pmb{AB} \neq \pmb{BA}$. 例如 $\pmb A$ , $\pmb B$: $$A=\left[\begin{matrix}3 & 4\\7 & 8\end{matrix}\right]$$ $$B=\left[\begin{matrix}5 & 3\\2 & 1\end{matrix}\right]$$ $$AB=\left[\begin{matrix}23 & 13\\51 & 29\end{matrix}\right]$$ $$BA=\left[\begin{matrix}36 & 44\\13 & 16\end{matrix}\right]$$
矩阵 $A_{n\times m}$ 以及它的转置为 $$A=\left[\begin{matrix}1 & 2 & 3\\4 & 5 & 6\end{matrix}\right]$$ $$A^T=\left[\begin{matrix}1 & 4\\2 & 5\\3 & 6\end{matrix}\right]$$
单位矩阵的性质: $$ AI=IA = A $$
初等矩阵是一个可以从单位矩阵的一个初等行运算得到的矩阵。 如
$$
\left[\begin{matrix}1 & 0 & 0\cr 0 & 1 & 0\cr 0 & 0 & 1\end{matrix}\right]\ \matrix{R_1\leftrightarrow R_2\cr ~\cr ~}\qquad\Longrightarrow\qquad \left[\begin{matrix}0 & 1 & 0\cr 1 & 0 & 0\cr 0 & 0 & 1\end{matrix}\right]
$$
上面的初等矩阵是通过交换第一行和第二行得到的,我们把它表示为 $\pmb{E}$, 我们将 $\pmb E$ 左乘 $\pmb A$.
$$A=\left[\begin{matrix}80 & 13 & 47\\33 & 14 & 21\\99 & 98 & 0\end{matrix}\right]$$$$E=\left[\begin{matrix}0 & 1 & 0\\1 & 0 & 0\\0 & 0 & 1\end{matrix}\right]$$$$EA=\left[\begin{matrix}33 & 14 & 21\\80 & 13 & 47\\99 & 98 & 0\end{matrix}\right]$$得到的结果是$\pmb A$ 也叫换了第一行与第二行的位置.
在单位矩阵中把一行的倍数加到另一行上也能得到初等矩阵
$$ \left[\begin{matrix}1 & 0 & 0\cr 0 & 1 & 0\cr 0 & 0 & 1\end{matrix}\right]\ \matrix{~\cr ~\cr R_3-7R_1}\qquad\longrightarrow\left[\begin{matrix}1 & 0 & 0\cr 0 & 1 & 0\cr -7 & 0 & 1\end{matrix}\right] $$$$A=\left[\begin{matrix}29 & 18 & 0\\84 & 52 & 23\\77 & 24 & 15\end{matrix}\right]$$$$E=\left[\begin{matrix}1 & 0 & 0\\0 & 1 & 0\\-7 & 0 & 1\end{matrix}\right]$$$$EA=\left[\begin{matrix}29 & 18 & 0\\84 & 52 & 23\\-126 & -102 & 15\end{matrix}\right]$$我们将看到初等矩阵乘法的一个重要结论:可逆矩阵是一系列初等矩阵的乘积。
If $\pmb{AB}=\pmb{BA}=\mathbf{I}$, $\pmb B$ 被称为$\pmb A$的逆,写作 $\pmb B= \pmb A^{-1}$.
计算逆矩阵的一种方便的方法是构造增广矩阵$[\pmb A\,|\,\mathbf{I}]$, 然后左乘一系列初等矩阵 $\pmb E$这些初等矩阵会对矩阵进行行变换,直到变成单位矩阵, i.e. $\pmb A \rightarrow \mathbf{I}$. 然后 $I$ 右侧的单位矩阵会自动变成 逆矩阵$\pmb A^{-1}$.
$$A=\left[\begin{matrix}48 & 0 & 30\\63 & 0 & 34\\16 & 43 & 22\end{matrix}\right]$$$$\left[\begin{matrix}48 & 0 & 30 & 1 & 0 & 0\\63 & 0 & 34 & 0 & 1 & 0\\16 & 43 & 22 & 0 & 0 & 1\end{matrix}\right]$$将左侧转化为单位矩阵 $$\left( \left[\begin{matrix}1 & 0 & 0 & - \frac{17}{129} & \frac{5}{43} & 0\\0 & 1 & 0 & - \frac{421}{5547} & \frac{96}{1849} & \frac{1}{43}\\0 & 0 & 1 & \frac{21}{86} & - \frac{8}{43} & 0\end{matrix}\right], \ \left( 0, \ 1, \ 2\right)\right)$$ 右侧即为逆矩阵 $A^{-1}$
可以验证$AA^{-1}=\mathbf{I}$
确定 $\lambda$ 使得矩阵 $$A=\left[ \begin{matrix}3 &\lambda &1\cr 2 & -1 & 6\cr 1 & 9 & 4\end{matrix}\right]$$ 是不可逆的 $$\left[\begin{matrix}3 & \lambda & 1\\2 & -1 & 6\\1 & 9 & 4\end{matrix}\right]$$
首先构造$[A\,|\,I]\sim [I\,|\,A^{-1}]$ $$\left[\begin{matrix}3 & \lambda & 1 & 1.0 & 0.0 & 0.0\\2 & -1 & 6 & 0.0 & 1.0 & 0.0\\1 & 9 & 4 & 0.0 & 0.0 & 1.0\end{matrix}\right]$$
接下来将左侧转化为单位矩阵 $$\left( \left[\begin{matrix}1 & 0 & 0 & \frac{116.0}{4.0 \lambda + 310.0} & \frac{1.0 \left(8.0 \lambda - 18.0\right)}{4.0 \lambda + 310.0} & - \frac{1.0 \left(12.0 \lambda + 2.0\right)}{4.0 \lambda + 310.0}\\0 & 1 & 0 & \frac{4.0}{4.0 \lambda + 310.0} & - \frac{22.0}{4.0 \lambda + 310.0} & \frac{32.0}{4.0 \lambda + 310.0}\\0 & 0 & 1 & \frac{57.0}{- 6 \lambda - 465} & - \frac{1.0 \left(1.0 \lambda - 27.0\right)}{2.0 \lambda + 155.0} & \frac{1.0 \left(2.0 \lambda + 3.0\right)}{2.0 \lambda + 155.0}\end{matrix}\right], \ \left( 0, \ 1, \ 2\right)\right)$$
为了使$A$ 可逆必须满足: \begin{align} -6\lambda -465 &\neq0\\ \end{align}
import sympy as sy
def pl(m):
x= '$$'+sy.latex(m)+'$$'
print(x)
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
%matplotlib inline
a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z = sy.symbols('a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z', real = True)
A = sy.Matrix([[a, b, c], [d, e, f]])
A + A
A - A
B = sy.Matrix([[g, h, i], [j, k, l]])
A + B
A - B
pl(A+B)
$$\left[\begin{matrix}a + g & b + h & c + i\\d + j & e + k & f + l\end{matrix}\right]$$
A = sy.Matrix([[a, b, c], [d, e, f]])
B = sy.Matrix([[g, h, i], [j, k, l], [m, n, o]])
pl(A*B)
$$\left[\begin{matrix}a g + b j + c m & a h + b k + c n & a i + b l + c o\\d g + e j + f m & d h + e k + f n & d i + e l + f o\end{matrix}\right]$$
A = sy.Matrix([[3, 4], [7, 8]])
B = sy.Matrix([[5, 3], [2, 1]])
A = sy.Matrix([[1, 2, 3], [4, 5, 6]]); A
A.transpose()
A = sy.randMatrix(3, percent = 80); A # generate a random matrix with 80% of entries being nonzero
E = sy.Matrix([[0, 1, 0], [1, 0, 0], [0, 0, 1]]);E
A = sy.randMatrix(3, percent = 80); A
E = sy.Matrix([[1, 0, 0], [0, 1, 0], [-7, 0, 1]]); E
A = sy.randMatrix(3, percent = 80); A
I = np.eye(3).astype('int'); I
array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
AI = np.hstack((A, I)) # stack the matrix A and I horizontally
AI = sy.Matrix(AI); AI
pl(AI)
$$\left[\begin{matrix}48 & 0 & 30 & 1 & 0 & 0\\63 & 0 & 34 & 0 & 1 & 0\\16 & 43 & 22 & 0 & 0 & 1\end{matrix}\right]$$
AI_rref = AI.rref(); AI_rref[0]
lamb = sy.symbols('lamda') # SymPy will automatically render into LaTeX greek letters
A = np.array([[3, lamb, 1], [2, -1, 6], [1, 9, 4]])
I = np.eye(3)
AI = np.hstack((A, I))
AI = sy.Matrix(AI)
AI_rref = AI.rref()
AI_rref[0]