• 线性代数学习笔记4-3:求解齐次线性方程组Ax=0、消元法、行最简阶梯型矩阵RRFE


    本文讨论齐次线性方程组 A x = 0 \mathbf A \boldsymbol x=\boldsymbol 0 Ax=0的解

    这里我们主要研究 A \mathbf A A的列数 c o l col col大于行数 r o w row row的情况,这对应了:

    • 未知数个数>方程数
    • 几何意义:对应压缩降维的线性变换(列空间必为 R r o w \mathbf R^{row} Rrow的子空间,其维数小于变换前的空间 R c o l \mathbf R^{col} Rcol

    注意,对于 A x = 0 \mathbf A \boldsymbol x=\boldsymbol 0 Ax=0,必然有解,因为 0 ⃗ \vec 0 0 一定是一个解;
    我们进一步关心其解的集合(唯一解?无穷解?):解空间/零空间
    方程的所有可能解向量的集合

    • 线性变换不压缩空间时,有唯一零解(零空间为一个点);
    • 线性变换压缩空间时,有无穷个解(零空间为一条线/一个平面)

    消元法

    消元:化简方程为阶梯型矩阵

    如果有系数矩阵 A = [ 1 2 2 2 2 4 6 8 3 6 8 10 ] \mathbf A=

    [1222246836810]" role="presentation" style="position: relative;">[1222246836810]
    A= 1232462682810 ,经过消元后得到了系数矩阵 U = [ 1 2 2 2 0 0 2 4 0 0 0 0 ] \mathbf U=
    [122200240000]" role="presentation" style="position: relative;">[122200240000]
    U= 100200220240

    第三行全为0,说明:通过消元发现,矩阵的第三行是其他行的线性组合

    此处与5-1中介绍的高斯消元得到上三角阵的情况不同,这里的消元规则为:

    1. 由于是列数>行数,一定会出现“第 i i i行的第 i i i列位置不可避免地为0”的情况,此时我们使用本行第一个非0元素作为主元,继续消元(保证主元下方的列全为0)
    2. 最终必然出现阶梯型矩阵echelon form,记为 U \mathbf U U(意为类似“上三角”矩阵的矩阵,但并不是上三角矩阵)

    注意,这里的初等行变换,不改变列向量的关系,列空间不变,解空间/零空间也不变,而只是改变了行向量的关系(为什么?)
    最终将求解 A x = 0 \mathbf A\boldsymbol x=\boldsymbol 0 Ax=0变为求解 U x = 0 \mathbf U\boldsymbol x=\boldsymbol 0 Ux=0 U \mathbf U U是梯形矩阵,理解为只保留了 A \mathbf A A中的最重要的信息,也使得方程求解更简单
    消元后引入几个概念:

    • 这里的主元pivot(理解为:对方程起决定性作用的变量的系数)是每行第一个非零元素,而不再位于“对角线”
      本例中,两个主元为“1”和“2”
    • 主元对应的列为主元列,对应的变量为主变量(pivot variables),主元个数为 r r r,称为
      其余为自由列,自由列对应的变量为自由变量,个数为 n − r n-r nr

      本例中,自由列为2和4列,自由变量为 x 2 , x 4 x_2, x_4 x2,x4

    m × n m\times n m×n的系数矩阵( n n n个变量),结论是:

    • 真正起作用的方程只有 r r r个(真正约束了变量间的关系),剩余了 n − r n-r nr行方程是多余的(被化简为“0=0”的形式)
    • 并且,自由变量的个数也是 n − r n-r nr个,对应了基础解系的向量个数零空间的维度
    • 解空间/零空间就是基础解系(一组线性无关的特解)的所有可能线性组合的集合(基础解系的张成空间)

    可见,消元法就是找出方程组中的“有效方程”和“有效变量”(主元)的过程
    可以由其余方程线性组合得到的方程,就是无效方程
    可以任意取值且保持方程有解的变量,就是无效变量(自由变量)

    消元后如何求解方程

    消元后的系数矩阵 U = [ 1 2 2 2 0 0 2 4 0 0 0 0 ] \mathbf U=

    [122200240000]" role="presentation" style="position: relative;">[122200240000]
    U= 100200220240 对应方程组
    { x 1 + 2 x 2 + 2 x 3 + 2 x 4 = 0 2 x 3 + 4 x 4 = 0
    {x1+2x2+2x3+2x4=02x3+4x4=0" role="presentation" style="position: relative;">{x1+2x2+2x3+2x4=02x3+4x4=0
    {x1+2x2+2x3+2x4=02x3+4x4=0

    1. 对于所有自由变量,可以为其分配任意的值,都能保证有解
      原因:所有的自由列,都能被(其左侧的)主元列线性表出。简单理解是通过主元列可以控制所有自由列带来的影响,具体而言,对于某个特定解,我们额外加上了一倍的自由列,只要用主元列消除这一倍的自由列,仍然满足方程

    这里得到重要结论:矩阵行空间的维数等于列空间的维数,或者说矩阵的行秩=列秩,矩阵转置不改变秩
    理解:行向量线性相关则列向量不可能线性无关,假如行向量线性相关,那么消元后一定会出现全零行,对应存在自由列,而自由列可以被左侧的主元列线性表出,也就是说列线性相关
    而消元的行变换不改变列向量的相关性,因此行向量线性相关则列向量不可能线性无关

    1. 随意给定一组自由变量的值,就能通过回带求解出主变量的值,这就是方程的一个特解

    如果给定自由变量的值为 [ 0 , 0 , . . . , 0 ] [0,0,...,0] [0,0,...,0],得到的解向量就是 0 ⃗ \vec 0 0
    如果给定自由变量的值为 [ 1 , 0 , . . . , 0 ] [1,0,...,0] [1,0,...,0],相当于是用主元列线性组合得到某一个自由列的问题(当然,这一定是有解的,前面说过自由列可以被其左侧的主元列线性表出)
    当然,最简单的方法就是依次带入:每个自由变量的值为1且其余自由变量的值为0

    1. 如果有 r r r个主元,那么将第2步重复 r r r次,即可得到一个基础解系:基础解系指方程组的解集的极大线性无关组,或者说基础解系是一组基,可以线性表出所有解,可以张成整个解空间/零空间

    可见:方程消元,给出了列相关性/秩/零空间(基础解系)等所有信息

    进一步化简消元结果:行最简阶梯型矩阵

    实际上,上面消元后的矩阵 U \mathbf U U还可以进一步化简为行最简阶梯型矩阵RRFE(Reduced row echelon form):保证主元列中,主元是唯一的非零元素,并且主元为1
    行最简阶梯型以最简单和清晰的方式表述了方程所含的所有信息

    对于本例, U = [ 1 2 2 2 0 0 2 4 0 0 0 0 ] \mathbf U=

    [122200240000]" role="presentation" style="position: relative;">[122200240000]
    U= 100200220240 ,其行最简阶梯型矩阵 R = [ 1 2 0 − 2 0 0 1 2 0 0 0 0 ] \mathbf R=
    [120200120000]" role="presentation" style="position: relative;">[120200120000]
    R= 100200010220

    在Matlab中,使用rref()函数可以直接得到结果

    行最简阶梯型矩阵RRFE的作用是:能够使计算机迅速找出方程的解,过程是:

    将各个变量的位置调换(“列变换”),将行最简阶梯型矩阵的主元列集中在左侧(得到单位阵),右侧是自由列

    在这里插入图片描述
    这样,解方程求解 A x = 0 \mathbf A\boldsymbol x=\boldsymbol 0 Ax=0,最终变为求解求解 R x ′ = 0 \mathbf R\boldsymbol x'=\boldsymbol 0 Rx=0 x ′ \boldsymbol x' x中变量位置有调换)

    然后,在“对自由变量任意取值,求特解”的过程中,仍然每次只令一个自由变量取值1,其余自由变量取值0
    之前说过,问题就转为:求主元列的线性组合,希望获取某一个自由列,而这个系数正是来自于 F \mathbf F F!!!

    最终,可以将这些特解(基础解系)作为列向量,获得一个矩阵,这个矩阵的列空间就是零空间/解空间
    这个“表出零空间的矩阵”就是:
    N = [ − F I ] \mathbf N=

    [FI]" role="presentation" style="position: relative;">[FI]
    N=[FI]
    其上半部分对应主变量的取值,下半部分对应自由变量的取值,每一列向量就是一个特解(零空间的基)

  • 相关阅读:
    深度学习记录
    【JS面试题】面试官:“[1,2,3].map(parseInt)“ 输出结果是什么?答上来就算你通过面试
    使用Unity 接入 Stable-Diffusion-WebUI的 文生图api 并生成图像
    Linux基本指令——其三
    DNA修饰贵金属纳米颗粒|DNA脱氧核糖核酸修饰金属钯Pd纳米颗粒PdNPS-DNA
    [TIST 2022]No Free Lunch Theorem for Security and Utility in Federated Learning
    Redis 内存管理
    UDP与TCP协议
    Android系统10 RK3399 init进程启动(三十一) SeAndroid实战之定义策略
    数字IC面试总结,看看你掌握几个?
  • 原文地址:https://blog.csdn.net/Insomnia_X/article/details/125847999