整体或局部: CR的生成空间从块到SVD

举报
码乐 发表于 2023/11/16 11:03:30 2023/11/16
【摘要】 6 继上一节 分块侠骨耐风霜, 雄心吞宇宙。每个矩阵都有其特别之处,这个特征它可以使用一个数值表示.对应方阵,它被称为特征值(Eigenvalues),相关向量为特征向量(Eigenvectors)。相关空间为特征空间。 而对应于非方阵的矩形矩阵,它被称为奇异值(singular values)。 6.1 生成空间 - 从 CR 到 块运算假设有矩阵A,我们期望找到在A空间的某个向量,...

6 继上一节 分块

侠骨耐风霜, 雄心吞宇宙。

每个矩阵都有其特别之处,这个特征它可以使用一个数值表示.

对应方阵,它被称为特征值(Eigenvalues),相关向量为特征向量(Eigenvectors)。

相关空间为特征空间。 而对应于非方阵的矩形矩阵,它被称为奇异值(singular values)。

6.1 生成空间 - 从 CR 到 块运算

假设有矩阵A,我们期望找到在A空间的某个向量,使得 A->x = 0。这里使用CR矩阵分解计算。

这在本质上是消元的过程。 也是其中关键,它帮助保证零空间一致。
它有以下几点性质,我们在第一章有提到一些,这里再次重复一下。

        (1) N(A) 零空间在R^n 包含全部的 x,它是 A->x =0 的解。
        (2) 消元不改变矩阵的值和性质,从A 到 R0 到 R都不会改变 N(A)。
        (3) R0 = rref(A) 有单元矩阵I 在r列空间,F在 n - r 列。 
           (matlab 消元命令 rref(A) R0的含义就是包含0行的 行最简阶梯形)
        (4) F中每个列都是一个特解,针对 A->x = 0。
        (5) 每个矩阵因子都在 A = CR 中。
        (6) 每个矩形 m < n 有非零解 A->x = 0。

6.1 两个CR计算实例

例1 有如下矩阵:

     A = ( 1 0 3 5
           0 1 4 6)

列3为依赖列,可以通过列1和列2变化得到: 3 = 13 + 0, 4 = 0 + 14
同样的,列4也是依赖列
A->x = 0 方程组为

    x1 + 3x3 + 5x4 = 0 (式4.2.1)
    x2 + 4x3 + 6x4 = 0 (式4.2.2)

两个零向量特解为

       S1 = (-3             S2 = (-5
             -4                   -6
              1                    0  
              0)                   1)

A 在零空间中有

	AS1 = 0 且 AS2 = 0

验证如下

 AS1 = ( 1 0 3 5   *  (-3 =  (1*-3 + 0 +3 +0  = [0]
         0 1 4 6)      -4      0 - 4 + 4 + 0)
                        1
                        0)

又如例2 :

  A = (1  7  0  8
       0  0  1  9
       0  0  0  0)

此时A->x = 0 方程组为

    x1 + 7x2 + x3 + 8x4 = 0  (式4.2.3)
    		   x3 + 9x4 = 0  (式4.2.4)

I 在列空间中的列1,列3,行3全部为0

在单位矩阵中,1仍然是非零首元。
因此有如下零空间特解

当 x2 = 1 x4 = 0 那么 x1 = -7 x3 = 0

当 x2 = 0 x4 = 0 那么 x1 = -8 x3 =-9

    因此 S1 = (-7           S2 = (-8
               1                 0
               0                -9 
               0)                1) 

6.2 块计算的特征

    r,m,n = 2,2,4  有 A = (I  F)  如 (1 0 3 4
    				     0 1 5 6)

    r,m,n = 2,3,4  有 A0 = (I  F  * P   如 (1 7 0 8
    	                    0  0)           0 0 1 9
                                            0 0 0 0)

A0有 m - r行非零, I 有r 列,F 有n - r列

    	P = (1  0  0  0   =  (1  0  0  0
    	     0  0  1  0       0  1  0  0
             0  1  0  0       0  0  1  0 
    	     0  0  0  1)      0  0  0  1)

人们总是需要从A 计算到R,有性质如下

    	(1) 前 r 个独立列,找到 R中包含的 单元阵 I
    	(2) R的其余列为 F, 可以通过 H = WF 确定
         
         H 为 A 的非独立列
         W 为 A 的独立列

         非独立列 =  独立列 乘  R的其余非单元阵
             H   =    W   x    F

        (3) 最后的 m - r 行是零行,可以从R中删除 R0,R0的含义就是包含0行的 行最简阶梯形
            r,m,n = 2,3,4
            R0 = (I  F
                  0  0)

又比如下块计算:

  A = (1  7  3  35          ->  (1  7  3  35  I - III ->  (1  7  0  8     
       2 14  6  70  II - 2*I     0  0  0  0                0  0  0  0   交换2,3除3
       2 14  9  97) III - 2*I    0  0  3  27)              0  0  3  27) /3  

       = (1  7  0  8   = R0
          0  0  1  9  
          0  0  0  0)

列基 乘 行基 等于 A 的依赖列2 和 列4:

	C x F = ( 1 3  * (7  8   =  (7  35    =  A 的依赖列2 和 列4
	          2 6     0  9)     14  70
	          2 9)              14  97)

R0 中单元阵 I 的位置,位于A的列矩阵 所在位置

                 m x n          m x r    r x n        
     A = CR 为 (1  7  3  35  =  ( 1 3  * (1  7  0  8   
                2 14  6  70       2 6     0  0  1  9)    
                2 14  9  97)      2 9)  

验证 把 1 0 放入 列的 位置2和4

	 RS1 = 0  = (1  7  0  8  * (-7    = (0)         
	             0  0  1  9      1                     
	                             0                      
	                             0)    

把 0 1 放入 列的 位置2和4

     RS2 = 0  = (1  7  0  8  * (-8   =  (-8+0+0+8, 9-9) = (0) 
     	         0  0  1  9     0
     	                        -9
     	                        1)

行列转置 A = CR

	A = CR = C( I  F )P = (C  CF)P

	C:独立列向量    F:列向量   P:列转置

A的列基空间 C(A)
A的行基空间 R(A)
P 为列转置,它将列转换回单元阵 I
P^t 为列

消元步骤

(1) 倍加减 ,倍乘标量, 任意行交换

    A = ( 1  2  11  17            ->  (1  2  11  17   I - 2II  = (1  0  3  5   =  R  
          3  7  37  57)  II - 3I       0  1  4    6)              0  1  4  6)
   			
		  [W      H]         ================>                     (I   W^-1*H)   

以上为从 矩阵块的视角看待这个过程.

消元做了转置 Inverted

	设可逆 2x2 矩阵  W = (1  2    前 r 行
		             3  7)

W在A的起始,因为 I 单元阵在 R的起始

    乘 W^-1*A = W^-1(W  H)
    因此 R = (I  W^-1  H)  = (I  F)
    依赖列空间  H = (11  17    =  W*F
                    37  57)	   

   等于  WF = (1  2   * (3  5
              3  7)     4  6)

在上一个例1 个

    (I  F)x = 0 的特解是列空间 (-F
                               I)

在例2中

	(I  F)Px = 0 特解为 P^t 的列
	(I  F)P 乘 P^t(-F   降低维度 到  (I F)(-F    =   (0)
	               I) 	             I)

当未知变量多于已知量

假设 Ax = 0 有比方程式更多的未知变量  ( n > m )
必然有至少 n - m 的自由列 在 F 中。
Ax = 0 有非零解在 A的零空间中。

例如

     A  = (1  2      B  = (A     =  (1  2 
           3  8)           2A)       3  8
                                     2  4
                                     6  16)

例如 M矩阵有2行4列,也就是在平面 有 4个向量(4列),那将会给出0的组合。

可能是三角形,它的秩应该为2.

	  M = (A  2A)  = (1  2  2  4
	                  3  8  6  16)

列空间维数 r(A)= 2

零空间维数 r(N(A)) = n - r

                              C 有全秩r
	PrAPc = (W  H             C  = (W  & B  = (W H)    
	        J  K)                  J)                   

W 是左上角的子块,它将以单元阵结束。 W 逆变 H, W invert H.
J,K 以零行 结束。

所以在块乘中

	CF = A 的依赖列
	CR = A 完整的原矩阵  R中包含单元矩阵。

W^-1 乘以 r 行,可以获得

	W^-1*B = (I  W^-1*H) = (I F)

减去 J(I W^-1*H) 从 m - r 的低行 (J K) 获得 (0 0) 因此有

    	P_r*A*P_c = (W H     ->  (I  W^-1*H    -> (I   W^-1*H   =  R0
    		         J K)         J   K)           0    0)
	
	(1) 反转W,并且 J  K 为 W, H 的一些组合, 
		因此当W反转时,就得到 第一行的消元, 也就是开始的 单位矩阵。
	(2) 当应用此方法到 第二行时,J,K 行,由于是 0 行,所以为0

	将 2x2 矩阵 置于 R,将得到 左上角的 单位矩阵 和 最后的 0行。

矩阵的块计算有助于我们观察和分解巨大的矩形矩阵。为了前进的更清晰,这里做一个小结。

6.3 基本的分块方法和性质

基本的分块方法

	1,按特征分块,分块对角矩阵, B1...Bs都是方阵
	2,按列分块
	3,按行分块

它有一些基本运算性质如下:

	1 分块矩阵可逆的充要条件是 矩阵的每一个分块都可逆。
	2 同型矩阵的分块矩阵相加,等于各分块矩阵分别相加。
	3 分块乘
	4 分块转置,先把小块转置,然后整块转置,结果与矩阵整体转置保持一致

小结

终于快到图形识别的基础SVD了,下一节我们继续旅程,举例说明SVD过程,了解其强大功能。
然后后续将与著名的最小二乘方法做对比。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。