zoukankan      html  css  js  c++  java
  • 测绘佬不得不知道的线性代数(三):伪逆解

    原来的说法:

    向量V的各个分量,对A的列向量进行线性组合。

    V' = x i + y j

    通常,要知道V' 的大小和方向,首先是将i , j 绘制出来,然后用V各个分量对其线性组合。

    如果ij ,而且| | = | j | =1, 如果以 j 为坐标轴,那么V' 就是V在以i和j为坐标轴下的坐标。

    假如,恰好是X轴和Y轴的方向,那么V' = V , V没有改变(长度,方向都和前后一样)

    ij 将视为坐标系下的一个基

    (此处,开始将A看成是作用于V的一个变换,可记为V' =  AV = T(V))


     假如有一个矩阵B,将i变换成i' ,将j变换成 j'  , 那么B对V' 变换为V'' 应该是如何的?

    V'' =  BV'  = B(x * i + y * j) =  x B i + yB j  = x i' + y j' = i' ,  j' ] V 

    为什么说标准正交矩阵如此重要,因为其相当于 i' ⊥ j'  , | i' | = | j' | =1 , 仅仅对V旋转成V''

    B对V'的变换,相对于B先对V的基变换成新的基, 再由V来对新的基线性组合。


    逆矩阵,就是线性变换后的结果V' = AV,然后V = A-1V' , 将V' 变回V,也就是:V = A-1AV

    但是,A不是什么情况下都有逆。

    首先,有线性变换的性质可知,由于A的各列,是V在新坐标系下的各个坐标轴;如果A各列向量长度恰好为1,而且正交,那么将会将V,映射为另一个坐标系下的向量V' , 长度和V一样,方向和V不同。

    因此,有两个结论:

    1. A要是方阵,因为A-1 是一个变换还原的问题。

    如果A不是方阵,那么有许多AV=A1V=A2V=……=V' , 反正从V对A各列线性组合来看,组成V'可以有很多种。

    另一个方面,如果A不是方阵,那么V的维数只能“平面” 。

    2. A各列必须线性无关。

    如果A各列线性相关,那么同样的,有许多AV=A1V=A2V=……=V',从而,将V' 变换回来,有很多Ai-1  (假如有)

    另一个方面,有方程组:

    a11 v + a12 v2 + a13 v3 = v1'   (1)

    a21 v + a22 v2 + a23 v3 = v2'   (2)

    a31 v + a32 v2 + a33 v3 = v3'   (3)

    在解这个方程组的时候,传统办法是“高斯消元法”,就是(1)、(2)、(3)式乘以倍数后相减,将原来的AV = V' ,变成 I V = V‘’,那么V就可以解出来,结果V不变。

    如果有矩阵[A I],经过“高斯消元法”,得到[ I E]

    如果有:A[I E] = [A I] = [ AI, AE] ,也就是I = AE,E = A-1   

    那么,A必须能够完成整个“高斯消元法”,才能由A变成I 。

    要完成消元法,那必须A各行线性独立

    对于方阵而言,行线性独立,等价于列线性独立,因为只是坐标系“翻转” 一下而已。


    符合AX=0的所有X,称为A的零空间,又叫:N(A)

    假如:A是3x2(mxn)的矩阵,

    X垂直于A的每个行向量

    如果A的2个行向量线性无关,那么A的秩R = 2 ,其行空间的维度也是2,所有X形成的空间,维度是m - R = 1

    所以,X空间的维度N(A) = m - R


    在前面提及,有情况:

    A列向量线性无关,B不在列空间中

    这时,只要Ax=B,左右两边乘以A, 得到ATAx=ATB,解此方程,即可获得最小二乘解。

    x = (ATA)-1 ATB,ATA有没有逆矩阵?其答案等价于:A是否“满秩”

    假设有ATAy = C = 0 

    那么:yTC = yTATAy = 0

    等价于:||Ay||= 0

    等价于:Ay = 0;

    所以,对于同一个向量y , y 垂直于A和 ATA 的行空间。

    所以A和 ATA 的行空间应该是一样的。行空间的维度(是二维平面还是三维空间) = 秩数

    从而,导致R(A) = R(ATA) = n,也即是ATA作为nxn矩阵,满秩,固可逆。


     但是,通常,我们解ATAx=ATB,并不会求(ATA)-1 ,因为求逆的代价通常很大的。

    如果我们采用上述的“高斯消元法”,将方程组ATAx=ATB 理解为,另一个Ax = y 。那么,得到:

    结果,先解出x,然后回代,解出x2 ,x

    但是,应该如何记录,“高斯消元法”的各个步骤呢?答案是,左乘一个矩阵。

    例如,有矩阵:

    按照“高斯消元法”,第一步,消去第2行第1列的元素。那么,可以左乘一个矩阵E21

    分析E21 

    第1行表示,1*A的第1行 + 0*A的第2行  + 0*A的第3行 = E21 的第1行

    第2行表示,-2*A的第1行 + 1*A的第2行  + 0*A的第3行 = E21 的第2行 , 正好消除了A的第2行第1列的元素

    ..

    假如,A‘ = E21A

    那么,最终,U = A''' = E32E31E21A

    对于各个E,一定是有逆矩阵的(既然可以将A逐步变成U,那么也可以将U逐步变回A)

    所以,A = (E21)-1(E31)-1 (E32)-1U = LU

    (由此可见,A需要时满秩矩阵,假如第1行和第2行线性相关,那么乘以E21 ,直接就会将第2行元素全部变成0,导致无法回代了)

    上述又叫LU分解,当然,A不止一种分解方式。 OK,矩阵分解的序幕要拉开了。


    开一下脑洞:

    假如有A,有Q,Q的各列向量相互垂直,而且长度都为1,是否可以考虑,有

    a1  = i q1

    a2 =  j q1 + k q2

    a3 = l q1 + mq2 + n q3

    也就是

    亦即A=QR,又叫QR分解

    那R阵,i……n到底是怎么来的呢?Q阵,q1 ,  q , q 是怎么来的?其实很好分析:

    (1) q1  肯定是和a1同向的,而且长度为1,那么 q1 = a1 / ||a1||  , i = ||a1||

    (2) 由于q2a1那么只要a2减去在a1上的分量,得到q2',然后q2=q2' / ||q2'|| 即可。

    那么,a2如何减去在a1上的分量呢?很明显,也就是,q2' = a2 - (a2a1上的投影向量)

     一个向量,在另一个向量中的投影如何求?

    p = x a1a2 - pp ,所以  pT(a2-p)=0

    pTa2 = pTp

    x a1T a2 = x2 a1Ta1

    a1T a2 = xa1Ta1,而因为a1Ta1是常数,等于||a1||2

    x = a1T a2a1Ta1

    所以a2a1的投影公式: 

     

    (3) 同理,q3' = a3 - (a3在q1的投影) - (a3在q2的投影)

    这种办法,又叫Gram-Schmidt正交化过程。


    *由于Q是标准正交方阵,所以QTQ=I(对角线就是单位向量的长度平方 =1,非对角线是正交向量的点积=0),对于列向量无关的最小二乘解:ATAx=ATb,x=(ATA)-1ATb , 有:

    x = (RTQTQR)-1RTQTb,从而,x = (RTR)-1RTQTb = R-1QTb

    所以,Rx = QTb  , 由于R是下三角阵,又可以愉快的回代,直接得出x了。


     是时候,要考虑:

    A列向量线性相关,而且B也不在A的列空间中

    我们的求法,当然是要B投影在A的列空间中,然后找出||X||最小的一组解。

    B应该如何投影在列空间中的呢?

     p⊥(B-p) ,所以,pT(B-p) = 0。有 p = AX(p可以由A各列线性组合得到),所以:

    (AX)TB = (AX)T(AX)

    XTATB=XTATAX

    ATB=ATAX

    又被难住了,当A列线性无关是,ATA才有逆,p = AX = A (ATA)-1ATB (因此,矩阵P = A (ATA)-1AT 又叫投影矩阵

    那还有什么办法呢?那不找投影了,直接找||X||最小的一组解。

    首先,A的行空间 ⊥ A的零空间 (上面已经说明了)那么,可以说明,X在n维空间中,总可以分解为:X = X在行空间的部分 + X在零空间的部分。

    (为了好记住,称X = Xr + Xw)

    (1) p = AX = A(Xr + Xw) ,又因为Xw在A的零空间,所以AXw=0,因此:p = AXr,所以Xr可以说是其中一个解。

    (2) 那么,X在n维空间中,其Xr分量的长度是固定的,仅有Xw处不同。(这个也不知道如何解析,《线性代数及其应用》P150页提及过)

    可能就是:AX=b是一个非齐次线性方程组,对于非齐次线性方程组的通解,就是AXw=0,Xw作为任意解,加上AXr=p作为一个特解;

    也就是同解为:X= Xr + Xw,并且Xw是任意的,而Xr是固定的;

    当||X||最小,证明X完全在行空间上,自然的Xw=0

    将X最小,转化为求X在行空间的分向量

     

    *如果列线性无关的话,可以想象,行空间一定沾满整个Rn;而且X只能在行空间中没法跑,长度固定唯一。

    (3) 因此,Xr是最小范数解。


    首先,得知道SVD分解:https://www.cnblogs.com/pylblog/p/10544427.html

    X+ =  A+b

     A+ = VΣ+ UT

    A+ 是A的“伪逆” ,X又叫“伪逆解”

    因为A+ A  =  VΣ+ UUΣV

    而U和V是单位正交矩阵,所以UTU = I , VV =I 

    而ΣΣ是对角线为1或0的方阵,所以 AA 最终也是对角线为1或0的,类似于I的方阵(所以称为“伪”)。


    那么,剩下只需验证:

    一. X+ =  A+b 是不是符合Xr的特征,也就是X+ 是不是在行空间中从而证明X+  的长度是最短的

    二 . 前面说过,p = AX = Pb,p是b在A的列空间上的投影


     首先,要介绍一种特殊的LU分解:

    假如,将U的0行去掉,得到:

    A依然还是A。只是U‘变得可逆了。

    A又可以表示为:A+ = U’T(U'U'T)-1(L'TL')-1L' <=>   A= VΣ+ UT   (注意到此U非彼U), 因为 A+ A  =  AL'U'  = I 

    现在,只要用新的A+  来证明前面两个性质:

    (1) 令A+ = U’T(U'U'T)-1(L'TL')-1L'T   等于 A+ = U’T C

    (2) A+ b = U’T Cb  = U’y

    而U‘ ,更具LU分解的特性,U’ 和 U有着相同的行空间,而U和A又有相同的行空间,所以U'和A有相同的行空间。

    而U’T  是对 U'列向量的线性组合。换句话说,就是对U' 行向量的线性组合。

    结论是,A+ = U’T ,其结果是一个在A的行空间的向量

    因此,X+ =  A+b ,X是在行空间中的

    (3) AX   AA+b = (L'U')(U’T(U'U'T)-1(L'TL')-1L'b) = L'(L'TL')-1 L'T

    而L‘ 和A有相同的列空间,又L'(L'TL')-1 L'是一个投影矩阵,因此p = AX+ = Pb

    验毕!


    应用:

    通常在平差中,有观测方程 v = Bx - l ,往往x是近似值X的改正数 , 最终要获得X’ = X + x

    而我们要想 vpv最小,就是假想  0 = Bx - l , x有解

    从而解方程 BTpBx = BTpl  , 令其为Ax =b

    因为没有控制点,或者起算数据,所以造成A秩亏,常规办法,没法得到X‘ 

    那么,用伪逆解,可以获得,使得近似值改正数xTx 最小,也就是改正数向量x最小的一组解。

    换句话说,当近似值是相对坐标(因为没有已知点,或起算数据,只能这样),而且可以从高精度的观测数据推导时,那么解出x的意义是,让这个相对坐标更准确,也就是相互关系更准确!

  • 相关阅读:
    TCP 的那些事儿(转载)
    3. 对象在内存中的布局
    GO语言学习之数据类型-->基本类型(字符串)
    GO语言学习之变量and常量
    wrk
    为什么显示消息“错误:您所在国家/地区是禁运国,无法下载 Java”?
    raw.githubusercontent.com 访问不了
    Windows Terminal
    vue:无法加载文件C:UsersAppDataRoaming pmvue.ps1, 在此系统上无法加载脚本
    vue使用过滤改变el-switch开关的状态
  • 原文地址:https://www.cnblogs.com/pylblog/p/10473464.html
Copyright © 2011-2022 走看看