What & How & Why

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
math:linear_algebra:matrix_engineers:week2 [2023/11/27 10:04] – [Elementry Matrix] codingharemath:linear_algebra:matrix_engineers:week2 [2023/11/28 02:28] (当前版本) – [使用 LU 分解求解方程] codinghare
行 110: 行 110:
 以 $I$ 作为基础: 以 $I$ 作为基础:
   * 做加法的时候,需要将要加到当前行的行所在列的 $0$ 改为对应的数字。比如我们想将 $R2$ 加到 $R3$ 上,也就是 $R3 = R2 + R3$,那么就应该在 $I$ 中找到 $R3$ 所在的第三行,然后将 $R2$ 对应的矩阵元素($a_{32}$)从 $0$ 改为 $1$:\\    * 做加法的时候,需要将要加到当前行的行所在列的 $0$ 改为对应的数字。比如我们想将 $R2$ 加到 $R3$ 上,也就是 $R3 = R2 + R3$,那么就应该在 $I$ 中找到 $R3$ 所在的第三行,然后将 $R2$ 对应的矩阵元素($a_{32}$)从 $0$ 改为 $1$:\\ 
-{{ :math:linear_algebra:matrix_engineers:elementry_m_add.svg?400 |}}+{{ :math:linear_algebra:matrix_engineers:elementry_m_add.svg?300 |}}
   * 做乘法就更简单了,只要将上面行所在的位置的数字改为运算中的倍数即可。比如上例,如果改为 $R3 = 2R2 + R3$,那么对应的初等矩阵就如下所示:\\    * 做乘法就更简单了,只要将上面行所在的位置的数字改为运算中的倍数即可。比如上例,如果改为 $R3 = 2R2 + R3$,那么对应的初等矩阵就如下所示:\\ 
-{{ :math:linear_algebra:matrix_engineers:elementry_m_multi.svg?400 |}}+{{ :math:linear_algebra:matrix_engineers:elementry_m_multi.svg?300 |}}
 <WRAP center round box 100%> <WRAP center round box 100%>
 高斯消元法是对**行**进行操作。因此使用初等矩阵作为变换方式,需要进行**左乘**。 高斯消元法是对**行**进行操作。因此使用初等矩阵作为变换方式,需要进行**左乘**。
行 121: 行 121:
 $$ $$
 初等矩阵用 $M$ 表示。初等矩阵的数量表示一共应用了多少次(初等)变换。 初等矩阵用 $M$ 表示。初等矩阵的数量表示一共应用了多少次(初等)变换。
-===LU Decomposition===+==初等矩阵的逆矩阵== 
 +初等矩阵的逆矩阵并不需要计算。以之前的 $R3 2R2 + R3$ 为例,如果我们希望被改变的矩阵回到原来的状态,那么只需要对该运算进行反向操作即可,即 $R3 -2R2 + R3$,也就是初等矩阵中,只需要将原来的 $2$ 变为 $-2$ 即可。 
 +<WRAP center round box 100%> 
 +初等矩阵的逆矩阵就是对代表变换的元素求负。 
 +</WRAP>
  
 +===LU Decomposition===
 +假设 $A$ 通过如下三个矩阵进行高斯消元:
 +$$
 +M_3M_2M_1A = U
 +$$
 +$U$ 实际上是 3 次变换后的 $A$。如果希望还原 $A$,那么我们需要对 $U$ 连续进行三次逆矩阵变换。基于 $A$ 的三次变换是左乘,因此应用到 $U$ 上的逆矩阵应该做右乘,即:
 +$$
 +A = M^{-1}_1M^{-1}_2M^{-1}_3U
 +$$
 +假设高斯消元法的三次操作分别如下,那么对应的逆矩阵也如图所示:
 +\\ \\ 
 +{{ :math:linear_algebra:matrix_engineers:lu_decomp_1.svg?300 |}}
 +\\ 
 +我们发现,这$M^{-1}_1$,$M^{-1}_2$,$M^{-1}_3$实际上可以组成一个矩阵:
 +\\ \\ 
 +{{ :math:linear_algebra:matrix_engineers:lu_decomp_2.svg?300 |}}
 +\\ 
 +得到的矩阵 $L$ 是一个包含了之前三次初等变换的**下三角矩阵**。由于高斯消元得到的结果 $U$ 是一个**上三角矩阵**,因此我们把一个矩阵可以写成一个下三角矩阵与一个上三角矩阵的乘积的形式,称之为 $LU$ **分解**(//LU decompostion//),写作:
 +$$
 +A = LU
 +$$
 +==使用 LU 分解求解方程==
 +相对于高斯消元法来说,$LU$ 分解会将 $Ax=b$ 分解为 $LUx=b$ 来进行求解。具体来说为两个步骤:
 +  - 首先令 $Ux = y$,求出 $Ly = b$ 中 $y$ 的值。
 +  - 其次根据 $y$ 的值再根据 $Ux=y$ 进行 $x$ 的求解。
 +下面是一个具体的例子。假设有如下的 $LU$ 分解:
 +$$
 +A =
 +\begin{pmatrix}
 +  3&  -7& -2\\
 +  -3&  5& 1\\
 +  6&  -4& 0
 +\end{pmatrix}
 +=
 +\begin{pmatrix}
 +  1&  0& 0\\
 +  -1&  1& 0\\
 +  2&  -5&1
 +\end{pmatrix}
 +\begin{pmatrix}
 +  3&  -7& -2\\
 +  0&  -2& -1\\
 +  0&  0&-1
 +\end{pmatrix}
 +=LU
 +$$
 +如果有:
 +$$
 +b=
 +\begin{pmatrix}
 + -3\\
 + 3\\
 +2
 +\end{pmatrix}
 +$$
 +那么令 $Ux = y$,根据 $Ly=b$可以列出方程组:
 +\[
 +\begin{align*}
 + y1 &= −3\\
 + −y1 + y2 &= 3\\
 +2y1 − 5y2 + y3 &= 2
 +\end{align*}
 +\]
 +通过上面方程组,使用 //Forward subsitutaion// 求解出 $y$,再将 $y$ 带入到 $Ux = y$ 中,求解出 $x$ 的值即可。
 + <WRAP center round help 100%>
 +//LU// 分解的优势在于将参与运算的 $A$ 做了预处理;这样无论是什么样的 $b$,都可以使用预处理好的 $LU$ 进行计算;在需要计算大量不同的 $b$ 的时候会大大提升效率。
 +</WRAP>