写在前面
- 1 SOR简介
- 2 SOR算法推导
- 3 SOR算法收敛性
- 4 实例分析
- 5 代码实现
- 6 参考文献与链接
迭代法收敛定理
定理1(充要条件):
矩阵
M
\mathbf{M}
M的谱半径
ρ
(
M
)
=
max
i
{
λ
i
∣
i
=
1
,
2
,
⋯
n
}
<
1
(
∥
M
∥
2
<
1
)
(1)
\rho \left( \mathbf{M} \right) =\mathop {\max} \limits_i\left\{ \lambda _i\left| i=1,2,\cdots n \right. \right\} <1\left( \lVert \mathbf{M} \rVert _2<1 \right) \,\, \tag{1}
ρ(M)=imax{λi∣i=1,2,⋯n}<1(∥M∥2<1)(1)
定理2(充分条件):
矩阵
M
\mathbf{M}
M的某个算子范数
∥
M
∥
<
1
(2)
\lVert \mathbf{M} \rVert <1 \tag{2}
∥M∥<1(2)
1 SOR简介
SOR是Successive Over Relaxation(逐次超松弛)的缩写。该方法是求解大型稀疏矩阵方程组的有效方法之一,也可看作为Gauss-Seidel迭代法的加速,Gauss-Seidel是SOR迭代的一种特殊形式。
2 SOR算法推导
将方程组
A
X
=
b
\mathbf{AX}=b
AX=b写成
a
i
1
x
1
+
a
i
2
x
2
+
⋯
+
a
i
,
i
−
1
x
i
−
1
+
a
i
i
x
i
⋯
+
a
i
n
x
n
=
b
i
,
(
i
=
1
,
2
,
⋯
,
n
)
(2.1)
a_{i 1} x_{1}+a_{i 2} x_{2}+\cdots+a_{i, i-1} x_{i-1}+a_{i i} x_{i} \cdots+a_{i n} x_{n}=b_{i}, \quad(i=1,2, \cdots, n)\tag{2.1}
ai1x1+ai2x2+⋯+ai,i−1xi−1+aiixi⋯+ainxn=bi,(i=1,2,⋯,n)(2.1)
则
⇒
a
i
i
x
i
=
b
i
−
(
a
i
1
x
1
+
a
i
2
x
2
+
⋯
+
a
i
,
i
−
1
x
i
−
1
)
−
(
a
i
,
i
+
1
x
i
+
1
+
⋯
+
a
i
n
x
n
)
⇒
a
i
i
x
i
=
a
i
i
x
i
+
(
b
i
−
a
i
1
x
1
−
a
i
2
x
2
−
⋯
−
a
i
,
i
−
1
x
i
−
1
−
a
i
i
x
i
−
a
i
,
i
+
1
x
i
+
1
−
⋯
−
a
i
n
x
n
)
⇒
x
i
=
x
i
+
1
a
i
i
(
b
i
−
a
i
1
x
1
−
a
i
2
x
2
−
⋯
−
a
i
,
i
−
1
x
i
−
1
−
a
i
t
x
i
−
a
i
,
i
+
1
x
i
+
1
−
⋯
−
a
i
n
x
n
)
\begin{aligned} &\Rightarrow a_{i i} x_{i}=b_{i}-\left(a_{i 1} x_{1}+a_{i 2} x_{2}+\cdots+a_{i, i-1} x_{i-1}\right)-\left(a_{i, i+1} x_{i+1}+\cdots+a_{i n} x_{n}\right)\\ &\Rightarrow a_{i i} x_{i}=a_{i i} x_{i}+\left(b_{i}-a_{i 1} x_{1}-a_{i 2} x_{2}-\cdots-a_{i, i-1} x_{i-1}-a_{i i} x_{i}-a_{i, i+1} x_{i+1}-\cdots-a_{i n} x_{n}\right)\\ &\Rightarrow x_{i}=x_{i}+\frac{1}{a_{i i}}\left(b_{i}-a_{i 1} x_{1}-a_{i 2} x_{2}-\cdots-a_{i, i-1} x_{i-1}-a_{i t} x_{i}-a_{i, i+1} x_{i+1}-\cdots-a_{i n} x_{n}\right) \end{aligned}
⇒aiixi=bi−(ai1x1+ai2x2+⋯+ai,i−1xi−1)−(ai,i+1xi+1+⋯+ainxn)⇒aiixi=aiixi+(bi−ai1x1−ai2x2−⋯−ai,i−1xi−1−aiixi−ai,i+1xi+1−⋯−ainxn)⇒xi=xi+aii1(bi−ai1x1−ai2x2−⋯−ai,i−1xi−1−aitxi−ai,i+1xi+1−⋯−ainxn)
于是Gauss-Seidel迭代法可写成(
a
i
,
i
≠
0
a_{i,i}\ne 0
ai,i=0)
x
i
(
k
+
1
)
=
x
i
(
k
)
+
1
a
i
i
(
b
i
−
a
i
1
x
1
(
k
+
1
)
−
⋯
−
a
i
,
i
−
1
x
i
−
1
(
k
+
1
)
−
a
i
n
x
i
(
k
)
−
⋯
−
a
i
n
x
n
(
k
)
)
=
x
i
(
k
)
+
1
a
i
i
(
b
i
−
∑
j
=
1
i
−
1
a
i
j
x
j
(
k
+
1
)
−
∑
j
=
i
n
a
i
j
x
j
(
k
)
)
r
i
(
k
)
=
(
b
i
−
∑
j
=
1
i
−
1
a
i
j
x
j
(
k
+
1
)
−
∑
j
=
i
n
a
i
j
x
j
(
k
)
)
,
i
=
1
,
2
,
⋯
,
n
(2.2)
\begin{array}{c} x_{i}^{(k+1)}=x_{i}^{(k)}+\frac{1}{a_{i i}}\left(b_{i}-a_{i 1} x_{1}^{(k+1)}-\cdots-a_{i, i-1} x_{i-1}^{(k+1)}-a_{i n} x_{i}^{(k)}-\cdots-a_{i n} x_{n}^{(k)}\right) \\ =x_{i}^{(k)}+\frac{1}{a_{i i}}\left(b_{i}-\sum_{j=1}^{i-1} a_{i j} x_{j}^{(k+1)}-\sum_{j=i}^{n} a_{i j} x_{j}^{(k)}\right) \\ r_{i}^{(k)}=\left(b_{i}-\sum_{j=1}^{i-1} a_{i j} x_{j}^{(k+1)}-\sum_{j=i}^{n} a_{i j} x_{j}^{(k)}\right), \quad i=1,2, \cdots, n \end{array}\tag{2.2}
xi(k+1)=xi(k)+aii1(bi−ai1x1(k+1)−⋯−ai,i−1xi−1(k+1)−ainxi(k)−⋯−ainxn(k))=xi(k)+aii1(bi−∑j=1i−1aijxj(k+1)−∑j=inaijxj(k))ri(k)=(bi−∑j=1i−1aijxj(k+1)−∑j=inaijxj(k)),i=1,2,⋯,n(2.2)
记
r
i
(
k
)
=
(
b
i
−
∑
j
=
1
i
−
1
a
i
j
x
j
(
k
+
1
)
−
∑
j
=
i
n
a
i
j
x
j
(
k
)
)
,
i
=
1
,
2
,
⋯
,
n
r_{i}^{(k)}=\left(b_{i}-\sum_{j=1}^{i-1} a_{i j} x_{j}^{(k+1)}-\sum_{j=i}^{n} a_{i j} x_{j}^{(k)}\right), \quad i=1,2, \cdots, n
ri(k)=(bi−j=1∑i−1aijxj(k+1)−j=i∑naijxj(k)),i=1,2,⋯,n
则(2.2)式可写成
x
i
(
k
+
1
)
=
x
i
(
k
)
+
1
a
i
i
r
i
(
k
)
(2.3)
x_{i}^{(k+1)}=x_{i}^{(k)}+\frac{1}{a_{i i}} r_{i}^{(k)}\tag{2.3}
xi(k+1)=xi(k)+aii1ri(k)(2.3)
由(2.3)式可看出,Gauss-Seidel迭代法的第
k
+
1
k+1
k+1步的基础上每个分量上加上
1
a
i
i
r
i
(
k
)
\frac{1}{a_{i i}} r_{i}^{(k)}
aii1ri(k)。为了获得更快的收敛效果,在修正项的前面乘以一个参数
ω
\omega
ω,于是得到逐次超松弛算法
x
i
(
k
+
1
)
=
x
i
(
k
)
+
ω
a
i
i
r
i
(
k
)
,
i
=
1
,
2
,
⋯
,
n
(2.4)
x_{i}^{(k+1)}=x_{i}^{(k)}+\frac{\omega}{a_{i i}} r_{i}^{(k)}, \quad i=1,2, \cdots, n\tag{2.4}
xi(k+1)=xi(k)+aiiωri(k),i=1,2,⋯,n(2.4)
即
x
i
(
k
+
1
)
=
(
1
−
ω
)
x
i
(
k
)
+
ω
a
i
i
(
b
i
−
∑
j
=
1
i
−
1
a
i
j
x
j
(
k
+
1
)
−
∑
j
=
i
+
1
n
a
i
j
x
j
(
k
)
)
,
i
=
1
,
2
,
⋯
,
n
(2.5)
x_{i}^{(k+1)}=(1-\omega) x_{i}^{(k)}+\frac{\omega}{a_{i i}}\left(b_{i}-\sum_{j=1}^{i-1} a_{i j} x_{j}^{(k+1)}-\sum_{j=i+1}^{n} a_{i j} x_{j}^{(k)}\right), \quad i=1,2, \cdots, n\tag{2.5}
xi(k+1)=(1−ω)xi(k)+aiiω(bi−j=1∑i−1aijxj(k+1)−j=i+1∑naijxj(k)),i=1,2,⋯,n(2.5)
其矩阵形式为
X
(
k
+
1
)
=
(
1
−
ω
)
X
(
k
)
+
ω
D
−
1
(
b
+
L
X
(
k
)
+
U
X
(
k
)
)
(2.6)
\mathbf{X}^{(k+1)}=(1-\omega) \mathbf{X}^{(k)}+\omega \mathbf{D}^{-1}\left(b+\mathbf{L} \mathbf{X}^{(k)}+\mathbf{U} \mathbf{X}^{(k)}\right)\tag{2.6}
X(k+1)=(1−ω)X(k)+ωD−1(b+LX(k)+UX(k))(2.6)
其中,
A
=
D
−
L
−
U
\mathbf{A=D-L-U}
A=D−L−U
D
=
(
a
11
a
22
⋱
a
n
n
)
,
L
=
(
0
a
21
0
⋮
⋱
⋱
a
n
1
a
n
2
⋯
0
)
,
U
=
(
0
a
12
⋯
a
1
n
0
⋱
a
2
n
⋱
⋮
0
)
\mathbf{D}=\left( \begin{matrix} a_{11}& & & \\ & a_{22}& & \\ & & \ddots& \\ & & & a_{nn}\\ \end{matrix} \right), \mathbf{L}=\left( \begin{matrix} 0& & & \\ a_{21}& 0& & \\ \vdots& \ddots& \ddots& \\ a_{n1}& a_{n2}& \cdots& 0\\ \end{matrix} \right) , \mathbf{U}=\left( \begin{matrix} 0& a_{12}& \cdots& a_{1n}\\ & 0& \ddots& a_{2n}\\ & & \ddots& \vdots\\ & & & 0\\ \end{matrix} \right)
D=⎝⎜⎜⎛a11a22⋱ann⎠⎟⎟⎞,L=⎝⎜⎜⎜⎛0a21⋮an10⋱an2⋱⋯0⎠⎟⎟⎟⎞,U=⎝⎜⎜⎜⎛0a120⋯⋱⋱a1na2n⋮0⎠⎟⎟⎟⎞
3 SOR算法收敛性
由(2.6)式有
D
X
(
k
+
1
)
=
(
1
−
ω
)
D
X
(
k
)
+
ω
(
b
+
L
X
(
k
+
1
)
+
U
X
(
k
)
)
\mathbf{DX}^{\left( k+1 \right)}=\left( 1-\omega \right) \mathbf{DX}^{\left( k \right)}+\omega \left( b+\mathbf{LX}^{\left( k+1 \right)}+\mathbf{UX}^{\left( k \right)} \right)
DX(k+1)=(1−ω)DX(k)+ω(b+LX(k+1)+UX(k))
即
D
X
(
k
+
1
)
−
ω
L
X
(
k
+
1
)
=
(
1
−
ω
)
D
X
(
k
)
+
ω
U
X
(
k
)
+
ω
b
\mathbf{D} \mathbf{X}^{(k+1)}-\omega \mathbf{L} \mathbf{X}^{(k+1)}=(1-\omega) \mathbf{D} \mathbf{X}^{(k)}+\omega \mathbf{U} \mathbf{X}^{(k)}+\omega b
DX(k+1)−ωLX(k+1)=(1−ω)DX(k)+ωUX(k)+ωb
于是有
(
D
−
ω
L
)
X
(
k
+
1
)
=
[
(
1
−
ω
)
D
+
ω
U
]
X
(
k
)
+
ω
b
⇒
X
(
k
+
1
)
=
(
D
−
ω
L
)
−
1
[
(
1
−
ω
)
D
+
ω
U
]
X
(
k
)
+
ω
(
D
−
ω
L
)
−
1
b
\begin{array}{l} (\mathbf{D}-\omega \mathbf{L}) \mathbf{X}^{(k+1)}=[(1-\omega) \mathbf{D}+\omega \mathbf{U}] \mathbf{X}^{(k)}+\omega b \\ \Rightarrow \mathbf{X}^{(k+1)}=(\mathbf{D}-\omega \mathbf{L})^{-1}[(1-\omega) \mathbf{D}+\omega \mathbf{U}] \mathbf{X}^{(k)}+\omega(\mathbf{D}-\omega \mathbf{L})^{-1} b \end{array}
(D−ωL)X(k+1)=[(1−ω)D+ωU]X(k)+ωb⇒X(k+1)=(D−ωL)−1[(1−ω)D+ωU]X(k)+ω(D−ωL)−1b
记
{
B
ω
=
(
D
−
ω
L
)
−
1
[
(
1
−
ω
)
D
+
ω
U
]
F
ω
=
ω
(
D
−
ω
L
)
−
1
b
(3.1)
\left\{\begin{array}{c} \mathbf{B}_{\omega}=(\mathbf{D}-\omega \mathbf{L})^{-1}[(1-\omega) \mathbf{D}+\omega \mathbf{U}] \\ \mathbf{F}_{\omega}=\omega(\mathbf{D}-\omega \mathbf{L})^{-1} b \end{array}\right. \tag{3.1}
{Bω=(D−ωL)−1[(1−ω)D+ωU]Fω=ω(D−ωL)−1b(3.1)
则有
X
(
k
+
1
)
=
B
ω
(
X
)
(
k
)
+
F
ω
(3.2)
\mathbf{X}^{(k+1)}=\mathbf{B_{\omega}} \mathbf(X)^{(k)}+\mathbf{F_{\omega}} \tag{3.2}
X(k+1)=Bω(X)(k)+Fω(3.2)
其中,
B
ω
\mathbf{B_{ \omega}}
Bω为SOR迭代矩阵。
由收敛定理的定理1和定理2可知,SOR收敛的充要条件是
ρ
(
B
ω
)
<
1
\rho{(\mathbf{B_{\omega}})}<1
ρ(Bω)<1或者
∥
B
ω
∥
2
<
1
\lVert \mathbf{B}_{\omega} \rVert _2 <1
∥Bω∥2<1,可以看出SOR迭代法收敛与否或收敛的快慢都与松弛因子
ω
\omega
ω有关,因此SOR迭代算法存在如下定理.
定理3: SOR迭代法收敛的充要条件是松弛因子
0
<
ω
<
2
0<\omega<2
0<ω<2 .
证:由于SOR收敛,则
ρ
(
B
ω
)
<
1
\rho{(\mathbf{B_{\omega}})}<1
ρ(Bω)<1。记
B
ω
\mathbf{B_{\omega}}
Bω的特征值为
λ
1
,
λ
2
,
⋯
,
λ
n
\lambda _1,\lambda _2,\cdots ,\lambda _n
λ1,λ2,⋯,λn,而
n
n
n阶矩阵的
n
n
n个特征值之积等于其行列式之值,即
∣
det
B
ω
∣
=
∣
λ
1
λ
2
⋯
λ
n
∣
\left|\operatorname{det} \mathbf{B}_{\omega}\right|=\left|\lambda_{1} \lambda_{2} \cdots \lambda_{n}\right|
∣detBω∣=∣λ1λ2⋯λn∣
而
∣
λ
i
∣
≤
∣
ρ
(
B
ω
)
∣
\left|\lambda_{i}\right| \leq\left|\rho\left(\mathbf{B}_{\omega}\right)\right|
∣λi∣≤∣ρ(Bω)∣
故
∣
det
B
ω
∣
=
∣
λ
1
λ
2
⋯
λ
n
∣
≤
[
ρ
(
B
ω
)
]
n
<
1
\left|\operatorname{det} \mathbf{B}_{\omega}\right|=\left|\lambda_{1} \lambda_{2} \cdots \lambda_{n}\right| \leq\left[\rho\left(\mathbf{B}_{\omega}\right)\right]^{n}<1
∣detBω∣=∣λ1λ2⋯λn∣≤[ρ(Bω)]n<1
另一方面,由
B
ω
=
(
D
−
ω
L
)
−
1
[
(
1
−
ω
)
D
+
ω
U
]
\mathbf{B}_{\omega}=(\mathbf{D}-\omega \mathbf{L})^{-1}[(1-\omega) \mathbf{D}+\omega \mathbf{U}]
Bω=(D−ωL)−1[(1−ω)D+ωU]
有
∣
det
B
ω
∣
=
∣
det
(
D
−
ω
L
)
−
1
∣
⋅
∣
det
[
(
1
−
ω
)
D
+
ω
U
]
\left|\operatorname{det} \mathbf{B}_{\omega}\right|=\left|\operatorname{det}(\mathbf{D}-\omega \mathbf{L})^{-1}\right| \cdot | \operatorname{det}[(1-\omega) \mathbf{D}+\omega \mathbf{U}]
∣detBω∣=∣∣det(D−ωL)−1∣∣⋅∣det[(1−ω)D+ωU]
即
∣
det
B
ω
∣
=
∣
det
[
(
1
−
ω
)
D
+
ω
U
]
∣
∣
det
(
D
−
ω
L
)
∣
=
∣
1
−
ω
∣
n
\left|\operatorname{det} \mathbf{B}_{\omega}\right|=\frac{|\operatorname{det}[(1-\omega) \mathbf{D}+\omega \mathbf{U}]|}{|\operatorname{det}(\mathbf{D}-\omega \mathbf{L})|}=|1-\omega|^{n}
∣detBω∣=∣det(D−ωL)∣∣det[(1−ω)D+ωU]∣=∣1−ω∣n
因此有
∣
1
−
ω
∣
n
<
1
|1-\omega|^{n}<1
∣1−ω∣n<1或者
∣
1
−
ω
∣
<
1
|1-\omega|<1
∣1−ω∣<1,也即
0
<
ω
<
2
0<\omega<2
0<ω<2.
□
\square
□
定理4:如果矩阵
A
\mathbf{A}
A是对称正定的,则SOR法对于
0
<
ω
<
2
0<\omega<2
0<ω<2是收敛的。
4 实例分析
用逐次超松弛(SOR)迭代法求解方程组
A
X
=
b
\mathbf{AX}=b
AX=b,其中矩阵
A
\mathbf{A}
A为
A
=
[
12
−
2
1
−
2
12
−
2
1
1
−
2
12
−
2
1
⋱
⋱
⋱
⋱
⋱
1
−
2
12
−
2
1
1
−
2
12
−
2
1
−
2
12
]
[
x
1
x
2
x
3
⋮
x
18
x
19
x
20
]
=
[
5
5
5
⋮
5
5
5
]
(4.1)
\mathbf{A}=\left[\begin{array}{ccccccc} 12 & -2 & 1 & & & & \\ -2 & 12 & -2 & 1 & & & \\ 1 & -2 & 12 & -2 & 1 & & \\ & \ddots & \ddots & \ddots & \ddots & \ddots & \\ & & 1 & -2 & 12 & -2 & 1 \\ & & & 1 & -2 & 12 & -2 \\ & & & & 1 & -2 & 12 \end{array}\right]\left[\begin{array}{c} x_{1} \\ x_{2} \\ x_{3} \\ \vdots \\ x_{18} \\ x_{19} \\ x_{20} \end{array}\right]=\left[\begin{array}{c} 5 \\ 5 \\ 5 \\ \vdots \\ 5 \\ 5 \\ 5 \end{array}\right]\tag{4.1}
A=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡12−21−212−2⋱1−212⋱11−2⋱−211⋱12−21⋱−212−21−212⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡x1x2x3⋮x18x19x20⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡555⋮555⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤(4.1)
利用Matlab2016a软件求解(4.1)式(具体程序见第五节),讨论不同的松弛因子
ω
\omega
ω对迭代速度的影响。其中参数设置为:最大迭代值为500。
由于(4.1)式是一个对称正定阵,且本文规定松弛因子
0
<
ω
<
2
0<\omega<2
0<ω<2,因此由定理4可知,式(4.1)一定收敛,也即有解。求解的结果如下表。
|
|
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
.
由表1或图1可知,(1)当SOR迭代法松弛因子 ω > 1 \omega>1 ω>1时, ω \omega ω值越大,迭代的次数就越多,收敛速度就越慢, ω \omega ω越接近1时,迭代的次数越少,收敛速度越快;(2)当SOR迭代法松弛因子 ω < 1 \omega<1 ω<1时, ω \omega ω越小,迭代的次数就越多,收敛速度就越慢, ω \omega ω越接近1时,迭代的次数越少,收敛速度越快;(3)SOR迭代法松弛因子不在范围内时,系数矩阵的谱半径大于1,不收敛。
小结
- 在SOR迭代算法中,松弛因子 ω \omega ω越接近1时,迭代的次数越小,收敛速度越快,故 ω \omega ω最优值应选择 ω = 1 \omega=1 ω=1。
- 在SOR迭代算法中,松弛因子 ω \omega ω距离1越远时,迭代次数越多,收敛速度越慢。
- 在SOR迭代算法中,松弛因子应选择 0 < ω < 2 0<\omega<2 0<ω<2,当 ω \omega ω超过这个范围时,不满足收敛定理,即谱半径不小于1,此时方程无解。
5 代码实现
close all;clear;clc;%清空环境变量
load('A.mat');%导入矩阵A
b=5*ones(20,1);%导入矩阵b
D=diag(diag(A));%求解对角阵
LA=tril(A);%抽取下三角矩阵
U=LA-A;%得到去除对角线元素的上三角阵
L=D-LA;%得到去除对角线元素的下三角阵
XXX=[];%存储不同松弛因子的迭代值
I=[];%记录迭代终止次数
for w=0.3:0.3:2;%设置松弛因子大小0<w<2
XX=[];
%% SOR迭代公式
M=(D-w*L)\((1-w)*D+w*U);
f=w*((D-w*L)\b);
MaxEigM = max(abs(eig(M)));%求谱半径
x=[];
x(:,1)=5.*randn(size(b));%给出任意的迭代初始值
N=500;%最大迭代次数
%% 如果谱半径小于1则说明收敛,否则不收敛
if MaxEigM<1
i=1;
while i<N
if norm(A*x(:,i)-b)>=1e-10;
x(:,i+1)=M*x(:,i)+f;
z=x(:,i+1);
i=i+1;
else
n=i;
z=x(:,i);
i=N;
end
end
XX=[XX,x];
I=[I length(XX)];
XXX=[XXX XX];
e=norm(A*z-b);
else
out='谱半径大于等于1,该方程不能用SOR方法求解'
end
end
%% 绘图
subplot(2,3,1)
plot(1:I(1,1),XXX(:,1:I(1,1)),'linewidth',1.5)
grid on
title('\omega = 0.3')
subplot(2,3,2)
plot(1:I(1,2),XXX(:,1:I(1,2)),'linewidth',1.5)
grid on
title('\omega = 0.6')
subplot(2,3,3)
plot(1:I(1,3),XXX(:,1:I(1,3)),'linewidth',1.5)
grid on
title('\omega = 0.9')
subplot(2,3,4)
plot(1:I(1,4),XXX(:,1:I(1,4)),'linewidth',1.5)
grid on
title('\omega = 1.2')
subplot(2,3,5)
plot(1:I(1,5),XXX(:,1:I(1,5)),'linewidth',1.5)
grid on
title('\omega = 1.5')
subplot(2,3,6)
plot(1:I(1,6),XXX(:,1:I(1,6)),'linewidth',1.5)
grid on
title('\omega = 1.8')
suptitle('不同\omega值对SOR迭代法的影响')
数据下载地址
可关注微信公众号用数学看世界回复“SOR密码”获取数据下载地址及密码
6 参考文献与链接
[1] 数值分析 曾繁慧
[2] 科学计算与应用软件讲义_迭代思想 胡行华
[3] https://mdnice.com/
[4] Markdown Nice插件下载
[5] Markdown三线表制作方法
为了能够敲公式,第一次使用Markdown写文章,有很多不足之处请谅解
Markdown真香,更多内容请关注公众号获取