基于诱导降维(IDR)定理的IDR(s)是一类新的求解大型非对称线性系统的有效算法。本文将IDR(s)推广到求解具有多个右边的大型非对称线性系统。
本文首先给出了IDR定理的一个变体,然后在变体IDR(s)定理的基础上提出了块IDR(s)。
1. Introduction
考虑求解具有多个右侧边的大的稀疏线性系统
A
X
=
B
(1)
AX = B \tag{1}
AX=B(1)
系数矩阵A是n阶非奇异实数矩阵,, X = [ x 1 , x 2 , . . . , x m ] X = [x_1, x_2, . . . , x_m] X=[x1,x2,...,xm] and B = [ b 1 , b 2 , . . . , b m ] ∈ R n × m B = [b_1, b_2, . . . , b_m] ∈ R^{n×m} B=[b1,b2,...,bm]∈Rn×m(m ≪ n)
本文的其余部分组织如下。在下一节中,我们将回顾块Krylov子空间和IDR(s)。然后,我们将给出IDR定理的一个变体,它是IDR定理的推广和我们的块IDR(s)算法的理论基础,并在第3节中分析块方法。在第4节中,一些数值结果证明了该方法的有效性。最后,我们在第5节中作了一些总结性。
符号。 M n × n M_{n×n} Mn×n, N n × m N_{n×m} Nn×m表示矩阵。如果一个矩阵的维数从上下文中是明显的,并且没有混淆,我们将去掉索引,用 M M M表示 M n × n M_{n×n} Mn×n。 M H M^H MH是M的厄米特转置。
‖
M
‖
F
2
=
T
r
(
M
H
M
)
‖M‖^2_F=Tr(M^{H}M)
‖M‖F2=Tr(MHM),其中
‖
⋅
‖
F
‖·‖_F
‖⋅‖F和
T
r
(
⋅
)
Tr(·)
Tr(⋅)分别表示方阵的F范数和迹。除非另有说明,‖·‖是贯穿整个论文的欧几里得范数。
N
(
M
)
\mathcal{N} (M)
N(M)表示矩阵M的空空间。
2. The block Krylov subspace and IDR(s)
2.1. Block Krylov subspace
设 X 0 ∈ R n × m X_0∈R^{n×m} X0∈Rn×m为初始猜测, R 0 = B − A X 0 R_0=B−AX_0 R0=B−AX0为对应的块残差矩阵。
Definition 2.1 由
A
A
A产生的子空间
K
k
(
A
,
R
0
)
\mathcal{K}_k(A,R_0)
Kk(A,R0)和A应用于
R
0
R_0
R0的升幂
被称为块Krylov子空间。
矩阵Krylov子空间,其定义如下。
Definition 2.2 由
A
A
A产生的子空间
K
k
(
A
,
R
0
)
\mathbb{K}_k(A,R_0)
Kk(A,R0)和A应用于
R
0
R_0
R0的升幂
Definition 2.3 正整数
v
:
=
v
(
R
0
,
A
)
v := v(R_0, A)
v:=v(R0,A),定义为
对于A,被称为
R
0
R_0
R0的块级。
Corollary 2.4 设
X
∗
X_∗
X∗是
A
X
=
B
AX=B
AX=B的精确块解
用于寻找近似解的方法
X
k
∈
X
0
+
K
k
(
A
,
R
0
)
X_{k} \in X_{0}+\mathcal{K}_{k}\left(A, R_{0}\right)
Xk∈X0+Kk(A,R0) 被称为块方法, 选择
X
k
∈
X
0
+
K
k
(
A
,
R
0
)
X_{k} \in X_{0}+\mathbb{K}_{k}\left(A, R_{0}\right)
Xk∈X0+Kk(A,R0) 导致所谓的全局方法. 如果我们选择
γ
i
=
α
i
I
m
×
m
(
i
=
0
,
1
,
…
,
k
−
1
)
,
K
k
\gamma_{i}=\alpha_{i} I_{m \times m}(i=0,1, \ldots, k-1), \mathbb{K}_{k}
γi=αiIm×m(i=0,1,…,k−1),Kk and
K
k
\mathcal{K}_{k}
Kk 可以是同一个子空间。 由此看来,矩阵 Krylov 子空间
K
k
(
A
,
R
0
)
\mathbb{K}_{k}\left(A, R_{0}\right)
Kk(A,R0) 可以认为是块 Krylov 子空间的子空间
K
k
(
A
,
R
0
)
\mathcal{K}_{k}\left(A, R_{0}\right)
Kk(A,R0), i.e.
K
k
(
A
,
R
0
)
⊂
K
k
(
A
,
R
0
)
\mathbb{K}_{k}\left(A, R_{0}\right) \subset \mathcal{K}_{k}\left(A, R_{0}\right)
Kk(A,R0)⊂Kk(A,R0).
对于块求解器,让
Z
=
[
z
1
,
z
2
,
…
,
z
m
]
∈
K
k
Z=\left[z_{1}, z_{2}, \ldots, z_{m}\right] \in \mathcal{K}_{k}
Z=[z1,z2,…,zm]∈Kk, where
z
i
∈
R
n
(
i
=
1
,
…
,
m
)
z_{i} \in \mathbb{R}^{n}(i=1, \ldots, m)
zi∈Rn(i=1,…,m). F从(2)的定义来看,有
γ
j
′
s
∈
R
m
×
m
(
j
=
0
,
…
,
k
−
1
)
\gamma_{j}{ }^{\prime} s \in \mathbb{R}^{m \times m}(j=0, \ldots, k-1)
γj′s∈Rm×m(j=0,…,k−1) 满足
Z
=
∑
j
=
0
k
−
1
A
j
R
0
γ
j
Z=\sum_{j=0}^{k-1} A^{j} R_{0} \gamma_{j}
Z=j=0∑k−1AjR0γj
这意味着
z
i
=
∑
l
=
1
m
∑
j
=
0
k
−
1
γ
j
(
l
,
i
)
A
j
R
0
(
:
,
l
)
∈
B
k
(
A
,
R
0
)
z_{i}=\sum_{l=1}^{m} \sum_{j=0}^{k-1} \gamma_{j}(l, i) A^{j} R_{0}(:, l) \in \mathscr{B}_{k}\left(A, R_{0}\right)
zi=l=1∑mj=0∑k−1γj(l,i)AjR0(:,l)∈Bk(A,R0)
where
B
k
(
A
,
R
0
)
:
=
K
k
(
A
,
R
0
(
:
,
1
)
)
+
⋯
+
K
k
(
A
,
R
0
(
:
,
m
)
)
\mathscr{B}_{k}\left(A, R_{0}\right):=\mathcal{K}_{k}\left(A, R_{0}(:, 1)\right)+\cdots+\mathcal{K}_{k}\left(A, R_{0}(:, m)\right)
Bk(A,R0):=Kk(A,R0(:,1))+⋯+Kk(A,R0(:,m)).
所以
X
k
=
X
0
+
Z
∈
K
k
X_{k}=X_{0}+Z \in \mathcal{K}_{k}
Xk=X0+Z∈Kk 的列对应于
m
m
m 单右手线性系统的近似解。但是,与标准 Krylov 求解器不同,块 Krylov 求解器在每个右侧的搜索空间要大得多,即,近似解
X
k
(
:
,
l
)
=
X
0
(
:
,
l
)
+
B
k
(
A
,
R
0
)
X_{k}(:, l)=X_{0}(:, l)+\mathcal{B}_{k}\left(A, R_{0}\right)
Xk(:,l)=X0(:,l)+Bk(A,R0) are updated instead of
X
k
(
:
,
l
)
=
X
0
(
:
,
l
)
+
K
k
(
A
,
R
0
(
:
,
l
)
)
X_{k}(:, l)=X_{0}(:, l)+\mathcal{K}_{k}\left(A, R_{0}(:, l)\right)
Xk(:,l)=X0(:,l)+Kk(A,R0(:,l)). 这是使用块方法的主要原因。
2.2. IDR(s)
Theorem 2.5 (IDR). 设
A
∈
C
n
×
n
,
v
0
∈
C
n
A \in \mathbb{C}^{n \times n}, v_{0} \in \mathbb{C}^{n}
A∈Cn×n,v0∈Cn, and
g
0
=
K
v
(
A
,
v
0
)
g_{0}=\mathcal{K}_{v}\left(A, v_{0}\right)
g0=Kv(A,v0). 设
S
⊂
C
n
S \subset \mathbb{C}^{n}
S⊂Cn 并定义递归子空间
g
j
g_{j}
gj 为
g
j
=
(
I
−
ω
j
A
)
(
g
j
−
1
∩
S
)
,
(
ω
j
≠
0
)
∈
C
,
j
=
1
,
2
,
…
g_{j}=\left(I-\omega_{j} A\right)\left(g_{j-1} \cap S\right), \quad\left(\omega_{j} \neq 0\right) \in \mathbb{C}, j=1,2, \ldots
gj=(I−ωjA)(gj−1∩S),(ωj=0)∈C,j=1,2,…
如果
g
0
∩
S
g_{0} \cap S
g0∩S 不包含
A
A
A,的任何特征向量,则保持如下:
(a)
g
j
⊂
g
j
−
1
,
∀
j
>
0
g_{j} \subset g_{j-1}, \forall j>0
gj⊂gj−1,∀j>0.
(b)
g
j
=
{
0
}
\mathcal{g}_{j}=\{0\}
gj={0} for some
j
≤
n
j \leq n
j≤n.
从该定理中,我们知道级数嵌套子空间的维数随着序列子空间 g j g_{j} gj的缩小而减小。如果所有的剩余 r i s r_is ris都可以在嵌套的子空间 g j g_{j} gj中构造,我们可以在有限步长中得到近似解。在IDR(s)方法[23]的一般情况下,最多需要 n + n / s n+n/s n+n/s个矩阵向量积。
s+2项IDR(s)算法可以作为IDR定理的推导如下。
要初始化
r
1
,
…
,
r
s
r_1,…,r_s
r1,…,rs,可以使用任何相当迭代的方法,例如,BiCGStab
然后,从方程(3)(4),近似解 x i + 1 x_{i+1} xi+1可以更新为
为了确定
s
s
s个变量
γ
j
\gamma_j
γj,可以选择空间
S
S
S为某些
n
×
s
n×s
n×s矩阵的左空空间,
P
=
[
p
1
,
.
.
.
,
p
s
]
P = [p_1, . . . , p_s]
P=[p1,...,ps], i.e.,
S
=
N
(
P
H
)
S = N (P^H )
S=N(PH),这可以随机生成,因为空间
S
∩
g
0
S∩g_0
S∩g0包含A的一些特征向量(s)的概率为零[23]。然后可以从方程中求解
γ
j
\gamma_j
γj
P
H
v
i
=
0.
P^H v_i = 0.
PHvi=0.
在形成整个算法之前,还需要计算一个参数
ω
j
+
1
ω_{j+1}
ωj+1,[23]建议通过每
s
+
1
s+1
s+1步最小化残差
r
i
+
1
r_{i+1}
ri+1的范数来选择
ω
ω
ω。
3. The block IDR(s)
在本节中,我们考虑具有多个右侧的非对称线性系统。为了提出IDR(s)的块版本,我们首先给出了IDR定理的一个变体,它是在第3.1节中对IDR定理的一个扩展。为了从变体IDR定理中给出一个可执行的过程,我们分别在第3.2节和第3.3节中讨论了实现细节,并阐述了所提出的算法。然后,在第3.4节中,我们比较了IDR(s)和块IDR(s)之间的计算成本和内存需求,并分析了通过矩阵向量运算计算的收敛性。最后,在第3.5节中给出了一个块IDR(s)算法的预处理版本。
3.1. A variant of the IDR theorem
从块初始残差r0和系数矩阵A中,可以生成块Krylov子空间。基于块Krylov子空间,可以自然地得到IDR定理的一个变体。在本节中,我们首先给出了变体IDR定理,这是我们所提出的方法的理论基础。
3.2. Implementation details
因为块IDR(s)是IDR(s)的自然扩展,所以s+2项块IDR(s)方法可以推导出类似于等式。(3)-(5)作为变体IDR定理的翻译。