ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-01-07 19:01:26  阅读:249  来源: 互联网

标签:begin right end 特解 第七节 Ax array ccc left


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=⎣⎡​123​246​268​2810​⎦⎤​,我们的算法还是从消元开始,因为消元不会改变方程组的解,也就是说不会改变列空间,这里有点特殊的地方是:

  • 右边都为 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=⎣⎡​123​246​268​2810​⎦⎤​⇒⎣⎡​[1]00​200​222​244​⎦⎤​⇒⎣⎡​[1]00​200​2[2]0​240​⎦⎤​=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]00​200​2[2]0​240​⎦⎤​⎣⎢⎢⎡​x1​x2​x3​x4​​⎦⎥⎥⎤​=0
我们把矩阵 U U U中包含主变量的列称为主列(pivot column),其余列为自由列(free column),主列的个数显然就是矩阵的秩 r r r,自由列的个数就是 n − r n-r n−r
主列很好理解,这里的自由列表示,其可以自由或任意分配数值,在这个例子里就是 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′′=⎣⎢⎢⎡​20−21​⎦⎥⎥⎤​

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

简化行阶梯形式

**简化行阶梯形式(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]00​200​2[2]0​240​⎦⎤​⇒⎣⎡​[1]00​200​0[2]0​−240​⎦⎤​⇒⎣⎡​[1]00​200​0[1]0​−220​⎦⎤​=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]00​0[1]0​200​−220​​⎦⎤​⇒[I0​F0​​]
转换成这种形式是为了一次性得到所有特解,这样就可以得到了整个零空间,想象一下所有特解的组合应该是一个矩阵,形式我们把这种所有特解作为列的矩阵称为”零空间矩阵“,即为 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] [I​F​]N=0⇒N=[−FI​]
在本例中就是 [ − 2 2 0 2 1 0 0 1 ] \left[\begin{array}{cc}-2&2\\0&2\\1&0\\0&1\end{array}\right] ⎣⎢⎢⎡​−2010​2201​⎦⎥⎥⎤​。这两个特解跟之前通过求得的特解是一致的。
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 [I​F​][xpivot​xfree​​]⇒xpivot​=−Fxfree​⇒xpivot​=−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=⎣⎢⎢⎡​1222​2468​36810​⎦⎥⎥⎤​⇒⎣⎢⎢⎡​[1]000​2[2]00​3200​⎦⎥⎥⎤​=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=⎣⎡​−1−11​⎦⎤​,这里的零空间就为 c [ − 1 − 1 1 ] c\left[\begin{array}{ccc}-1\\-1\\1\end{array}\right] c⎣⎡​−1−11​⎦⎤​,这是一条直线。

  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]000​2[2]00​3200​⎦⎥⎥⎤​⇒⎣⎢⎢⎡​[1]000​0[1]00​1100​⎦⎥⎥⎤​
可以看出这里 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] ⎣⎡​−1−11​⎦⎤​

标签:begin,right,end,特解,第七节,Ax,array,ccc,left
来源: https://blog.csdn.net/Der_star/article/details/112302992

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有