本节课我们将从定义转换到算法, 如何解出 Ax=0A\mathbf{x}=\mathbf{0}Ax=0 .
取矩阵 A=[1222246836810]A=\begin{bmatrix} 1&2&2&2\\2&4&6&8\\3&6&8&10 \end{bmatrix}A=⎣⎡1232462682810⎦⎤ , 列1, 2在同一方向, 行1, 2, 3也线性相关, 这些将体现在消元中. 矩阵做行变换时不会改变方程的解, 也就不会改变零空间.对于我们消元的算法来说, 要注意什么是变化的, 什么是不变的.
消元:
[1222246836810]⟶[122200240024]
\begin{bmatrix}
\boxed1&2&2&2\\2&4&6&8\\3&6&8&10
\end{bmatrix}\longrightarrow\begin{bmatrix}
\boxed1&2&2&2\\0&0&\boxed2&4\\0&0&2&4
\end{bmatrix}
⎣⎡1232462682810⎦⎤⟶⎣⎡100200222244⎦⎤
消掉第一列后, 发现第二列下面变成0了, 这说明第二列是前面的列的线性组合. 我们继续找下一个主元:
[122200240024]⟶[122200240000]=U
\begin{bmatrix}
\boxed1&2&2&2\\0&0&\boxed2&4\\0&0&2&4
\end{bmatrix}\longrightarrow\begin{bmatrix}
\boxed1&2&2&2\\0&0&\boxed2&4\\0&0&0&0
\end{bmatrix}=U
⎣⎡100200222244⎦⎤⟶⎣⎡100200220240⎦⎤=U
第三行是全零, 说明第三行是前两行的线性组合.
我们最终得到了一种阶梯矩阵. 可以发现, 消元之后只有2个主元, 这个数字2称为该矩阵的秩(rank).
现在方程变为 Ux=0U\mathbf{x}=\mathbf{0}Ux=0 . 下一步我们要找出主变量(pivot variables), 主变量所在的列称为主列(pivot columns), 其余列称为自由列(free columns). 自由意味着, 这些列上的自由变量可以取任意数.
首先取 x2=1,x4=0x_2=1,x_4=0x2=1,x4=0 , 求得一组解 x=c[−2100]\mathbf{x}=c\begin{bmatrix} -2\\1\\0\\0 \end{bmatrix}x=c⎣⎢⎢⎡−2100⎦⎥⎥⎤ , 这并不是完整的零空间, 还可以取 x2=0,x4=1x_2=0,x_4=1x2=0,x4=1 , 求得另一组解 x=d[20−21]\mathbf{x}=d\begin{bmatrix} 2\\0\\-2\\1 \end{bmatrix}x=d⎣⎢⎢⎡20−21⎦⎥⎥⎤ . 于是所有的解是 x=c[−2100]+d[20−21]\mathbf{x}=c\begin{bmatrix} -2\\1\\0\\0 \end{bmatrix}+d\begin{bmatrix} 2\\0\\-2\\1 \end{bmatrix}x=c⎣⎢⎢⎡−2100⎦⎥⎥⎤+d⎣⎢⎢⎡20−21⎦⎥⎥⎤ , 也就是两个特解的线性组合. 零空间所包含的恰好是线性无关的特解的线性组合. 特解有多少个? 每个自由变量对应一个特解.
让我们把知识串联起来: 矩阵 Am×nA_{m\times n}Am×n 的秩为 rrr , 表示主变量的个数, 于是自由变量的个数就是 n−rn-rn−r , 也就是说起作用的变量只有 rrr 个, 其他变量可以自由取值, 也就是可以得到 n−rn-rn−r 个线性无关的特解.
我们还可以让矩阵看起来更干净. 用 RRR 表示简化行阶梯形式(reduced row echelon form)的矩阵. 对于 U=[122200240000]U=\begin{bmatrix}
1&2&2&2\\0&0&2&4\\0&0&0&0
\end{bmatrix}U=⎣⎡100200220240⎦⎤ , 可以继续向上消元, 可以让主元上方也变为全零, 再用方程除以主元, 可以让主元变为1:
[122200240000]→[120−200240000]→[120−200120000]=R
\begin{bmatrix}
1&2&2&2\\0&0&2&4\\0&0&0&0
\end{bmatrix}\rightarrow\begin{bmatrix}
1&2&0&-2\\0&0&2&4\\0&0&0&0
\end{bmatrix}\rightarrow\begin{bmatrix}
\boxed1&2&0&-2\\0&0&\boxed1&2\\0&0&0&0
\end{bmatrix}=R
⎣⎡100200220240⎦⎤→⎣⎡100200020−240⎦⎤→⎣⎡100200010−220⎦⎤=R
Matlab生成 RRR 的指令为 rref(A) . 可以发现上面的 RRR 中还包含了一个单位矩阵, 元素来自主元的行列. 我们通过 RRR 可以很快的计算出特解.
如果把含自由变量列的子矩阵称为 FFF , 可以得到, 典型情况下有 R=[IF00]R=\begin{bmatrix}
I&F\\0&0
\end{bmatrix}R=[I0F0] . 方程变为求 Rx=0R\mathbf{x}=\mathbf{0}Rx=0 , 我们想要一次求出所有特解, 可以创造一个零空间矩阵(列由特解组成) N=[−FI]N=\begin{bmatrix}
-F\\I
\end{bmatrix}N=[−FI] . Matlab生成 NNN 的指令为 null(A) .
原方程可以最终表示为 [IF][xpivotxfree]=0\begin{bmatrix} I&F \end{bmatrix}\begin{bmatrix} x_{pivot}\\x_{free} \end{bmatrix}=\mathbf{0}[IF][xpivotxfree]=0 .
本文探讨了解线性方程组Ax=0的方法,通过矩阵A的行变换达到消元目的,得到简化行阶梯形式矩阵U,并进一步简化至R。通过分析矩阵的秩、主元及自由变量,揭示零空间的本质,即线性无关特解的线性组合。文章详细介绍了如何利用简化矩阵快速求解特解,并展示了如何使用Matlab进行相关计算。
321

被折叠的 条评论
为什么被折叠?



