zoukankan      html  css  js  c++  java
  • 线性代数07.Ax=0:主变量,特解

    本篇为MIT公开课——线性代数 笔记。

    这节课开始我们将把重点转向如何在空间中计算出向量,由定义转向算法。

    (Ax=0)的求解

    求解(Ax=0) 的算法就是消元。

    举例

    [A=left( egin{array}{cccc} 1 & 2 & 2 & 2 \ 2 & 4 & 6 & 8 \ 3 & 6 & 8 & 10 \ end{array} ight) ]

    消元

    (E_{21}、E_{31}) 消元:

    主元是第一行第一列的"1",结果为

    [left( egin{array}{cccc} 1 & 2 & 2 & 2 \ 0 & 0 & 2 & 4 \ 0 & 0 & 2 & 4 \ end{array} ight) ]

    发现主元2出现0,而且行交换无效,说明:第二列相关于第一列,所以我们不去管第二列,继续找主元2:第二行第三列 "2".

    继续消元

    (E_{33}) 消元,结果为 阶梯形式矩阵 (U)

    [left( egin{array}{cccc} 1 & 2 & 2 & 2 \ 0 & 0 & 2 & 4 \ 0 & 0 & 0 & 0 \ end{array} ight)=U ]

    消元完后,就变成求解 (Ux=0)

    这个例子中,矩阵的主元的数量只有 (2) ,该数字称为矩阵的 “”(rank)。 它的意义就是表示主元的个数。

    主列和自由列

    主列:主元所在的列。其他列称为自由列。

    该例子中,主列是列 (1) 和列 (3).

    自由列是 列 (2) 和列 (4) .

    自由列的意思是,可以自由或任意分配数值给对应列的未知数。

    我们可以对列二和列四的乘数项 (x_{2}、x_{4}) 任意取值。

    然后只需要求解 (x_{1})(x_{3}).

    取值:

    [x=left( egin{array}{c} square \ 1 \ square \ 0 \ end{array} ight) ]

    回代和特解

    [x_1+2 x_2+2 x_3+2 x_4=0 \ 2 x_3+4 x_4=0 ]

    可以求得

    [x=left( egin{array}{c} -2 \ 1 \ 0 \ 0 \ end{array} ight) ]

    这是零空间的一个向量,也是(Ax=0) 的一个解。

    将她乘以任意倍数,就能得到四维空间中一条无限延申的直线。

    [x=cleft( egin{array}{c} -2 \ 1 \ 0 \ 0 \ end{array} ight) ]

    但它不是整个零空间,因为 (x_{2}、x_{4}) 还可以取其他的值。

    取值:

    [x=left( egin{array}{c} square \ 0 \ square \ 1 \ end{array} ight) ]

    可以求得另一个零空间中的向量:

    [x=dleft( egin{array}{c} 2 \ 0 \ -2 \ 1 \ end{array} ight) ]

    这样我们就得到零空间中的两个向量,下面我们就能求出整个零空间。 (Ax=0) 的所有解。

    这两个解称为特解,即特定的解。特定在于给自由变量分配特定值。给自由变量分配的是0和1. 每对自由变量都对应着一个特解。

    两个特解的所有的线性组合就是整个零空间。

    [x=cleft( egin{array}{c} -2 \ 1 \ 0 \ 0 \ end{array} ight)+dleft( egin{array}{c} 2 \ 0 \ -2 \ 1 \ end{array} ight) ]

    总结

    对于(m*n) 矩阵,(n) 变量,若 (r=2),主变量就有 r 个,自由变量 就有 (n-r)

    (r) 个主变量,表示只有 (r) 个方程起作用。

    剩下的 (n-r) 个自由变量可以任意赋值。

    简化行阶梯形式

    简化行阶梯形式我们称为 (R).她是对阶梯形式矩阵 (U) 的简化。

    [left( egin{array}{cccc} 1 & 2 & 2 & 2 \ 0 & 0 & 2 & 4 \ 0 & 0 & 0 & 0 \ end{array} ight)=U ]

    通过消元我们发现,行三全部是0的出现,是因为,行三是行一和行二的线性组合。消元会把它剔除。

    简化的方法就是"向上消元",让主元上方都是0.

    在主元二向上消元

    [left( egin{array}{cccc} 1 & 2 & 2 & 2 \ 0 & 0 & 2 & 4 \ 0 & 0 & 0 & 0 \ end{array} ight) ightarrow left( egin{array}{cccc} 1 & 2 & 0 & -2 \ 0 & 0 & 2 & 4 \ 0 & 0 & 0 & 0 \ end{array} ight) ]

    将结果再除以主元"2",解不变。

    因为(2 x_3+4 x_4=0)(x_3+2 x_4=0) 的解是一样的,除以某个倍数解不会变。所以我们可以再次化简,记为矩阵 (R)

    [left( egin{array}{cccc} 1 & 2 & 0 & -2 \ 0 & 0 & 1 & 2 \ 0 & 0 & 0 & 0 \ end{array} ight)=R ]

    现在所有主元都是"1"。这就是矩阵 (A) 的简化行阶梯形式。她可以通过matlab的 rref 函数得出来。

    这样我们就经过 ( ext{Ax}=0 ightarrow ext{Ux}=0 ightarrow ext{Rx}=0) 的过程。

    我们重新进行回代,通过 (R) 也可以求解两个特解。

    [x_1+2 x_2-2 x_4=0\ x_3+2 x_4=0\ ]

    解没有改变。

    设想:如果我们把 (R) 的主列和自由列各放在一边,即列交换:

    [left( egin{array}{cccc} 1 & 0 & 2 & -2 \ 0 & 1 & 0 & 2 \ 0 & 0 & 0 & 0 \ end{array} ight) ]

    左边两列是主列,右边两列就是自由列。

    第三行因为是前两行线性组合,不管她。

    左边得到一个单位矩阵 (I) ,右边自由部分记为 (F) .

    再看零空间:

    [x=cleft( egin{array}{c} -2 \ 1 \ 0 \ 0 \ end{array} ight)+dleft( egin{array}{c} 2 \ 0 \ -2 \ 1 \ end{array} ight) ]

    由于系数矩阵进行列交换,我们需要将她的两个特解行交换。

    [x=cleft( egin{array}{c} -2 \ 0 \ 1 \ 0 \ end{array} ight)+dleft( egin{array}{c} 2 \ -2 \ 0 \ 1 \ end{array} ight) ]

    会发现:

    (x_{1}、x_{3}) 的两个特解上半部分正好是自由部分的相反数。

    因为 (F) 回代后,需要移动到等式的另一侧,正好就是 (x_{1}、x_{3}) 的两个特解。

    零空间矩阵

    假设方程组已经是 (rref) 形式,即

    [R=left( egin{array}{cc} I & F \ 0 & 0 \ end{array} ight) ]

    (I)(r*r) 矩阵,于是有 (r) 个主行,(n-r) 个自由列, 我们要解 (Rx=0) .

    我们可以构建一个 “零空间矩阵”,记为 (N),她的各列由特解组成。

    简化行阶梯形式的目的在于,她可以一次性给出特解,

    什么 (N) 可以满足(RN=0) ,我们将 (I) 放在主变量位置,(-F) 放在自由变量位置,通过乘法法则,我们就能知道满足。

    [N=left( egin{array}{c} -F \ I \ end{array} ight) ]

    总结举例

    (Ax=0) 整个算法举例

    [A=left( egin{array}{ccc} 1 & 2 & 3 \ 2 & 4 & 6 \ 2 & 6 & 8 \ 2 & 8 & 10 \ end{array} ight) ]

    他有两个主元,因为第三列是前两列的线性组合。在消元过程中就会体现出哪些是主元行/列,并把相关项剔除。

    第一步:向下消元

    (E_{21}、E_{31}、E_{41})消元

    [left( egin{array}{ccc} 1 & 2 & 3 \ 2 & 4 & 6 \ 2 & 6 & 8 \ 2 & 8 & 10 \ end{array} ight) ightarrow left( egin{array}{ccc} 1 & 2 & 3 \ 0 & 0 & 0 \ 0 & 2 & 2 \ 0 & 4 & 4 \ end{array} ight) ]

    主元2为“0”,发现可以行交换解决:

    [left( egin{array}{ccc} 1 & 2 & 3 \ 0 & 0 & 0 \ 0 & 2 & 2 \ 0 & 4 & 4 \ end{array} ight) ightarrow left( egin{array}{ccc} 1 & 2 & 3 \ 0 & 2 & 2 \ 0 & 0 & 0 \ 0 & 4 & 4 \ end{array} ight) ]

    主元2为"2",继续向下消元,(E_{42}):

    [left( egin{array}{ccc} 1 & 2 & 3 \ 0 & 2 & 2 \ 0 & 0 & 0 \ 0 & 4 & 4 \ end{array} ight) ightarrow left( egin{array}{ccc} 1 & 2 & 3 \ 0 & 2 & 2 \ 0 & 0 & 0 \ 0 & 0 & 0 \ end{array} ight)=U ]

    第二步:特解

    秩为2.两个主变量 (x_{1}、x_{2})和一个自由变量 (x_{3})

    为自由变量赋上方便计算的数值,将(x_{3}) 取值 为1,因为取值为0求主变量,全部变量都是0,没有意义。

    [x=left( egin{array}{c} square \ square \ 1 \ end{array} ight) ]

    回代:

    [x_{1}+2x_{2}+3x_{3}=0\ 2x_{2}+2x_{3}=0 ]

    代入,可以求得特解

    [x=left( egin{array}{c} -1 \ -1 \ 1 \ end{array} ight) ]

    第三步:零空间

    将特解乘以某个倍数,即可得到整个零空间:

    [x=cleft( egin{array}{c} -1 \ -1 \ 1 \ end{array} ight) ]

    整个零空间是一条直线。

    第四步:简化矩阵(R)

    从最后面主元开始向上消元:

    [left( egin{array}{ccc} 1 & 2 & 3 \ 0 & 2 & 2 \ 0 & 0 & 0 \ 0 & 0 & 0 \ end{array} ight) ightarrow left( egin{array}{ccc} 1 & 0 & 1 \ 0 & 2 & 2 \ 0 & 0 & 0 \ 0 & 0 & 0 \ end{array} ight) ]

    行二可以除以主元2继续化简:

    [left( egin{array}{ccc} 1 & 0 & 1 \ 0 & 2 & 2 \ 0 & 0 & 0 \ 0 & 0 & 0 \ end{array} ight) ightarrow left( egin{array}{ccc} 1 & 0 & 1 \ 0 & 1 & 1 \ 0 & 0 & 0 \ 0 & 0 & 0 \ end{array} ight)=R ]

    (R) 中单位阵 (I=left( egin{array}{cc} 1 & 0 \ 0 & 1 \ end{array} ight)) ,自由部分 (F=left( egin{array}{c} 1 \ 1 \ end{array} ight)) .

    可以看到 (x) 的特解也包含

    (I=left( egin{array}{c} 1 \ end{array} ight)),

    (-F=left( egin{array}{c} -1 \ -1 \ end{array} ight))

    零空间矩阵 (N) 就是

    [N=left( egin{array}{c} -F \ I \ end{array} ight) ]

    她是将所有特解作为列的矩阵。

  • 相关阅读:
    用Python打造一款文件搜索工具,所有功能自己定义!
    Python+Excel+Word一秒制作百份合同
    只需6行代码,Python将PPT转为Word!
    老板让我从几百个Excel中查找数据,我用Python一分钟搞定!
    爬虫遇到头疼的验证码?Python实战讲解弹窗处理和验证码识别
    SoftEther服务端配置
    SoftEther服务端安装
    nginx学习
    zookeeper安装
    prometheus监控之自动发现
  • 原文地址:https://www.cnblogs.com/ckk-blog/p/13532656.html
Copyright © 2011-2022 走看看