galgame吧 关注:1,807,569贴子:26,945,523

回复:从装甲恶鬼村正到矩阵。

取消只看楼主收藏回复

在介绍这种算法前必须了解一些基本概念。()
(1)【零行】一个值全是0的矩阵行,对应线性方程 0=0
(2)【先导元素】非零行的先导元素是指该行中最左边的非零元素.
(3)【阶梯型】——“REF”
定义:
1.每一非零行都在每一零行之上。
2.某一行的先导元素所在的列位于前一行先导元素的右边。
3.某一先导元素所在列下方元素都是零。
(4)【RREF】(阶梯形矩阵还满足以下性质,则称它为简化阶梯形)
定义:
1.每一非零行的先导元素是1.
2.每一先导元素1是孩元素所在列的唯一非零元素
(5)【主元】~【主元位置】~【主元列】
矩阵中的主元位置是A中对应于它的简化阶梯形中先导元素1的位置,
主元列是A的合有主元位置的列;


IP属地:吉林39楼2023-03-04 12:34
回复
    知道这些概念,就可以介绍高斯消去法了,我们用固定范式的四步套路来得到一个“REF”,完成REF后再次变换得到“RREF”,就是我们想要的矩阵答案。
    step1:由最左的非零列开始.选定一个主元列。主元位置在该列项端。

    step2:在主元列中选取一个非零元素作为主元。若有必要的话,对换两行使这个元素移到主元位置上,对换第一、三两行(也可对换第一、二两行)。

    step3:用倍加行变换将主元下而的元素变成0。
    (这里通过把第一行的-1倍加到第二行来实现,当然也可以把第一行除以主元3)

    step4:暂时不管包含主元位置的行以及它上面的各行,对剩下的子矩阵使用上述的三个步骤直到没有非零行需要处理为止。

    以上的固定步骤我们称之为【向前步骤】,这些步骤可以得到一个“REF”。
    至此,我们已经在挣脱黑洞的道路上成功了一半。


    IP属地:吉林46楼2023-03-04 13:00
    回复
      2026-01-08 18:22:08
      广告
      不感兴趣
      开通SVIP免广告
      最后,step5:
      由量右边的主元开始,把每个主元上方的各元素变成0。若某个主元不是1,用倍乘变换将它变成1。
      由于不想拉长篇幅,这里不写详细写A是怎么变换到RREF的,但楼主可以保证都是只是做了一些简单且固定的变换。

      这一步骤被称为【向后步骤】,目的是将“REF”变换为一个“RREF”


      IP属地:吉林47楼2023-03-04 13:15
      回复
        至此,我们已经了解到怎么得到一个RREF,但是你或许会有一个疑惑,为什么得到RREF要分为【向前步骤】和【向后步骤】
        这样做是因为REF拥有一个重要的性质——【它可以判断线性方程组是否有解】。
        显然不是所有线性方程组都是有解的,比如:

        我们显然不能找到组x1,x2,x3满足“0=15”,所以之后我们也就没有必要继续进行“向后步骤”了。
        我们称这种无解的线性方程组为【不相容的】,有唯一解或无穷解的方程组为【相容的】


        IP属地:吉林50楼2023-03-04 13:29
        回复
          通过以上的介绍,我们已经有能力解决最开始提出的问题了:【我们怎么解掉五阶层方阵的16元1次方程?】
          答案是【构建一个16*17的增广矩阵,然后求出它的“RREF”。】
          通过以上的介绍你肯定可以直观的察觉到这种矩阵变换是一个典型的【P问题】,即可以通过多项式时间复杂度解决的问题,这个结论其实非常的有意义。
          你可能会觉得,这样变换矩阵好像也没有把计算变简单多少啊,矩阵的变换还是很吃力
          虽然矩阵确实难算,但是通过上面的解释你可以看到,这一套规则得价值在于,提供了一套纯“代数”的符号体系来研究这种“线性问题”,后来它被作为独立的数学对象研究,发展出的【矩阵论】在いるいる的领域都有着重要意义,但这就不是这个帖子可以介绍的了,我们还是原意是怎么破解五阶层方阵。
          其实还有很多其他规则来帮助进行矩阵的运算(比如著名的Cramer's rule),但是这些规则与我们无用,因为我们将采用一种最先进的,所有人都在用的方法解决这个矩阵,通过计算机计算RREF。
          由于这是一个“P问题”,所以我们人类总是不缺算力解决这种问题。


          IP属地:吉林53楼2023-03-04 13:53
          回复
            由于前面提到的,五阶层方阵构造的线性方程组前的系数都是1,所以这个增广矩阵中只有1,0还有每一行列的右值(315-xx-xx-xx得到的)
            由于楼主支付不起matlab的昂贵费用,于是利用了python提供的免费的numpy+sympy来计算RREF:

            只要通过短短两行就能算出RREF,都什么年代了还用matlab


            IP属地:吉林54楼2023-03-04 14:01
            回复
              然后结果就华丽的失败了(没算出来)

              显然五阶层方阵是没有负数的,而且还有3个零行,给出的解的数量也不够。


              IP属地:吉林55楼2023-03-04 14:04
              回复
                为什么?这就得提到前面楼主埋的一个坑,16个方程真的就能解出16个未知数吗?
                答案是——(不完全正确),这里就必须提到两个重要概念【基本变量】和【自由变量】
                形如:

                其中x3没有对应的主元列(主元位置的行是零行),其中x1,x2是基本变量,x3是自由变量。


                IP属地:吉林56楼2023-03-04 14:16
                回复
                  2026-01-08 18:16:08
                  广告
                  不感兴趣
                  开通SVIP免广告
                  给出的16个线性方程中,有不少是没有意义的“多余方程”,
                  注意,并不是所有“多余方程”都是形如(3*x1+x2=5, 6*x1+2*x2=10)这样显而易见的形式,他们可能藏得很好,但是经过“高斯消元法”变换后都会变成零行。
                  这就是16个线性方程解不出五阶层方阵的原因——提供的有意义的线性方程不够。


                  IP属地:吉林57楼2023-03-04 14:24
                  回复
                    于是我们补上侧面的6个线性方程,两层平面对角线中的2个方程,以及没写全的垂直方程,共28个线性方程。

                    对应矩阵:


                    IP属地:吉林58楼2023-03-04 14:30
                    回复
                      出去多余的零行,于是得到了对应格子的值:124,84,99,...35。

                      至此,五阶层方阵就被计算出来了。


                      IP属地:吉林59楼2023-03-04 14:33
                      回复
                        完事了补个妹妹。


                        IP属地:吉林61楼2023-03-04 14:42
                        回复