赞
踩
前面介绍了加权最小二乘法的解为 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=R−1(QTWQ)−1R−TRTQTWb=R−1(QTWQ)−1QTWb
其中矩阵 Q T W Q Q^TWQ QTWQ 求逆,为了简化求逆,我们希望其为对角阵,又当权重矩阵为单位阵时, Q T E Q = Q T Q Q^TEQ=Q^TQ QTEQ=QTQ 必须为单位阵,以便和一般 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[
根据 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(a2−q1r12) ,又 q 2 = ( a 2 − q 1 r 12 ) / r 22 \mathbf{q}_2 = (\mathbf{a}_2 - \mathbf{q}_1 r_{12})/r_{22} q2=(a2−q1r12)/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=(a2−q1r12)W(a2−q1r12) ,令 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=(a2−q1r12)W(a2−q1r12) 为广义内积,所以 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 (a2−q1r12)/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分解,可以按行计算矩阵 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=ai−q1r1i,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=b−q1δ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=ai−q2r2i,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=b−q2δ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=aj−qirij,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=b−qiδ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^=R−1d ,即 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=(δi−∑j=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 即可保证数值稳定。如果所有权重大小差不多,则不必排序,可直接计算。注意此时不能采用阻尼倒数法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。