本篇为MIT公开课——线性代数 笔记。
乘积的逆
两矩阵 \(A、B\) 相乘,且他们的逆均已知,那么他们的乘积 \((A.B)\) 的逆是什么?
先说结果,\((A.B)\) 的逆就是 \((B^{-1}.A^{-1})\) ,即
\[(A.B)(B^{-1}.A^{-1})=I
\]
我们可以把括号消掉,根据乘法结合律,就能得到单位矩阵。
为什么逆矩阵顺序要反过来?
就像:先脱鞋子,再脱袜子,那么其逆过程就是,先穿袜子,再穿鞋子。
就是说,矩阵乘法顺序不能交换,必须先合成一个单位矩阵,然后再把两边矩阵再合成单位矩阵。
同理,我们进行左乘\((B^{-1}.A^{-1})\)也可以得到单位矩阵,即
\[(B^{-1}.A^{-1})(A.B)=I
\]
转置
将矩阵的行列互换得到的新矩阵称为转置矩阵。
例如
\[A=\left(
\begin{array}{ccc}
1 & 2 & 3 \\
4 & 5 & 6 \\
\end{array}
\right)
\]
转置后,变为
\[A^T=\left(
\begin{array}{cc}
1 & 4 \\
2 & 5 \\
3 & 6 \\
\end{array}
\right)
\]
转置矩阵用右上标加 \(T\) 表示。他将 \(m*n\) 矩阵,变为 \(n*m\) 。
如果转置某可逆矩阵\(B\), 那么其转置\(B^{T}\)的逆是什么?
我们可以从\(B.B^{-1}=I\) 开始,
两边同时转置,单位矩阵因为其对称性,转置后还是单位矩阵,
\[\left(B^{-1}\right)^T。 B^T=I
\]
可以看出,\(B^T\) 的逆就是 \(\left(B^{-1}\right)^T\) ,也就是 \(B\) 的逆矩阵的转置。
A的LU分解
前面的课程我们从矩阵 \(A\) 得到上三角矩阵 \(U\) ,是否存在一个矩阵\(L\),直接描述 \(A\) 和\(U\) 联系?
\(2*2\) 矩阵
举例:我们将矩阵 \(A\) 消元,得到上三角矩阵 \(U\).(\(upper\))
\[\left(
\begin{array}{cc}
1 & 0 \\
-4 & 1 \\
\end{array}
\right).\left(
\begin{array}{cc}
2 & 1 \\
8 & 7 \\
\end{array}
\right)=\left(
\begin{array}{cc}
2 & 1 \\
0 & 3 \\
\end{array}
\right)
\]
\[E_{21}\quad.\quad A\quad\,\,\,\,\,= \quad U
\]
那么什么矩阵能让我们得到 \(A=L.U\) ?我们两边同时乘以 \(E_{21}\) 的逆,就能得到,\(L\) 就是\(E_{21}\) 的逆。注意两边都是左乘。
\[\left(
\begin{array}{cc}
2 & 1 \\
8 & 7 \\
\end{array}
\right)=\left(
\begin{array}{cc}
1 & 0 \\
4 & 1 \\
\end{array}
\right).\left(
\begin{array}{cc}
2 & 1 \\
0 & 3 \\
\end{array}
\right)
\]
\[A\quad=\quad L\quad\,\,\,\,\,. \quad U
\]
\(L\) 表示下三角矩阵(\(lower\))。
有时会把 \(U\) 的主元单独列出来:
\[\left(
\begin{array}{cc}
2 & 1 \\
8 & 7 \\
\end{array}
\right)=\left(
\begin{array}{cc}
1 & 0 \\
4 & 1 \\
\end{array}
\right).\left(
\begin{array}{cc}
2 & 0 \\
0 & 3 \\
\end{array}
\right).\left(
\begin{array}{cc}
1 & \frac{1}{2} \\
0 & 1 \\
\end{array}
\right)
\]
这个式子叫做 \(LDU\) 分解。
\(3*3\) 矩阵
假设矩阵 \(A\) ,我们通过消元得到 \(U\)
\[E_{32}.E_{31}.E_{21}.A=U
\]
矩阵 \(L\)就是各次消元矩阵的逆反顺序相乘:
\[A=E_{21}^{-1}.E_{31}^{-1}.E_{32}^{-1}.U
\]
到底为什么要写成这种逆的形式?而不用上面式子直接表示?
举例:
\[E_{21}=\left(
\begin{array}{ccc}
1 & 0 & 0 \\
-2 & 1 & 0 \\
0 & 0 & 1 \\
\end{array}
\right)\\
E_{31}=\left(
\begin{array}{ccc}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1 \\
\end{array}
\right)\\
E_{32}=\left(
\begin{array}{ccc}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & -5 & 1 \\
\end{array}
\right)
\]
其中 \(E_{31}\) 是单位矩阵,下面我们相乘
\[\left(
\begin{array}{ccc}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & -5 & 1 \\
\end{array}
\right).\left(
\begin{array}{ccc}
1 & 0 & 0 \\
-2 & 1 & 0 \\
0 & 0 & 1 \\
\end{array}
\right)=\left(
\begin{array}{ccc}
1 & 0 & 0 \\
-2 & 1 & 0 \\
10 & -5 & 1 \\
\end{array}
\right)
\]
这是要求的总的消元矩阵 \(E\)
然后进行逆反顺序相乘:
\[\left(
\begin{array}{ccc}
1 & 0 & 0 \\
2 & 1 & 0 \\
0 & 0 & 1 \\
\end{array}
\right).\left(
\begin{array}{ccc}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 5 & 1 \\
\end{array}
\right)=\left(
\begin{array}{ccc}
1 & 0 & 0 \\
2 & 1 & 0 \\
0 & 5 & 1 \\
\end{array}
\right)
\]
这就是要求的矩阵 \(L\)
可以看出,在L中不会出现像例子中E31(10)这项,这种因为消元产生的次生项,L比E更干净整洁,能一步到位写出来,这种书写能提高计算速度。
L矩阵只要得到主元的比值即可直接写出。
总结
对于 \(A=L.U\) ,如果不存在行交换,消元乘数可以直接写入 \(L\) 中。
意义
\(LU\) 分解的意义,在于优化计算速度(相比顺序高斯消元法)。
在一些实际应用场景中,如果求解方程 \(Ax=b\),系数矩阵 \(A\) 固定,\(b\) 是随输入变化的,求解不同的 \(x\)。这时 \(LU\) 分解就十分有用,通过将 \(A\) 预处理(分解),大大减少操作步骤。
通过将 \(A\) 分解,方程\(Ax=b\) 可以写成 \(L.(Ux)=b\) 形式,把\(Ux\) 替换为 \(y\) ,可以求解下面两个方程求解 \(x\) .
\[L y=b\\
U x=y
\]
引用在其他地方看到的例子说明:https://blog.csdn.net/wo94chunjie/article/details/103859745
已知
\[A=\left(
\begin{array}{cccc}
3 & -7 & -2 & 2 \\
-3 & 5 & 1 & 0 \\
6 & -4 & 0 & -5 \\
-9 & 5 & -5 & -12 \\
\end{array}
\right)=\left(
\begin{array}{cccc}
1 & 0 & 0 & 0 \\
-3 & 1 & 0 & 0 \\
6 & -4 & 1 & 0 \\
-9 & 5 & -5 & 1 \\
\end{array}
\right).\left(
\begin{array}{cccc}
3 & -7 & -2 & 2 \\
0 & -2 & -1 & 2 \\
0 & 0 & -1 & 0 \\
0 & 0 & 0 & -1 \\
\end{array}
\right)=\text{LU}\\
\]
假设 \(b=\left(
\begin{array}{c}
-9 \\
5 \\
7 \\
11 \\
\end{array}
\right)\)
应用 \(A\) 的 \(LU\) 分解求解 \(Ax=b\)
1)解 \(L y=b\) ,仅需6次乘法和6次加法
\[[L\quad U]=\left(
\begin{array}{ccccc}
1 & 0 & 0 & 0 & -9 \\
-3 & 1 & 0 & 0 & 5 \\
6 & -4 & 1 & 0 & 7 \\
-9 & 5 & -5 & 1 & 11 \\
\end{array}
\right)\rightarrow \left(
\begin{array}{ccccc}
1 & 0 & 0 & 0 & -9 \\
0 & 1 & 0 & 0 & -4 \\
0 & 0 & 1 & 0 & 5 \\
0 & 0 & 0 & 1 & 1 \\
\end{array}
\right)=[I\quad y]
\]
2)解 \(U x=y\) ,需要4次除法、6次乘法和6次加法
\[[U\quad y]=\left(
\begin{array}{ccccc}
3 & -7 & -2 & 2 & -9 \\
0 & -2 & -1 & 2 & -4 \\
0 & 0 & -1 & 1 & 5 \\
0 & 0 & 0 & -1 & 1 \\
\end{array}
\right)\rightarrow \left(
\begin{array}{ccccc}
1 & 0 & 0 & 0 & 3 \\
0 & 1 & 0 & 0 & 4 \\
0 & 0 & 1 & 0 & -6 \\
0 & 0 & 0 & 1 & -1 \\
\end{array}
\right)
\]
解得 \(x=\left(
\begin{array}{c}
3 \\
4 \\
-6 \\
-1 \\
\end{array}
\right)\)
以上过程共需28次算术运算,不包括求\(L\)和\(U\)的运算在内.
而一开始就采用消元法,将 \([A \quad x]\) 化简为 \([I \quad x]\),则需要62次运算,因为中间需要对大量分量元素参与。
步骤数
如果对 \(100*100\) 的矩阵进行高斯消元,得到上三角矩阵 \(U\) ,需要多少次操作?规定乘法+减法=一次操作。
对第一列消元大约 \(100^{2}\) 次。按照计算机思想,每一行有n个元素,按照改变一个元素的值算一次运算。
第二列就大约需要 \(99^{2}\) 次 ,以此类推。
\[\text{count}\approx 100^2+99^2+98^2+\text{...}+2^2+1^2
\]
得出规律:
\[\text{count}\approx n^2+(n-1)^2+(n-2)^2+\text{...}+2^2+1^2\approx\frac{n^3}{3}
\]
运用积分运算,对 \(x^{2}\) 从1到 \(n\) 积分 就可以算出。
考虑右侧向量 \(b\) ,需要对其进行 \(n^{2}\) 次操作。
置换矩阵
当出现主元为0 的情况下,我们就需要进行行交换。而置换矩阵可以用来进行行交换。
对于 3*3 矩阵,置换矩阵共有6种:
1.单元矩阵(不变): \(\left(\begin{array}{ccc}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1 \\
\end{array}
\right)\)
2.同时交换一次:
\(\left(
\begin{array}{ccc}
0 & 1 & 0 \\
1 & 0 & 0 \\
0 & 0 & 1 \\
\end{array}\right)\) , \(\left(
\begin{array}{ccc}
0 & 0 & 1 \\
0 & 1 & 0 \\
1 & 0 & 0 \\
\end{array}\right)\) , \(\left(
\begin{array}{ccc}
1 & 0 & 0 \\
0 & 0 & 1 \\
0 & 1 & 0 \\
\end{array}\right)\)
3.同时交换两次(想象每行同时向上循环移动一次):
\(\left(
\begin{array}{ccc}
0 & 1 & 0 \\
0 & 0 & 1 \\
1 & 0 & 0 \\
\end{array}\right)\),\(\left(
\begin{array}{ccc}
0 & 0 & 1 \\
1 & 0 & 0 \\
0 & 1 & 0 \\
\end{array}
\right)\) .
对于4*4矩阵,就共有24种。
置换性质
对3*3的置换求逆,会发现其逆都在这6个矩阵中,比如
\(\left(\begin{array}{ccc}
0 & 1 & 0 \\
1 & 0 & 0 \\
0 & 0 & 1 \\
\end{array}\right)\) 就是其本身,\(\left(
\begin{array}{ccc}
0 & 1 & 0 \\
0 & 0 & 1 \\
1 & 0 & 0 \\
\end{array}
\right)\),\(\left(
\begin{array}{ccc}
0 & 0 & 1 \\
1 & 0 & 0 \\
0 & 1 & 0 \\
\end{array}
\right)\) 互为逆。
置换矩阵的逆是其转置。