本文学习过程来源是《矩阵分析与应用-张贤达》一书. 可以通过 z-lib 下载.
G i v e n s \mathrm{Givens} Givens 旋转也可以用来计算 Q R \mathrm{QR} QR 分解. 这里以 4 × 3 4 \times 3 4×3 矩阵为例, 说明 G i v e n s Q R \mathrm{Givens \ QR} Givens QR 分解的思想.
[
×
×
×
×
×
×
⊗
×
×
⊗
×
×
]
⟶
G
(
3
,
4
)
[
×
×
×
⊗
×
×
⊗
×
×
0
×
×
]
⟶
G
(
2
,
3
)
[
⊗
×
×
⊗
×
×
0
×
×
0
×
×
]
⟶
G
(
1
,
2
)
[
×
×
×
0
×
×
0
⊗
×
0
⊗
×
]
⟶
G
(
3
,
4
)
[
×
×
×
0
⊗
×
0
⊗
×
0
0
×
]
⟶
G
(
2
,
3
)
[
×
×
×
0
×
×
0
0
⊗
0
0
⊗
]
⟶
G
(
3
,
4
)
[
×
×
×
0
×
×
0
0
×
0
0
0
]
其中 ⊗ \otimes ⊗ 代表用 G i v e n s \mathrm{Givens} Givens 旋转进行变换的元素. 变换过程就是乘以箭头上用 G ( i , j ) G(i,j) G(i,j) 表示的 G i v e n s \mathrm{Givens} Givens 矩阵.
从上述说明中易得出结论: 如果令 G j G_j Gj 代表约化过程中的第 j j j 次 G i v e n s \mathrm{Givens} Givens 旋转, 则 Q T A = R Q^{\mathrm{T}}A=R QTA=R 是上三角矩阵, 其中, Q = G t G t − 1 ⋯ G 1 Q = G_tG_{t-1} \cdots G_1 Q=GtGt−1⋯G1, 而 t t t 是总的旋转次数.
归根到底还是为了解方程, 不论是有解还是最小二乘法, Q R \mathrm{QR} QR 分解都是一个不错的选择.
系统辨识问题的提法是: 已知系统输入 x ( k ) x(k) x(k) 和输出观测值 y ( k ) y(k) y(k), 其中, k = 1 , 2 , ⋯ , n k = 1,2,\cdots,n k=1,2,⋯,n 估计系统参数向量 θ \theta θ. 在时变系统的辨识中, 则要求在已估计 n n n 时刻的系统参数向量 θ n \theta_n θn 的情况下, 使用增加的 x ( n + 1 ) , y ( n + 1 ) x(n+1),y(n+1) x(n+1),y(n+1) 值, 通过简单的运算, 递推出 n + 1 n + 1 n+1 时刻的系统参数向量 θ n + 1 \theta_{n+1} θn+1. n n n 时刻的系统辨识问题可以化为最小二乘问题.
看起来有点像预测方面的问题.
min θ n ∥ A n θ n − y n ∥ 2 2 (1) \min_{\theta_n} \lVert A_n\theta_n - y_n \rVert^2_2 \tag{1} θnmin∥Anθn−yn∥22(1)
求解, 并且其解由 “法方程”
A n T A n θ n = A n T y n 或 者 R x x θ n = r n (2) A_n^{\mathrm{T}}A_n\theta_n = A_n^{\mathrm{T}}y_n \ 或者 \ R_{xx}\theta_n = r_n \tag{2} AnTAnθn=AnTyn 或者 Rxxθn=rn(2)
确定. 式中, R x x = A n T A n R_{xx} = A_n^{\mathrm{T}}A_n Rxx=AnTAn 代表系统输入 x ( k ) x(k) x(k) 的协方差矩阵, r n = A n T y n r_n = A_n^{\mathrm{T}}y_n rn=AnTyn.
之间求解式 (2) 的方法叫做协方差方法.
引理 1: 若
A
n
=
Q
n
[
R
n
O
]
,
Q
n
T
y
n
=
[
y
ˉ
n
y
~
n
]
A_n = Q_n
θ
n
+
1
=
arg min
θ
∥
A
n
+
1
θ
−
y
n
+
1
∥
2
2
=
arg min
θ
∥
[
λ
R
n
x
n
+
1
T
]
θ
−
[
λ
y
ˉ
n
y
(
n
+
1
)
]
∥
2
2
(3)
算法 1: 系统参数的自适应估计算法
Step 1 : 对矩阵
R
ˉ
=
[
λ
R
n
x
n
+
1
T
]
\bar{R} =
Q
n
+
1
T
R
ˉ
=
Q
n
+
1
T
[
λ
R
n
x
n
+
1
T
]
=
[
R
n
+
1
O
]
(4)
Q_{n+1}^{\mathrm{T}} \bar{R} = Q_{n+1}^{\mathrm{T}}
式子中, Q n + 1 Q_{n+1} Qn+1 是 ( n + 1 ) × ( n + 1 ) (n+1) \times (n+1) (n+1)×(n+1) 正交矩阵, R n + 1 R_{n+1} Rn+1 为 ( p + 1 ) × ( p + 1 ) (p+1) \times (p+1) (p+1)×(p+1) 上三角矩阵, 且 O O O 是 ( n − p ) × ( p + 1 ) (n-p) \times (p+1) (n−p)×(p+1) 零矩阵.
Step 2 : 进行分块运算
Q
n
+
1
T
y
n
+
1
=
[
y
ˉ
n
+
1
y
~
n
+
1
]
Q_{n+1}^{\mathrm{T}}y_{n+1} =
其中, y ˉ n + 1 \bar{y}_{n+1} yˉn+1 为 ( p + 1 ) × 1 (p+1) \times 1 (p+1)×1 向量, y ~ n + 1 \tilde{y}_{n+1} y~n+1 为 ( n − p ) × 1 (n-p) \times 1 (n−p)×1 向量
Step 3 : 求解三角矩阵方程 R n + 1 θ n + 1 = y ˉ n + 1 R_{n+1}\theta_{n+1} = \bar{y}_{n+1} Rn+1θn+1=yˉn+1 得到 θ n + 1 \theta_{n+1} θn+1
考查 n × ( p + 1 ) n \times (p+1) n×(p+1) 矩阵
A
n
=
[
a
11
a
12
⋯
a
1
,
p
+
1
a
21
a
22
⋯
a
2
,
p
+
1
⋮
⋮
⋮
a
n
1
a
n
2
⋯
a
n
,
p
+
1
]
A_n =
的 H o u s e h o l d e r Q R \mathrm{Householder \ QR} Householder QR 分解, 即
H
n
A
n
=
[
a
11
∗
a
12
∗
⋯
a
1
,
p
+
1
∗
0
a
22
∗
⋯
a
2
,
p
+
1
∗
⋮
⋮
⋮
0
0
⋯
a
p
+
1
,
p
+
1
∗
0
0
⋯
0
⋮
⋮
⋮
0
0
⋯
0
]
(5)
H_nA_n =
为了得到上述 Q R \mathrm{QR} QR 分解, 应该选择 H n H_n Hn 为 p p p 个 H o u s e h o l d e r \mathrm{Householder} Householder 变换矩阵之积, 即
H n = H n ( p ) H n ( p − 1 ) ⋯ H n ( 1 ) (6) H_n = H_n(p)H_n(p-1)\cdots H_n(1) \tag{6} Hn=Hn(p)Hn(p−1)⋯Hn(1)(6)
式中
H n ( j ) = I − u j u j T / σ j , j = 1 , 2 , ⋯ , p (7) H_n(j) = I - u_ju_j^{\mathrm{T}}/\sigma_j, \quad j = 1,2,\cdots,p \tag{7} Hn(j)=I−ujujT/σj,j=1,2,⋯,p(7)
是对矩阵 A n ( j ) = H n ( j − 1 ) H n ( 2 ) H n ( 1 ) A n A_n^{(j)} = H_n(j-1)H_n(2)H_n(1)A_n An(j)=Hn(j−1)Hn(2)Hn(1)An 第 j j j 列向量 [ a 1 j ( j ) , a 2 j ( j ) , ⋯ , a n j ( j ) ] T [a_{1j}^{(j)},a_{2j}^{(j)},\cdots,a_{nj}^{(j)}]^{\mathrm{T}} [a1j(j),a2j(j),⋯,anj(j)]T 进行的 H o u s e h o l d e r \mathrm{Householder} Householder 变换矩阵, 其参数选择方法为
α
j
=
∑
i
=
j
n
[
a
i
j
(
j
)
]
2
σ
j
=
α
j
(
α
j
+
∣
a
j
j
(
j
)
∣
)
u
j
(
i
)
=
{
0
i
<
j
a
j
j
(
j
)
+
s
g
n
(
a
j
j
(
j
)
)
α
j
j
=
i
a
i
j
(
j
)
i
>
j
}
,
j
=
1
,
2
,
⋯
,
p
(8)
\left.
其中
A n ( j + 1 ) = A n ( j ) − u j q j T (9) A_n^{(j+1)} = A_n^{(j)} - u_jq_j^{\mathrm{T}} \tag{9} An(j+1)=An(j)−ujqjT(9)
并且
q j T = u j T A n ( j ) / σ j (10) q_j^{\mathrm{T}} = u_j^{\mathrm{T}}A_n^{(j)}/\sigma_j \tag{10} qjT=ujTAn(j)/σj(10)
算法 2: 基于 H o u s e h o l d e r Q R \mathrm{Householder} \ QR Householder QR 分解的快速自适应参数估计算法


递推求解 σ n \sigma_n σn 的变换量 δ n \delta_n δn, 而不是之间递推求 σ n + 1 \sigma_{n+1} σn+1 本身. 其式子应该为
σ n + 1 = σ n + δ n (11) \sigma_{n+1} = \sigma_{n} + \delta_n \tag{11} σn+1=σn+δn(11)
问题的关键就在于更新 δ n \delta_n δn
假定正交矩阵 Q ~ \tilde{Q} Q~ 为已知, 满足
Q
~
[
λ
R
n
x
n
+
1
T
]
=
[
R
n
+
1
O
]
(12)
\tilde{Q}
化简得到
δ
n
=
arg min
δ
n
∥
[
R
n
+
1
O
]
δ
n
−
Q
~
[
0
u
(
n
+
1
)
]
∥
(13)
\delta_n = \argmin_{\delta_n} \bigg \lVert
式中, u ( n + 1 ) = y ( n + 1 ) − x n + 1 T θ n u(n+1) = y(n+1) - x_{n+1}^{\mathrm{T}}\theta_n u(n+1)=y(n+1)−xn+1Tθn. 因此, δ n \delta_n δn 可以从三角矩阵方程
R n + 1 δ n = y ˉ n + 1 (14) R_{n+1}\delta_n = \bar{y}_{n+1} \tag{14} Rn+1δn=yˉn+1(14)
解出, 其中, y ˉ k + 1 \bar{y}_{k+1} yˉk+1 满足
[
y
ˉ
n
+
1
r
(
n
+
1
)
]
=
Q
~
[
0
u
(
n
+
1
)
]
(15)
为求出 Q ~ \tilde{Q} Q~, 需要对增广矩阵
[
λ
R
n
0
x
n
+
1
T
u
(
n
+
1
)
]
(16)
( ! ! ! 在这个地方存疑, 不能很好的理解这个增广矩阵的由来 )
执行所需要的清零. 综上所述, 每一步递推更新需要的步骤如下
(1) 计算预测误差 y k + 1 − ϕ k + 1 T θ k y_{k+1} - \phi_{k+1}^{\mathrm{T}}\theta_k yk+1−ϕk+1Tθk
(2) 形成式子 (16) 中的 ( n + 1 ) × ( n + 1 ) (n+1) \times (n+1) (n+1)×(n+1) 矩阵
(3) 利用一系列 G i v e n s \mathrm{Givens} Givens 旋转将上述矩阵最底一行的左边 n n n 个元素扫除为零
(4) 解上三角矩阵方程得到 δ k \delta_k δk