前面介绍了四元数的定义以及什么是四元数的实保结构算法,接下来,我将介绍几个简单的利用实保结构算法的数值算法。
Givens变换
在数值算法中有一种算法叫做Givens变换,先简单介绍一下:
Givens变换是指形如:
的矩阵,其中
c
,
s
∈
R
c,s\in\mathbb{R}
c,s∈R满足
∣
c
∣
2
+
∣
s
∣
2
=
1
|c|^2+|s|^2=1
∣c∣2+∣s∣2=1。有时我们亦称Givens变换为
(
i
,
j
)
(i,j)
(i,j)平面的平面旋转变换。显然,
T
i
j
=
G
(
i
,
j
;
c
,
s
)
T_{ij}=G(i,j;c,s)
Tij=G(i,j;c,s)是一个正交阵。
设
x
=
(
ξ
1
,
ξ
2
,
.
.
.
,
ξ
n
)
T
∈
C
n
x=(\xi_1,\xi_2,...,\xi_n)^T\in \mathbb{C}^n
x=(ξ1,ξ2,...,ξn)T∈Cn。并设
y
=
G
(
i
,
j
;
c
,
s
)
,
x
=
(
η
1
,
η
2
,
.
.
.
,
η
n
)
T
y=G(i,j;c,s), x=(\eta_1,\eta_2,...,\eta_n)^T
y=G(i,j;c,s),x=(η1,η2,...,ηn)T。容易验证,当
∣
ξ
i
∣
2
+
∣
η
j
∣
2
≠
0
|\xi_i|^2+|\eta_j|^2\ne0
∣ξi∣2+∣ηj∣2=0时,若取
c
=
∣
ξ
i
∣
∣
ξ
i
∣
2
+
∣
ξ
j
∣
2
,
s
=
ξ
j
‾
∣
ξ
i
∣
2
+
∣
ξ
j
∣
2
ξ
i
∣
ξ
i
∣
,
c=\frac{|\xi_i|}{\sqrt{|\xi_i|^2+|\xi_j|^2}}, s=\frac{\overline{\xi_j}}{\sqrt{|\xi_i|^2+|\xi_j|^2}}\frac{\xi_i}{|\xi_i|},
c=∣ξi∣2+∣ξj∣2∣ξi∣,s=∣ξi∣2+∣ξj∣2ξj∣ξi∣ξi,
则有
η
k
=
ξ
k
,
k
≠
i
,
η
i
=
ξ
i
∣
ξ
i
∣
∣
ξ
i
∣
2
+
∣
ξ
j
∣
2
,
η
j
=
0
,
\eta_k=\xi_k,k\ne i, \eta_i=\frac{\xi_i}{|\xi_i|}\sqrt{|\xi_i|^2+|\xi_j|^2},\eta_j=0,
ηk=ξk,k=i,ηi=∣ξi∣ξi∣ξi∣2+∣ξj∣2,ηj=0,
即可以通过Givens变换把向量
x
x
x的第j个分量化为零。
上面是在复数域上的Givens变换,同样适用于实数域上,但是是否可以运用在四元数域上呢?答案是可以的,不过如果直接运用四元数去求解
c
c
c和
s
s
s的话,会比较复杂,这里,我们可以运用实表示的方法来运用四元数Givens变换。
这里,我就直接给出实表示的
G
G
G的构造形式。
乍一看,这还有点小复杂,不过仔细端详一下,大家就可以发现这是符合实表示矩阵的结构的,即满足:
其中
1
≤
l
≤
n
,
α
0
,
α
1
,
α
2
,
α
3
∈
[
−
π
/
2
,
π
/
2
)
1\le l \le n,\alpha_0,\alpha_1,\alpha_2,\alpha_3\in[-\pi/2,\pi/2)
1≤l≤n,α0,α1,α2,α3∈[−π/2,π/2)并且
cos
2
α
0
+
cos
2
α
1
+
cos
2
α
2
+
cos
2
α
3
=
1
\cos^2{\alpha_0}+\cos^2{\alpha_1}+\cos^2{\alpha_2}+\cos^2{\alpha_3}=1
cos2α0+cos2α1+cos2α2+cos2α3=1。上述矩阵是
J
R
S
JRS
JRS正交辛矩阵。
注意到当
α
2
≡
α
3
≡
0
\alpha_2 \equiv \alpha_3 \equiv 0
α2≡α3≡0时,上述Givens变换矩阵
G
l
G_l
Gl为一个
4
n
×
4
n
4n\times 4n
4n×4n的辛Givens旋转。
上述的四元数表示的Givens矩阵,可以将一个四元数向量的第
l
l
l个元素化为0。
是不是很神奇呢,这里建议大家可以去用MATLAB变成实现一下,对该算法的理解会更加直观。
Householder变换
Householder变换是指如下形式的矩阵
H
(
w
)
=
I
−
2
w
w
∗
,
H(w)=I-2ww^*,
H(w)=I−2ww∗,
其中
w
∈
C
n
w\in\mathbb{C}^n
w∈Cn满足
w
∗
w
=
1
w^*w=1
w∗w=1。容易验证Householder变换具有如下基本性质:
- d e t H ( w ) = − 1 detH(w)=-1 detH(w)=−1;
- H ( w ) ∗ = H ( w ) = H ( w ) − 1 H(w)^*=H(w)=H(w)^{-1} H(w)∗=H(w)=H(w)−1;
- 对任意
u
∈
w
⊥
u\in w^\bot
u∈w⊥,有
H ( w ) ( u + β w ) = u − β w , β ∈ C ; H(w)(u+\beta w) = u-\beta w, \beta\in \mathbb{C}; H(w)(u+βw)=u−βw,β∈C; - 设
a
,
b
∈
C
n
,
a
≠
b
a,b\in \mathbb{C}^n,a\ne b
a,b∈Cn,a=b,则存在Householder变换
H
(
w
)
H(w)
H(w)使得
H
(
w
)
a
=
b
H(w)a=b
H(w)a=b成立的充分必要条件是
a ∗ a = b ∗ b , a ∗ b = b ∗ a ; a^*a=b^*b, a^*b=b^*a; a∗a=b∗b,a∗b=b∗a;
并且在上述条件成立时,所需的向量w可取作
w
=
e
i
θ
a
−
b
(
a
−
b
)
∗
(
a
−
b
)
,
w=e^{i\theta}\frac{a-b}{\sqrt{(a-b)^*(a-b)}},
w=eiθ(a−b)∗(a−b)a−b,
其中,
θ
\theta
θ为任意实数。
**注:**有Householder变换的性质
(
4
)
(4)
(4)可知,对任给的
a
=
(
α
1
,
α
2
,
.
.
.
,
α
n
)
T
≠
0
,
a=(\alpha_1,\alpha_2,...,\alpha_n)^T\ne0,
a=(α1,α2,...,αn)T=0,
若令
δ
=
{
1
,
当
α
1
=
0
时
,
α
1
‾
/
∣
α
1
∣
,
当
α
1
时
,
\delta=\left\{ \begin{matrix} 1, & \text{当}\alpha_1=0\text{时},\\ \overline{\alpha_1}/|\alpha_1|, & \text{当}\alpha_1\text{时}, \end{matrix} \right.
δ={1,α1/∣α1∣,当α1=0时,当α1时,
并取
w
=
δ
a
+
∣
∣
a
∣
∣
2
e
1
(
δ
a
+
∣
∣
a
∣
∣
2
e
1
)
∗
(
δ
a
+
∣
∣
a
∣
∣
2
e
1
)
=
δ
a
+
∣
∣
a
∣
∣
2
e
1
2
∣
∣
a
∣
∣
2
(
∣
∣
a
∣
∣
2
+
∣
α
1
∣
)
,
w=\frac{\delta a+||a||_2e_1}{\sqrt{(\delta a+||a||_2e_1)^*(\delta a+||a||_2e_1)}}=\frac{\delta a+||a||_2e_1}{\sqrt{2||a||_2(||a||_2+|\alpha_1|)}},
w=(δa+∣∣a∣∣2e1)∗(δa+∣∣a∣∣2e1)δa+∣∣a∣∣2e1=2∣∣a∣∣2(∣∣a∣∣2+∣α1∣)δa+∣∣a∣∣2e1,
则有
H
(
w
)
a
=
−
δ
‾
∣
∣
a
∣
∣
2
e
1
.
H(w)a=-\overline{\delta}||a||_2e_1.
H(w)a=−δ∣∣a∣∣2e1.而且当a是实向量时,这样得到的
H
(
w
)
H(w)
H(w)是实对称正交矩阵。
好了,上面就是对于复数域以及实数域上的Householder变换的一个描述以及具体的求解方法,接下来,我们就看看如何运用实表示方法来表示四元数矩阵的Householder变换。
这里我们直接给出实表示的Householder矩阵:
其中
v
v
v是一个长度为
n
n
n且第
l
−
1
l-1
l−1个元素为0的向量,
β
\beta
β是一个标量满足
β
(
β
v
T
v
−
2
)
=
0
\beta(\beta v^Tv-2)=0
β(βvTv−2)=0.
通过对该矩阵的观察,我们可以看到该矩阵是四个 n × n n\times n n×n的Householder矩阵的直和,同样的,该矩阵也是 J R S JRS JRS正交辛矩阵,且满足实表示矩阵的结构。
总结
到这里,我们就是简单介绍了如何用实表示的方法来对四元数矩阵来实施Givens变换和Householder变换,这两种变换在我看来是非常基础的,在后面的诸如保结构特征分解,保结构QR分解中都会用到。建议感兴趣的可以自己去编程实现一下。