本 Wiki 开启了 HTTPS。但由于同 IP 的 Blog 也开启了 HTTPS,因此本站必须要支持 SNI 的浏览器才能浏览。为了兼容一部分浏览器,本站保留了 HTTP 作为兼容。如果您的浏览器支持 SNI,请尽量通过 HTTPS 访问本站,谢谢!
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
math:linear_algebra:matrix_engineers:week2 [2023/11/27 01:12] – [使用 RREF 计算逆矩阵] codinghare | math:linear_algebra:matrix_engineers:week2 [2023/11/28 02:28] (当前版本) – [使用 LU 分解求解方程] codinghare | ||
---|---|---|---|
行 89: | 行 89: | ||
* 该矩阵存在 //pivot// 不存在的情况。如果某一列存在 // | * 该矩阵存在 //pivot// 不存在的情况。如果某一列存在 // | ||
===使用 RREF 计算逆矩阵=== | ===使用 RREF 计算逆矩阵=== | ||
- | 由逆矩阵的定义可知,$AA^{-1}=I$。而 $AA^{-1}$ 可以被视作一个 //linear system// | + | 由逆矩阵的定义可知,$AA^{-1}=I$。而 $AA^{-1}$ 可以被视作一个 //linear system// |
{{ : | {{ : | ||
- | + | \\ | |
- | 因此,我们可以将 $A$ 视作已知矩阵,将 $I$ 视作结果组成一个 Augmented martix,并使用高斯消元来计算出 $A^{-1}$。 | + | 也就是说,在这个系统(方程组)里,我们知道了未知数的系数,也知道了每一个方程的结果,那么整个求逆矩阵的过程实际上就转化为了解方程组的过程。因此,我们可以将 $A$ 视作已知矩阵,将 $I$ 视作结果组成一个 Augmented martix,并使用高斯消元来计算出 $A^{-1}$。 |
<WRAP center round info 100%> | <WRAP center round info 100%> | ||
* 可逆矩阵的 //RREF// 必然是可逆的(矩阵变化为其 RREF 只经过了初等变换) | * 可逆矩阵的 //RREF// 必然是可逆的(矩阵变化为其 RREF 只经过了初等变换) | ||
行 103: | 行 103: | ||
{{ : | {{ : | ||
====LU Decomposition==== | ====LU Decomposition==== | ||
+ | ===Elementry Matrix=== | ||
+ | 在高斯消元法中,我们通常用到的有两种操作: | ||
+ | * 加法:将某一行加到另外一行上 | ||
+ | * 乘法:对每一行乘以一个常数 | ||
+ | 这两种操作被称为**初等变换**。如果将这类运算以矩阵的形式表现出来,那么我们称这类矩阵为**初等矩阵**(// | ||
+ | 以 $I$ 作为基础: | ||
+ | * 做加法的时候,需要将要加到当前行的行所在列的 $0$ 改为对应的数字。比如我们想将 $R2$ 加到 $R3$ 上,也就是 $R3 = R2 + R3$,那么就应该在 $I$ 中找到 $R3$ 所在的第三行,然后将 $R2$ 对应的矩阵元素($a_{32}$)从 $0$ 改为 $1$:\\ | ||
+ | {{ : | ||
+ | * 做乘法就更简单了,只要将上面行所在的位置的数字改为运算中的倍数即可。比如上例,如果改为 $R3 = 2R2 + R3$,那么对应的初等矩阵就如下所示:\\ | ||
+ | {{ : | ||
+ | <WRAP center round box 100%> | ||
+ | 高斯消元法是对**行**进行操作。因此使用初等矩阵作为变换方式,需要进行**左乘**。 | ||
+ | </ | ||
+ | 因此,高斯消元法可以表示为: | ||
+ | $$ | ||
+ | M_n...M_2M_1A = U | ||
+ | $$ | ||
+ | 初等矩阵用 $M$ 表示。初等矩阵的数量表示一共应用了多少次(初等)变换。 | ||
+ | ==初等矩阵的逆矩阵== | ||
+ | 初等矩阵的逆矩阵并不需要计算。以之前的 $R3 = 2R2 + R3$ 为例,如果我们希望被改变的矩阵回到原来的状态,那么只需要对该运算进行反向操作即可,即 $R3 = -2R2 + R3$,也就是初等矩阵中,只需要将原来的 $2$ 变为 $-2$ 即可。 | ||
+ | <WRAP center round box 100%> | ||
+ | 初等矩阵的逆矩阵就是对代表变换的元素求负。 | ||
+ | </ | ||
+ | |||
+ | ===LU Decomposition=== | ||
+ | 假设 $A$ 通过如下三个矩阵进行高斯消元: | ||
+ | $$ | ||
+ | M_3M_2M_1A = U | ||
+ | $$ | ||
+ | $U$ 实际上是 3 次变换后的 $A$。如果希望还原 $A$,那么我们需要对 $U$ 连续进行三次逆矩阵变换。基于 $A$ 的三次变换是左乘,因此应用到 $U$ 上的逆矩阵应该做右乘,即: | ||
+ | $$ | ||
+ | A = M^{-1}_1M^{-1}_2M^{-1}_3U | ||
+ | $$ | ||
+ | 假设高斯消元法的三次操作分别如下,那么对应的逆矩阵也如图所示: | ||
+ | \\ \\ | ||
+ | {{ : | ||
+ | \\ | ||
+ | 我们发现,这$M^{-1}_1$, | ||
+ | \\ \\ | ||
+ | {{ : | ||
+ | \\ | ||
+ | 得到的矩阵 $L$ 是一个包含了之前三次初等变换的**下三角矩阵**。由于高斯消元得到的结果 $U$ 是一个**上三角矩阵**,因此我们把一个矩阵可以写成一个下三角矩阵与一个上三角矩阵的乘积的形式,称之为 $LU$ **分解**(// | ||
+ | $$ | ||
+ | A = LU | ||
+ | $$ | ||
+ | ==使用 LU 分解求解方程== | ||
+ | 相对于高斯消元法来说,$LU$ 分解会将 $Ax=b$ 分解为 $LUx=b$ 来进行求解。具体来说为两个步骤: | ||
+ | - 首先令 $Ux = y$,求出 $Ly = b$ 中 $y$ 的值。 | ||
+ | - 其次根据 $y$ 的值再根据 $Ux=y$ 进行 $x$ 的求解。 | ||
+ | 下面是一个具体的例子。假设有如下的 $LU$ 分解: | ||
+ | $$ | ||
+ | A = | ||
+ | \begin{pmatrix} | ||
+ | 3& | ||
+ | -3& | ||
+ | 6& | ||
+ | \end{pmatrix} | ||
+ | = | ||
+ | \begin{pmatrix} | ||
+ | 1& | ||
+ | -1& | ||
+ | 2& | ||
+ | \end{pmatrix} | ||
+ | \begin{pmatrix} | ||
+ | 3& | ||
+ | 0& | ||
+ | 0& | ||
+ | \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// | ||
+ | < | ||
+ | //LU// 分解的优势在于将参与运算的 $A$ 做了预处理;这样无论是什么样的 $b$,都可以使用预处理好的 $LU$ 进行计算;在需要计算大量不同的 $b$ 的时候会大大提升效率。 | ||
+ | </ | ||
+ |