当前位置:   article > 正文

5.11 加权Gram-Schmidt 分解_施普林格改进的schmidt分割算法

施普林格改进的schmidt分割算法

5.11 加权Gram-Schmidt 分解

前面介绍了加权最小二乘法的解为 x ^ = ( A T D A ) − 1 A T D b \mathbf{\hat{x}} = (A^TDA)^{-1}A^TD\mathbf{b} x^=(ATDA)1ATDb ,其中 D D D 为权重矩阵,最常用的是对角阵,每个对角元素表示对应测量点的权重,均为正值,元素值越大表示该测量点越重要。本节仅研究权重矩阵为对角阵的情况,权重矩阵记为 W = d i a g ( w 1 , w 2 , ⋯   , w m ) W=diag(w_1,w_2,\cdots,w_m) W=diag(w1,w2,,wm) w i w_i wi 为测量点 i i i 的权重。

假设矩阵 A = Q R A=QR A=QR ,其中 Q m n Q_{mn} Qmn 为列满秩矩阵, R n n R_{nn} Rnn 为上三角方阵,带入上式得
x ^ = ( ( Q R ) T W ( Q R ) ) − 1 ( Q R ) T W b = ( R T Q T W Q R ) − 1 R T Q T W b = R − 1 ( Q T W Q ) − 1 R − T R T Q T W b = R − 1 ( Q T W Q ) − 1 Q T W b \mathbf{\hat{x}} = ((QR)^TW(QR))^{-1}(QR)^TW\mathbf{b}\\ = (R^TQ^TWQR)^{-1}R^TQ^TW\mathbf{b} \\ = R^{-1}(Q^TWQ)^{-1}R^{-T}R^TQ^TW\mathbf{b} \\ = R^{-1}(Q^TWQ)^{-1}Q^TW\mathbf{b} x^=((QR)TW(QR))1(QR)TWb=(RTQTWQR)1RTQTWb=R1(QTWQ)1RTRTQTWb=R1(QTWQ)1QTWb

其中矩阵 Q T W Q Q^TWQ QTWQ 求逆,为了简化求逆,我们希望其为对角阵,又当权重矩阵为单位阵时, Q T E Q = Q T Q Q^TEQ=Q^TQ QTEQQTQ 必须为单位阵,以便和一般 Gram-Schmidt 分解保持一致。在这个约束下,各矩阵尺寸为 Q m n , W m m Q_{mn},W_{mm} Qmn,Wmm ( Q T W Q ) n n (Q^TWQ)_{nn} (QTWQ)nn ,所以可以使 Q T W Q = W n Q^TWQ=W_n QTWQ=Wn ,对角阵 W n W_n Wn 为对角阵 W W W n n n 个对角元素构成的对角阵,即 W n = d i a g ( w 1 , w 2 , ⋯   , w n ) W_n = diag(w_1,w_2,\cdots,w_n) Wn=diag(w1,w2,,wn) 。注意此时矩阵 Q Q Q 一般不再是正交阵,即 Q T Q = E Q^TQ=E QTQ=E 不再成立。

我们先研究矩阵乘法 Q T W Q Q^TWQ QTWQ ,首先 W Q = ( W q 1 , ⋯   , W q n ) WQ=(W\mathbf{q}_1,\cdots,W\mathbf{q}_n) WQ=(Wq1,,Wqn) Q T W Q = ( [ q 1 T ⋮ , q n T ] ) ( W q 1 , ⋯   , W q n ) = [ q 1 T W q 1 , ⋯   , q 1 T W q n ⋮ , q n T W q 1 , ⋯   , q n T W q n ] Q^TWQ=(\left[

q1T,qnT
\right])(W\mathbf{q}_1,\cdots,W\mathbf{q}_n)=\left[
q1TWq1,,q1TWqn,qnTWq1,,qnTWqn
\right] QTWQ=(q1T,qnT)(Wq1,,Wqn)=q1TWq1,,q1TWqn,qnTWq1,,qnTWqn ,所以 Q T W Q Q^TWQ QTWQ i i i 行第 j j j 列的元素为 q i T W q j \mathbf{q}^T_iW\mathbf{q}_j qiTWqj 。根据 Q T W Q = W n Q^TWQ=W_n QTWQ=Wn 等式,则 q i T W q j = w i f o r i = j , e l s e 0 i ≠ j \mathbf{q}^T_iW\mathbf{q}_j = w_i \quad for \quad i=j, else \quad 0 \quad i \ne j qiTWqj=wifori=j,else0i=j ,从这个意义上说向量组 q i \mathbf{q}_i qi 关于矩阵 W W W 正交,因为不同向量的广义内积 q i T W q j \mathbf{q}^T_iW\mathbf{q}_j qiTWqj 0 0 0 ,相同向量广义内积为 w i w_i wi

根据 A = Q R A=QR A=QR Q T W Q = W n Q^TWQ=W_n QTWQ=Wn 两个等式,可以推导出加权Gram-Schmidt 分解公式。

首先, a 1 = q 1 r 11 \mathbf{a}_1=\mathbf{q}_1 r_{11} a1=q1r11 两边左乘 q 1 T W \mathbf{q}^T_1W q1TW 得, q 1 T W a 1 = q 1 T W q 1 r 11 = w 1 r 11 \mathbf{q}^T_1W\mathbf{a}_1=\mathbf{q}^T_1W\mathbf{q}_1 r_{11}=w_1r_{11} q1TWa1=q1TWq1r11=w1r11 ,又 q 1 T W a 1 = a 1 T W a 1 / r 11 \mathbf{q}^T_1W\mathbf{a}_1=\mathbf{a}^T_1W\mathbf{a}_1/r_{11} q1TWa1=a1TWa1/r11 ,所以 a 1 T W a 1 / r 11 = w 1 r 11 \mathbf{a}^T_1W\mathbf{a}_1/r_{11}=w_1r_{11} a1TWa1/r11=w1r11 r 11 = a 1 T W a 1 / w 1 r_{11}=\sqrt{\mathbf{a}^T_1W\mathbf{a}_1}/\sqrt{w_1} r11=a1TWa1 /w1 ,令 a 1 2 = a 1 T W a 1 a^2_1=\mathbf{a}^T_1W\mathbf{a}_1 a12=a1TWa1 为广义内积,则 r 11 = a 1 / w 1 r_{11}=a_1/\sqrt{w_1} r11=a1/w1 q 1 = a 1 / r 11 = w 1 a 1 / a 1 \mathbf{q}_1=\mathbf{a}_1/r_{11}=\sqrt{w_1}\mathbf{a}_1/a_1 q1=a1/r11=w1 a1/a1

其次, a 2 = q 1 r 12 + q 2 r 22 \mathbf{a}_2 = \mathbf{q}_1 r_{12} + \mathbf{q}_2 r_{22} a2=q1r12+q2r22 两边左乘 q 1 T W \mathbf{q}^T_1W q1TW 得, q 1 T W a 2 = q 1 T W q 1 r 12 + q 1 T W q 2 r 22 \mathbf{q}^T_1W\mathbf{a}_2 = \mathbf{q}^T_1W\mathbf{q}_1 r_{12} + \mathbf{q}^T_1W\mathbf{q}_2 r_{22} q1TWa2=q1TWq1r12+q1TWq2r22 ,根据 q i T W q j = w i f o r i = j , e l s e 0 i ≠ j \mathbf{q}^T_iW\mathbf{q}_j = w_i \quad for \quad i=j, else \quad 0 \quad i \ne j qiTWqj=wifori=j,else0i=j ,得 q 1 T W a 2 = q 1 T W q 1 r 12 + 0 = w 1 r 12 \mathbf{q}^T_1W\mathbf{a}_2 = \mathbf{q}^T_1W\mathbf{q}_1 r_{12} + 0 = w_1 r_{12} q1TWa2=q1TWq1r12+0=w1r12 r 12 = q 1 T W a 2 / w 1 r_{12} = \mathbf{q}^T_1W\mathbf{a}_2/w_1 r12=q1TWa2/w1 为广义投影坐标值。

a 2 = q 1 r 12 + q 2 r 22 \mathbf{a}_2 = \mathbf{q}_1 r_{12} + \mathbf{q}_2 r_{22} a2=q1r12+q2r22 两边左乘 q 2 T W \mathbf{q}^T_2W q2TW 得, q 2 T W a 2 = q 2 T W q 1 r 12 + q 2 T W q 2 r 22 \mathbf{q}^T_2W\mathbf{a}_2 = \mathbf{q}^T_2W\mathbf{q}_1 r_{12} + \mathbf{q}^T_2W\mathbf{q}_2 r_{22} q2TWa2=q2TWq1r12+q2TWq2r22 ,得 q 2 T W a 2 = 0 + w 2 r 22 \mathbf{q}^T_2W\mathbf{a}_2 = 0 + w_2 r_{22} q2TWa2=0+w2r22 ,得 w 2 r 22 = q 2 T W ( a 2 − q 1 r 12 ) w_2 r_{22} = \mathbf{q}^T_2W(\mathbf{a}_2- \mathbf{q}_1 r_{12}) w2r22=q2TW(a2q1r12) ,又 q 2 = ( a 2 − q 1 r 12 ) / r 22 \mathbf{q}_2 = (\mathbf{a}_2 - \mathbf{q}_1 r_{12})/r_{22} q2=(a2q1r12)/r22 带入得 w 2 r 22 2 = ( a 2 − q 1 r 12 ) W ( a 2 − q 1 r 12 ) w_2 r^2_{22} = (\mathbf{a}_2 - \mathbf{q}_1 r_{12})W(\mathbf{a}_2 - \mathbf{q}_1 r_{12}) w2r222=(a2q1r12)W(a2q1r12) ,令 a 2 2 = ( a 2 − q 1 r 12 ) W ( a 2 − q 1 r 12 ) a^2_2=(\mathbf{a}_2 - \mathbf{q}_1 r_{12})W(\mathbf{a}_2 - \mathbf{q}_1 r_{12}) a22=(a2q1r12)W(a2q1r12) 为广义内积,所以 r 22 = a 2 / w 2 r_{22} = a_2/\sqrt{w_2} r22=a2/w2 。所以 q 2 = w 2 ( a 2 − q 1 r 12 ) / a 2 \mathbf{q}_2 = \sqrt{w_2}(\mathbf{a}_2 - \mathbf{q}_1 r_{12})/a_2 q2=w2 (a2q1r12)/a2

最后同理对任意列向量 a i = q 1 r 1 i + q 2 r 2 i + ⋯ + q i r i i \mathbf{a}_i = \mathbf{q}_1 r_{1i} + \mathbf{q}_2 r_{2i} + \cdots + \mathbf{q}_i r_{ii} ai=q1r1i+q2r2i++qirii ,两边左乘 q j T W , j < i \mathbf{q}^T_jW,j < i qjTW,j<i
q j T W a i = q j T W q 1 r 1 i + q j T W q 2 r 2 i + ⋯ + q j T W q i r i i = q j T W q j r j i = w j r j i \mathbf{q}^T_jW\mathbf{a}_i = \mathbf{q}^T_jW\mathbf{q}_1 r_{1i} + \mathbf{q}^T_jW\mathbf{q}_2 r_{2i} + \cdots + \mathbf{q}^T_jW\mathbf{q}_i r_{ii} = \mathbf{q}^T_jW\mathbf{q}_j r_{ji} = w_j r_{ji} qjTWai=qjTWq1r1i+qjTWq2r2i++qjTWqirii=qjTWqjrji=wjrji 所以 r j i = q j T W a i / w j r_{ji} = \mathbf{q}^T_jW\mathbf{a}_i/w_j rji=qjTWai/wj 。两边左乘 q i T W \mathbf{q}^T_iW qiTW
q i T W a i = q i T W q 1 r 1 i + q i T W q 2 r 2 i + ⋯ + q i T W q i r i i = q i T W q i r i i = w i r i i \mathbf{q}^T_iW\mathbf{a}_i = \mathbf{q}^T_iW\mathbf{q}_1 r_{1i} + \mathbf{q}^T_iW\mathbf{q}_2 r_{2i} + \cdots + \mathbf{q}^T_iW\mathbf{q}_i r_{ii} = \mathbf{q}^T_iW\mathbf{q}_i r_{ii} = w_i r_{ii} qiTWai=qiTWq1r1i+qiTWq2r2i++qiTWqirii=qiTWqirii=wirii 所以 r i i = q i T W a i / w i r_{ii} = \mathbf{q}^T_iW\mathbf{a}_i/w_i rii=qiTWai/wi ,根据 a i = q 1 r 1 i + q 2 r 2 i + ⋯ + q i r i i \mathbf{a}_i = \mathbf{q}_1 r_{1i} + \mathbf{q}_2 r_{2i} + \cdots + \mathbf{q}_i r_{ii} ai=q1r1i+q2r2i++qirii 最后化简得,令 a i 2 = ( a i − ( q 1 r 1 i + q 2 r 2 i + ⋯   ) ) W ( a i − ( q 1 r 1 i + q 2 r 2 i + ⋯   ) ) a^2_i=(\mathbf{a}_i - (\mathbf{q}_1 r_{1i} + \mathbf{q}_2 r_{2i} + \cdots))W(\mathbf{a}_i - (\mathbf{q}_1 r_{1i} + \mathbf{q}_2 r_{2i} + \cdots)) ai2=(ai(q1r1i+q2r2i+))W(ai(q1r1i+q2r2i+)) 为广义内积,所以 r i i = a i / w i r_{ii} = a_i/\sqrt{w_i} rii=ai/wi 。所以 q i = w i ( a i − ( q 1 r 1 i + q 2 r 2 i + ⋯   ) ) / a i \mathbf{q}_i = \sqrt{w_i}(\mathbf{a}_i - (\mathbf{q}_1 r_{1i} + \mathbf{q}_2 r_{2i} + \cdots))/a_i qi=wi (ai(q1r1i+q2r2i+))/ai

上面介绍的方法就是经典的加权Gram-Schmidt分解,过程和经典的Gram-Schmidt分解一样,差别在于上三角矩阵 R R R 的元素 r j i = q j T W a i / w j r_{ji} = \mathbf{q}^T_jW\mathbf{a}_i/w_j rji=qjTWai/wj 为广义投影 q j T W a i \mathbf{q}^T_jW\mathbf{a}_i qjTWai 除以权重 w j w_j wj r i i = a i / w i r_{ii} = a_i/\sqrt{w_i} rii=ai/wi 为广义内积 a i a_i ai 除以权重 w i \sqrt{w_i} wi ,当广义内积趋近 0 0 0 时,则方程是病态。 q i = w i ( a i − ( q 1 r 1 i + q 2 r 2 i + ⋯   ) ) / a i \mathbf{q}_i = \sqrt{w_i}(\mathbf{a}_i - (\mathbf{q}_1 r_{1i} + \mathbf{q}_2 r_{2i} + \cdots))/a_i qi=wi (ai(q1r1i+q2r2i+))/ai 是垂直分量的标准化 ( a i − ( q 1 r 1 i + q 2 r 2 i + ⋯   ) ) / a i (\mathbf{a}_i - (\mathbf{q}_1 r_{1i} + \mathbf{q}_2 r_{2i} + \cdots))/a_i (ai(q1r1i+q2r2i+))/ai 乘以权重 w i \sqrt{w_i} wi

改进加权 Gram-Schmidt 分解

如同改进Gram-Schmidt分解,可以按行计算矩阵 R R R 和先减去投影分量,得到改进加权 Gram-Schmidt 分解:令 a i 2 = a i T W a i a^2_i=\mathbf{a}^T_iW\mathbf{a}_i ai2=aiTWai 为广义内积。

1、 r 11 = a 1 / w 1 r_{11}=a_1/\sqrt{w_1} r11=a1/w1 q 1 = w 1 a 1 / a 1 \mathbf{q}_1=\sqrt{w_1}\mathbf{a}_1/a_1 q1=w1 a1/a1 r 1 i = q 1 T W a i / w 1 r_{1i} = \mathbf{q}^T_1W\mathbf{a}_i/w_1 r1i=q1TWai/w1 a i = a i − q 1 r 1 i , i > 1 \mathbf{a}_i = \mathbf{a}_i - \mathbf{q}_1 r_{1i}, i>1 ai=aiq1r1i,i>1 。令 b 0 = b \mathbf{b}_0=\mathbf{b} b0=b ,注意对向量 b \mathbf{b} b 也要同样处理,即令 δ 1 = q 1 T W b / w 1 \delta_1 = \mathbf{q}^T_1W\mathbf{b}/w_1 δ1=q1TWb/w1 b = b − q 1 δ 1 \mathbf{b} = \mathbf{b} - \mathbf{q}_1\delta_1 b=bq1δ1

2、 r 22 = a 2 / w 2 r_{22}=a_2/\sqrt{w_2} r22=a2/w2 q 2 = w 2 a 2 / a 2 \mathbf{q}_2=\sqrt{w_2}\mathbf{a}_2/a_2 q2=w2 a2/a2 r 2 i = q 2 T W a i / w 2 r_{2i} = \mathbf{q}^T_2W\mathbf{a}_i/w_2 r2i=q2TWai/w2 a i = a i − q 2 r 2 i , i > 2 \mathbf{a}_i = \mathbf{a}_i - \mathbf{q}_2 r_{2i}, i>2 ai=aiq2r2i,i>2 。注意对向量 b \mathbf{b} b 也要同样处理,即令 δ 2 = q 2 T W b / w 2 \delta_2 = \mathbf{q}^T_2W\mathbf{b}/w_2 δ2=q2TWb/w2 b = b − q 2 δ 2 \mathbf{b} = \mathbf{b} - \mathbf{q}_2\delta_2 b=bq2δ2

3、 r i i = a i / w i r_{ii}=a_i/\sqrt{w_i} rii=ai/wi q i = w i a i / a i \mathbf{q}_i=\sqrt{w_i}\mathbf{a}_i/a_i qi=wi ai/ai r i j = q i T W a j / w i r_{ij} = \mathbf{q}^T_iW\mathbf{a}_j/w_i rij=qiTWaj/wi a j = a j − q i r i j , j > i \mathbf{a}_j = \mathbf{a}_j - \mathbf{q}_i r_{ij}, j>i aj=ajqirij,j>i 。注意对向量 b \mathbf{b} b 也要同样处理,即令 δ i = q i T W b / w i \delta_i = \mathbf{q}^T_iW\mathbf{b}/w_i δi=qiTWb/wi b = b − q i δ i \mathbf{b} = \mathbf{b} - \mathbf{q}_i\delta_i b=bqiδi

一直计算,直到 i = n i=n i=n 结束。

令向量 d = ( δ 1 , ⋯   , δ m ) \mathbf{d} = (\delta_1,\cdots,\delta_m) d=(δ1,,δm) ,因为 d = ( Q T W Q ) − 1 Q T W b 0 \mathbf{d} = (Q^TWQ)^{-1}Q^TW\mathbf{b}_0 d=(QTWQ)1QTWb0 ,则最优近似解为 x ^ = R − 1 d \mathbf{\hat{x}} = R^{-1}\mathbf{d} x^=R1d ,即 x ^ i = ( δ i − ∑ j = i + 1 n ( δ j x ^ j ) ) / r i i \hat{x}_i = (\delta_i - \sum^{n}_{j=i+1} (\delta_j\hat{x}_j))/r_{ii} x^i=(δij=i+1n(δjx^j))/rii

阻尼倒数法

计算 q i = w i a i / a i \mathbf{q}_i=\sqrt{w_i}\mathbf{a}_i/a_i qi=wi ai/ai 涉及到除以广义内积 a i a_i ai ,为了增加数值稳定性,可以采用阻尼倒数法,具体方法和QR分解的阻尼倒数法一样,这里省略。

权重排序

计算上三角阵 R R R 元素 r i j = q i T W a j / w i r_{ij} = \mathbf{q}^T_iW\mathbf{a}_j/w_i rij=qiTWaj/wi 涉及除以权重 w i w_i wi ,如果其为或者趋近 0 0 0 ,则也会导致数值不稳定。为了解决这个问题,可采用权重排序计算。即按照权重从大到小排序 w i > w i + 1 w_i > w_{i+1} wi>wi+1 ,根据权重排序结果调整方程 A x = b A\mathbf{x} = \mathbf{b} Ax=b 中子方程的顺序,使之与权重顺序对应。这样只要前 n n n 个权重不趋近 0 0 0 即可保证数值稳定。如果所有权重大小差不多,则不必排序,可直接计算。注意此时不能采用阻尼倒数法。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/142916
推荐阅读
  

闽ICP备14008679号