第七节-求解Ax=0,主变量,特解

A x = 0 Ax=0 Ax=0算法

上一节我们讲解了列空间和零空间的定义,这些子空间包含哪些向量,那如何找到这些向量呢?本节将介绍零空间的计算方法,下一节讨论列空间。
还是从一个例子开始,假设矩阵 A = [ 1 2 2 2 2 4 6 8 3 6 8 10 ] A=\left[\begin{array}{ccc}1&2&2&2\\2&4&6&8\\3&6&8&10\end{array}\right] A=1232462682810,我们的算法还是从消元开始,因为消元不会改变方程组的解,也就是说不会改变列空间,这里有点特殊的地方是:

  • 右边都为 0 0 0,可以省略
  • 如果遇到主元为 0 0 0的情况(行交换无法解决),继续寻找下一个主元继续消元

A = [ 1 2 2 2 2 4 6 8 3 6 8 10 ] ⇒ [ [ 1 ] 2 2 2 0 0 2 4 0 0 2 4 ] ⇒ [ [ 1 ] 2 2 2 0 0 [ 2 ] 4 0 0 0 0 ] = U A=\left[\begin{array}{ccc}1&2&2&2\\2&4&6&8\\3&6&8&10\end{array}\right]\Rightarrow \left[\begin{array}{ccc}[1]&2&2&2\\0&0&2&4\\0&0&2&4\end{array}\right]\Rightarrow \left[\begin{array}{ccc}[1]&2&2&2\\0&0&[2]&4\\0&0&0&0\end{array}\right]=U A=1232462682810[1]00200222244[1]002002[2]0240=U
观察最终得到得矩阵 U U U,非零元素以阶梯形式出现,我们称为阶梯形式(echelon form)矩阵,这里主元又称为主变量(pivot variable),称主元的个数为矩阵的秩(rank),这个例子里是 2 2 2
接下来只要计算 U x = 0 Ux=0 Ux=0即可:
[ [ 1 ] 2 2 2 0 0 [ 2 ] 4 0 0 0 0 ] [ x 1 x 2 x 3 x 4 ] = 0 \left[\begin{array}{ccc}[1]&2&2&2\\0&0&[2]&4\\0&0&0&0\end{array}\right]\left[\begin{array}{ccc}x_1\\x_2\\x_3\\x_4\end{array}\right] = 0 [1]002002[2]0240x1x2x3x4=0
我们把矩阵 U U U中包含主变量的列称为主列(pivot column),其余列为自由列(free column),主列的个数显然就是矩阵的 r r r,自由列的个数就是 n − r n-r nr
主列很好理解,这里的自由列表示,其可以自由或任意分配数值,在这个例子里就是 x 2 x_2 x2 x 4 x_4 x4,然后通过回代求解 x 1 x_1 x1 x 3 x_3 x3即可。如:

  • 假设 x 2 = 1 , x 4 = 0 x_2=1,x_4=0 x2=1,x4=0,则可以得到 x ′ = [ − 2 1 0 0 ] x^{'}=\left[\begin{array}{ccc}-2\\1\\0\\0\end{array}\right] x=2100
  • 假设 x 2 = 0 , x 4 = 1 x_2=0,x_4=1 x2=0,x4=1,则可以得到 x ′ ′ = [ 2 0 − 2 1 ] x^{''}=\left[\begin{array}{ccc}2\\0\\-2\\1\end{array}\right] x=2021

这样求得的解,我们称为方程的特解,由上节所讲零空间性质可以知道,零空间所包含的就是所有特解的线性组合,那特解有多少个呢?特解的个数等于自由列的个数,即 n − r n-r nr

简化行阶梯形式

**简化行阶梯形式(reduce row echelon form)**是针对消元矩阵 U U U进行的进一步简化。它主要需要达到以下目的:

  1. 通过向上消元使得主元以上的元素也变为 0 0 0
  2. 将主元都变为 1 1 1

U = [ [ 1 ] 2 2 2 0 0 [ 2 ] 4 0 0 0 0 ] ⇒ [ [ 1 ] 2 0 − 2 0 0 [ 2 ] 4 0 0 0 0 ] ⇒ [ [ 1 ] 2 0 − 2 0 0 [ 1 ] 2 0 0 0 0 ] = R U=\left[\begin{array}{ccc}[1]&2&2&2\\0&0&[2]&4\\0&0&0&0\end{array}\right]\Rightarrow \left[\begin{array}{ccc}[1]&2&0&-2\\0&0&[2]&4\\0&0&0&0\end{array}\right]\Rightarrow \left[\begin{array}{ccc}[1]&2&0&-2\\0&0&[1]&2\\0&0&0&0\end{array}\right]=R U=[1]002002[2]0240[1]002000[2]0240[1]002000[1]0220=R
相当于Matlab里的 r r e f ( A ) rref(A) rref(A)命令。可以知道以上简化步骤不影响方程的解,因此我们求解就变成了 R x = 0 Rx=0 Rx=0,接下来我们把主列放在一起,把自由列放一起(交换未知数的位置)可以得到以下形式:
[ [ 1 ] 0 2 − 2 0 [ 1 ] 0 2 0 0 0 0 ] ⇒ [ I F 0 0 ] \left[\begin{array}{cc|cc}[1]&0&2&-2\\0&[1]&0&2\\\hline0&0&0&0\end{array}\right]\Rightarrow \left[\begin{array}{c|c}I&F\\\hline0&0\end{array}\right] [1]000[1]0200220[I0F0]
转换成这种形式是为了一次性得到所有特解,这样就可以得到了整个零空间,想象一下所有特解的组合应该是一个矩阵,形式我们把这种所有特解作为列的矩阵称为”零空间矩阵“,即为 N N N。那么如何得到这样的矩阵呢?即求解 R N = 0 RN=0 RN=0,由于我们做了列交换,方程变成了以下形式:
[ I F ] N = 0 ⇒ N = [ − F I ] \left[\begin{array}{cc}I&F\\\end{array}\right]N=0\Rightarrow N=\left[\begin{array}{c}-F\\I\\\end{array}\right] [IF]N=0N=[FI]
在本例中就是 [ − 2 2 0 2 1 0 0 1 ] \left[\begin{array}{cc}-2&2\\0&2\\1&0\\0&1\end{array}\right] 20102201。这两个特解跟之前通过求得的特解是一致的。
Matlab可以通过 n u l l null null指令求得 N N N,这个指令是如何工作的呢?

  1. 先通过 r r e f ( A ) rref(A) rref(A)指令求得 R R R,然后找出主变量和自由变量
  2. 1 1 1 0 0 0分配到自由变量,主变量通过回代进行计算,这里回代就非常简单了,即求解 [ I F ] [ x p i v o t x f r e e ] ⇒ x p i v o t = − F x f r e e ⇒ x p i v o t = − F \left[\begin{array}{cc}I&F\\\end{array}\right]\left[\begin{array}{cc}x_{pivot}\\x_{free}\\\end{array}\right]\Rightarrow x_{pivot}=-Fx_{free} \Rightarrow x_{pivot}=-F [IF][xpivotxfree]xpivot=Fxfreexpivot=F

这就是我们计算零空间矩阵的算法,下面我们再举一个例子来回顾一下这个过程,这里以 A T A^{\mathrm {T}} AT为例:

  1. 先进行消元计算 U U U

A = [ 1 2 3 2 4 6 2 6 8 2 8 10 ] ⇒ [ [ 1 ] 2 3 0 [ 2 ] 2 0 0 0 0 0 0 ] = U A=\left[\begin{array}{ccc}1&2&3\\2&4&6\\2&6&8\\2&8&10\end{array}\right]\Rightarrow \left[\begin{array}{ccc}[1]&2&3\\0&[2]&2\\0&0&0\\0&0&0\end{array}\right]=U A=1222246836810[1]0002[2]003200=U
这里的秩也为 2 2 2,矩阵与其转置的秩是相同的。这里的自由列数为 1 1 1,特解的个数也为 1 1 1,令 x 3 = 1 x_3=1 x3=1,可以求得 x = [ − 1 − 1 1 ] x=\left[\begin{array}{ccc}-1\\-1\\1\end{array}\right] x=111,这里的零空间就为 c [ − 1 − 1 1 ] c\left[\begin{array}{ccc}-1\\-1\\1\end{array}\right] c111,这是一条直线。

  1. 下面求解简化行阶梯矩阵

U = [ [ 1 ] 2 3 0 [ 2 ] 2 0 0 0 0 0 0 ] ⇒ [ [ 1 ] 0 1 0 [ 1 ] 1 0 0 0 0 0 0 ] U=\left[\begin{array}{ccc}[1]&2&3\\0&[2]&2\\0&0&0\\0&0&0\end{array}\right]\Rightarrow \left[\begin{array}{ccc}[1]&0&1\\0&[1]&1\\0&0&0\\0&0&0\end{array}\right] U=[1]0002[2]003200[1]0000[1]001100
可以看出这里 F = [ 1 1 ] F=\left[\begin{array}{ccc}1\\1\end{array}\right] F=[11],由于自由变量个数为 1 1 1,因此 I = 1 I=1 I=1,可以求得零空间矩阵为 [ − 1 − 1 1 ] \left[\begin{array}{ccc}-1\\-1\\1\end{array}\right] 111

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值