数值分析重难点总结「一」

该博客总结了数值分析重难点,涵盖数值计算误差(绝对误差、相对误差等)、线性方程组直接解法(Gauss消去法等)与迭代解法(Jacobi方法等)、非线性方程求根(二分法等)以及方阵特征值和特征向量计算(乘幂法等)等内容,并给出相关公式和收敛条件。

数值分析重难点总结「一」

一、数值计算中的误差

1. 绝对误差

对于准确数 x∗x^*x 和近似值 xxx,两者之差即为绝对误差,即 E=x−x∗E=x-x^*E=xx.

绝对误差限 ε\varepsilonε 即为绝对误差的上界,即 ∣E∣=∣x−x∗∣⩽ε|E|=|x-x^*|\leqslant\varepsilonE=xxε.

对于 x∗x^*x 的近似值 x=±0.a1a2…an×10mx=\pm0.a_1a_2\dots a_n\times10^mx=±0.a1a2an×10m ,若误差 ∣x−x∗∣⩽12×10m−l|x-x^*|\leqslant\dfrac{1}{2}\times10^{m-l}xx21×10ml ,则 xxxlll 位有效数字。

例如, π\piπ 的近似值 3.14163.14163.1416 有五位有效数字。

2. 相对误差

Ex∗=x−x∗x∗\dfrac{E}{x^*}=\dfrac{x-x^*}{x^*}xE=xxx 为近似值 xxx 的相对误差,相对误差限 εr\varepsilon_rεr 即为相对误差的上限,即

εr=εx∗⩾∣x−x∗∣∣x∗∣=∣RE∣ \varepsilon_r=\dfrac{\varepsilon}{x^*} \geqslant \dfrac{|x-x^*|}{|x^*|}= |RE| εr=xεxxx=RE

设近似值 x=±0.a1a2…an×10mx=\pm0.a_1a_2\dots a_n\times10^mx=±0.a1a2an×10mnnn 位有效数字,则其相对误差限为

εr⩽12a1×10−n+1 \varepsilon_r \leqslant \dfrac1{2a_1}\times10^{-n+1} εr2a11×10n+1

3. 数值运算的误差估计

对于函数 f(x)f(x)f(x) 的误差限估计式

ε(f(x))≈∣f′(x)∣ε(x) \varepsilon(f(x)) \approx |f'(x)| \varepsilon(x) ε(f(x))f(x)ε(x)

对于 A=f(x1,x2,…,xn)A=f(x_1,x_2,\dots ,x_n)A=f(x1,x2,,xn) ,计算 A∗=f(x1∗,x2∗,…,xn∗)A^*=f(x_1^*,x_2^*,\dots ,x_n^*)A=f(x1,x2,,xn) 时的误差限为

ε(A)≈∑k=1n∣ ∂f(x1,x2,…,xn)∂xk∣ε(xk) \varepsilon(A) \approx\sum_{k=1}^n\left|\ \frac{\partial f(x_1,x_2,\dots ,x_n)}{\partial x_k}\right|\varepsilon(x_k) ε(A)k=1n xkf(x1,x2,,xn)ε(xk)

当函数是二元函数时,公式成为

ε(f(x,y))≈∣∂f(x,y)∂x∣ε(x)+∣∂f(x,y)∂y∣ε(y) \varepsilon(f(x,y)) \approx\left|\frac{\partial f(x,y)}{\partial x}\right| \varepsilon(x) + \left|\frac{\partial f(x,y)}{\partial y}\right| \varepsilon(y) ε(f(x,y))xf(x,y)ε(x)+yf(x,y)ε(y)

设近似数 xxxyyy 的误差限分别为 ε(x)\varepsilon(x)ε(x)ε(y)\varepsilon(y)ε(y) ,则他们的四则运算后的误差限为

{ε(x±y)≈ε(x)+ε(y)ε(x⋅y)≈∣y∣ε(x)+∣x∣ε(y)ε(x/y)≈∣y∣ε(x)+∣x∣ε(y)∣y∣2 (y≠0) \left\{ \begin{array}{l} \varepsilon(x\pm y) \approx \varepsilon(x) +\varepsilon(y) \\ \varepsilon(x\cdot y) \approx|y|\varepsilon(x) +|x|\varepsilon(y) \\ \varepsilon(x/y) \approx \dfrac{|y|\varepsilon(x) +|x|\varepsilon(y)}{|y|^2}\ (y\neq 0) \\ \end{array} \right . ε(x±y)ε(x)+ε(y)ε(xy)yε(x)+xε(y)ε(x/y)y2yε(x)+xε(y) (y=0)

4. 数值计算的原则

  1. 避免相近数做减法运算。
  2. 避免分式中分母的绝对值远小于分子的绝对值。
  3. 避免大数「吃」小数。

五、非线性方程求根

1. 二分法

基本思想: 先利用零点定理确定根的存在区间,然后将含根 α\alphaα 的区间对分,通过判别对分点函数值的符号,将有根区间缩小一般;重复以上过程,将根的存在区间缩到充分小,从而求出满足进度要求的根的近似值。

二分法的优点是方法和计算都简单,且对函数 f(x)f ( x )f(x) 的性质要求不高,只需连续即可。缺点是收敛速度慢,也不能求偶数重根。

2. 不动点迭代法

将方程由 f(x)=0f ( x ) =0f(x)=0 转化为等价的形式 x=g(x)x=g ( x )x=g(x)。带入初值 x0x_0x0,不断迭代得到 x1,x2⋯x_1,x_2\cdotsx1,x2,当 α=g(α)\alpha=g ( \alpha )α=g(α) 时,α\alphaα 是方程 f(x)=0f ( x ) =0f(x)=0 的根。称函数 g(x)g ( x )g(x) 为迭代函数,称 α\alphaα 是它的一个不动点。

3. 迭代法的收敛性

定义 5.2 若存在常数 L>0L>0L>0,使 ∣g(x1)−g(x2)∣⩽L∣x1−x2∣|g ( x_1 ) -g ( x_2 ) |\leqslant L|x_1-x_2|g(x1)g(x2)Lx1x2∀x1,x2∈[a,b]\forall x_1,x_2 \in [a,b]x1,x2[a,b],则称函数 g(x)g ( x )g(x)[a,b][a,b][a,b] 满足 Lipschitz 条件,LLL 称为 Lipschitz 常数。

常取 L=max⁡x∈[a,b]∣g′(x)∣L=\max\limits_{x \in [a,b]}|g' ( x ) |L=x[a,b]maxg(x),并用 ∣g′(x)∣<1|g' ( x ) |<1g(x)<1 来判断迭代公式是否收敛。

4. 迭代法的收敛速度 ( 收敛阶 )

定义 5.3 记第 kkk 次迭代误差为 εk=α−xk\varepsilon_k=\alpha-x_kεk=αxk,并假设迭代公式是收敛的,若存在实数 p⩾1p\geqslant 1p1 使得
lim⁡k→∞∣εk+1∣∣εk∣p=C≠0 \lim\limits_{k\rarr\infin}\dfrac{|\varepsilon_{k+1}|}{|\varepsilon_k|^p}=C\neq 0 klimεkpεk+1=C=0

则称迭代公式是 ppp 阶收敛的,CCC 称为渐进误差常数。

p=1,C<1p=1,C<1p=1,C<1,则称迭代公式为线性收敛;若 p=2p=2p=2,则称迭代公式为二阶收敛;若 1<p<21<p<21<p<2,或 p=1p=1p=1c=0c=0c=0 则称迭代公式为超线性收敛。

定理 5.3 对迭代公式 xk+1=g(xk)x_{k+1}=g ( x_k )xk+1=g(xk),若 g(p)(x)g^{( p )} ( x )g(p)(x) 在根 α\alphaα 的领域内连续,且
g′(x)=g′′(x)=⋯=g(p−1)(α)=0 g' ( x ) =g'' ( x ) =\cdots=g^{( p-1 )} ( \alpha ) =0 g(x)=g′′(x)==g(p1)(α)=0

则迭代公式在根 α\alphaα 的领域内至少是 ppp 阶收敛的 ( ppp 是正整数 ) ;若还有 g(p)(α)≠0g^{( p )} ( \alpha ) \neq 0g(p)(α)=0,则迭代公式在根 α\alphaα 的领域内是 ppp 阶收敛的。

5. Newton 迭代法

迭代公式:
xk+1=xk−f(xk)f′(xk)(f′(xk)≠0) x_{k+1}=x_k-\dfrac{f(x_k)}{f'(x_k)}\quad(f'(x_k)\neq 0) xk+1=xkf(xk)f(xk)(f(xk)=0)

收敛速度:Newton 法在单根处具有二阶收敛性,但 Newton 法一般只有局部收敛性。

简化 Newton 法: 为了避免每次计算 f′(xk)f'(x_k)f(xk) 增大了计算工作量。可取一常数 C=f′(x0)C=f'(x_0)C=f(x0) 代替 f′(xk)f'(x_k)f(xk)
xk+1=xk−f(xk)f′(x0),  k=0,1,2,⋯ x_{k+1}=x_k-\dfrac{f(x_k)}{f'(x_0)},\ \ k=0,1,2,\cdots xk+1=xkf(x0)f(xk),  k=0,1,2,

割线法: Newton 迭代法需要计算函数的导数,当求导数有困难时,用差商 f(xk)−f(xk−1)xk−xk−1\dfrac{f(x_k)-f(x_{k-1})}{x_k-x_{k-1}}xkxk1f(xk)f(xk1) 近似代替微商 f′(x)f'(x)f(x) 有迭代公式
xk+1=xk−xk−xk−1f(xk)−f(xk−1)f(xk),  k=1,2,3,⋯ x_{k+1}=x_k-\dfrac{x_k-x_{k-1}}{f(x_k)-f(x_{k-1})}f(x_k),\ \ k=1,2,3,\cdots xk+1=xkf(xk)f(xk1)xkxk1f(xk),  k=1,2,3,

二、线性方程组的直接解法

1. Gauss 消去法

Gauss 消去法是利用一系列的初等行变换,将线性方程组 Ax=bAx=bAx=b 的增广矩阵 [A∣b][A|b][Ab] 转化为上三角矩阵。

(A(1)b(1))=[a11(1)a12(1)⋯a1n(1)b1(1)a21(1)a22(1)⋯a2n(1)b2(1)⋮⋮⋮⋮an1(1)an2(1)⋯ann(1)bn(1)]ri←ri−li1×r1→(i=2,3,⋯ ,n)[a11(1)a12(1)⋯a1n(1)b1(1)0a22(2)⋯a2n(2)b2(2)⋮⋮⋮⋮0an2(2)⋯ann(2)bn(2)]=(A(2)b(2))→⋯→[a11(1)a12(1)⋯a1n(1)b1(1)a12(2)⋯a2n(2)b2(2)⋱⋮⋮ann(n)bn(n)]=(A(n)b(n)) (A^{(1)}\quad b^{(1)})= \left[ \begin{array}{cccc|c} a^{(1)}_{11} & a^{(1)}_{12} &\cdots& a^{(1)}_{1n} & b^{(1)}_{1}\\ a^{(1)}_{21} & a^{(1)}_{22} &\cdots& a^{(1)}_{2n} & b^{(1)}_{2}\\ \vdots & \vdots & & \vdots & \vdots\\ a^{(1)}_{n1} & a^{(1)}_{n2} &\cdots& a^{(1)}_{nn} & b^{(1)}_{n}\\ \end{array} \right] {\underset{(i=2,3,\cdots,n)}{\underrightarrow{r_i\larr r_i-l_{i1}\times r_1}}} \left[ \begin{array}{cccc|c} a^{(1)}_{11} & a^{(1)}_{12} &\cdots& a^{(1)}_{1n} & b^{(1)}_{1}\\ 0 & a^{(2)}_{22} &\cdots& a^{(2)}_{2n} & b^{(2)}_{2}\\ \vdots & \vdots & & \vdots & \vdots\\ 0 & a^{(2)}_{n2} &\cdots& a^{(2)}_{nn} & b^{(2)}_{n}\\ \end{array} \right] \\ =(A^{(2)}\quad b^{(2)})\rightarrow\cdots\rightarrow \left[ \begin{array}{cccc|c} a^{(1)}_{11} & a^{(1)}_{12} &\cdots& a^{(1)}_{1n} & b^{(1)}_{1}\\ & a^{(2)}_{12} &\cdots& a^{(2)}_{2n} & b^{(2)}_{2}\\ & & \ddots & \vdots & \vdots\\ & & & a^{(n)}_{nn} & b^{(n)}_{n}\\ \end{array} \right] =(A^{(n)}\quad b^{(n)}) (A(1)b(1))=a11(1)a21(1)an1(1)a12(1)a22(1)an2(1)a1n(1)a2n(1)ann(1)b1(1)b2(1)bn(1)(i=2,3,,n)ririli1×r1a11(1)00a12(1)a22(2)an2(2)a1n(1)a2n(2)ann(2)b1(1)b2(2)bn(2)=(A(2)b(2))a11(1)a12(1)a12(2)a1n(1)a2n(2)ann(n)b1(1)b2(2)bn(n)=(A(n)b(n))

2. 列主元消去法

在方程 A(k)x=b(k)A^{(k)}x=b^{(k)}A(k)x=b(k) 进行第 kkk 次消元前,先将第 kkk 列对角线及以下的元素中选出绝对值最大者,而后交换选中的第 iki_kik 行和第 kkk 行,然后再利用 Gauss 消去法进行消元运算。

3. 全主元消去法

在列主元的基础上,并不只是在第 kkk 列进行寻找最大值,而是在整个子块矩阵进行寻找,而后交换行列。

4. Gauss-Jordan 消去法

在方程 A(k)x=b(k)A^{(k)}x=b^{(k)}A(k)x=b(k) 进行第 kkk 次消元时,先将第 kkk 列对角线以上和以下的元素都转化为零,且再将对角线元素转化为 1。常用于矩阵求逆。

(A(k)b(k))=[1a1k⋯a1nb1⋱⋮⋮⋮1ak−1,k⋯ak−1,nbk−1akk⋯aknbk⋮⋮⋮ank⋯annbn] (A^{(k)}\quad b^{(k)})= \left[ \begin{array}{cccccc|c} 1 & & & a_{1k} &\cdots& a_{1n} & b_{1}\\ & \ddots & & \vdots & & \vdots & \vdots\\ & & 1 & a_{k-1,k} &\cdots& a_{k-1,n} & b_{k-1}\\ & & & a_{kk} & \cdots & a_{kn} & b_k\\ & & & \vdots & & \vdots & \vdots\\ & & & a_{nk} & \cdots & a_{nn} & b_{n}\\ \end{array} \right] (A(k)b(k))=11a1kak1,kakkanka1nak1,naknannb1bk1bkbn

5. 矩阵的 LULULU 分解

AAA 进行 LULULU 分解后,求解方程组 Ax=bAx=bAx=b 就等价于解两个三角形方程组:

{Ly=bUx=y \begin{cases} Ly=b \\ Ux=y \end{cases} {Ly=bUx=y

Doolittle 分解:

[a11a12⋯a1na21a22⋯a2n⋮⋮⋮an1an2⋯ann]=[1l211⋮⋮⋱ln1ln2⋯1][u11u12⋯u1nu22⋯u2n⋱⋮unn] \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \vdots & \vdots & & \vdots\\ a_{n1} & a_{n2} & \cdots & a_{nn}\\ \end{bmatrix}= \begin{bmatrix} 1 & & & \\ l_{21} & 1 & & \\ \vdots & \vdots & \ddots & \\ l_{n1} & l_{n2} & \cdots & 1\\ \end{bmatrix} \begin{bmatrix} u_{11} & u_{12} & \cdots & u_{1n}\\ & u_{22} & \cdots & u_{2n}\\ & & \ddots & \vdots\\ & & & u_{nn}\\ \end{bmatrix} a11a21an1a12a22an2a1na2nann=1l21ln11ln21u11u12u22u1nu2nunn

Crout 分解:

[a11a12⋯a1na21a22⋯a2n⋮⋮⋮an1an2⋯ann]=[l11l21l22⋮⋮⋱ln1ln2⋯lnn][1u12⋯u1n1⋯u2n⋱⋮1] \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \vdots & \vdots & & \vdots\\ a_{n1} & a_{n2} & \cdots & a_{nn}\\ \end{bmatrix}= \begin{bmatrix} l_{11} & & & \\ l_{21} & l_{22} & & \\ \vdots & \vdots & \ddots & \\ l_{n1} & l_{n2} & \cdots & l_{nn}\\ \end{bmatrix} \begin{bmatrix} 1 & u_{12} & \cdots & u_{1n}\\ & 1 & \cdots & u_{2n}\\ & & \ddots & \vdots\\ & & & 1\\ \end{bmatrix} a11a21an1a12a22an2a1na2nann=l11l21ln1l22ln2lnn1u121u1nu2n1

6. 平方根法

Cholesky 分解:

定理 2.5AAA 为对称正定矩阵,则存在三角分解 A=LLTA=LL^TA=LLT,其中 LLL 是非奇异下三角矩阵,当限定 LLL 的对角元素为正时,分解唯一。

平方根法:

[a11a12⋯a1na21a22⋯a2n⋮⋮⋮an1an2⋯ann]=[l11l21l22⋮⋮⋱ln1ln2⋯lnn][l11l21⋯ln1l22⋯ln2⋱⋮lnn] \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \vdots & \vdots & & \vdots\\ a_{n1} & a_{n2} & \cdots & a_{nn}\\ \end{bmatrix}= \begin{bmatrix} l_{11} & & & \\ l_{21} & l_{22} & & \\ \vdots & \vdots & \ddots & \\ l_{n1} & l_{n2} & \cdots & l_{nn}\\ \end{bmatrix} \begin{bmatrix} l_{11} & l_{21} & \cdots & l_{n1}\\ & l_{22} & \cdots & l_{n2}\\ & & \ddots & \vdots\\ & & & l_{nn}\\ \end{bmatrix} a11a21an1a12a22an2a1na2nann=l11l21ln1l22ln2lnnl11l21l22ln1ln2lnn

7. 追赶法

对三对角阵 AAA 做 Crout 分解,即得:

[b1c1a2b2c2⋱⋱⋱an−1bn−1cn−1anbn]=[α1γ2α2⋱⋱γn−1αn−1γnαn][1β11β2⋱⋱1βn−11] \begin{bmatrix} b_1 & c_1 & & & &\\ a_2 & b_2 & c_2 & & &\\ & \ddots & \ddots & \ddots & &\\ & & a_{n-1} & b_{n-1} & c_{n-1}\\ & & & a_{n} & b_{n}\\ \end{bmatrix}= \begin{bmatrix} \alpha_1 & & & & &\\ \gamma_2 & \alpha_2 & & & &\\ & \ddots & \ddots & & &\\ & & \gamma_{n-1} & \alpha_{n-1} & \\ & & & \gamma_{n} & \alpha_{n}\\ \end{bmatrix} \begin{bmatrix} 1 & \beta_1 & & & &\\ & 1 & \beta_2 & & &\\ & & \ddots & \ddots & &\\ & & & 1 & \beta_{n-1}\\ & & & & 1\\ \end{bmatrix} b1a2c1b2c2an1bn1ancn1bn=α1γ2α2γn1αn1γnαn1β11β21βn11

8. 向量和矩阵的范数

向量的范数:
x=(x1,x2,⋯ ,xn)Tx=(x_1,x_2,\cdots,x_n)^Tx=(x1,x2,,xn)T,常用的向量范数有:

∣∣x∣∣1=∑i=1n∣xi∣∣∣x∣∣2=(∑i=1nxi2)12∣∣x∣∣∞=max⁡1⩽i⩽n∣xi∣ ||x||_1=\sum\limits_{i=1}^{n}|x_i|\\ ||x||_2=(\sum\limits_{i=1}^{n}x_i^2)^{\frac{1}{2}}\\ ||x||_\infin=\max\limits_{1\leqslant i \leqslant n} |x_i|\\ ∣∣x1=i=1nxi∣∣x2=(i=1nxi2)21∣∣x=1inmaxxi

矩阵范数:

∣∣A∣∣1=max⁡1⩽j⩽n∑i=1n∣aij∣(最大列和范数,即各列元素绝对值和的最大值)∣∣A∣∣2=λ1(λ1 是 ATA 的最大特征值)∣∣A∣∣∞=max⁡1⩽i⩽n∑j=1n∣aij∣(最大行和范数,即各行元素绝对值和的最大值) \begin{aligned} &||A||_1=\max\limits_{1\leqslant j \leqslant n} \sum\limits_{i=1}^{n}|a_{ij}|&&(最大列和范数,即各列元素绝对值和的最大值)\\ &||A||_2=\sqrt{\lambda_1}&&(\lambda_1\ 是\ A^TA\ 的最大特征值)\\ &||A||_\infin=\max\limits_{1\leqslant i \leqslant n} \sum\limits_{j=1}^{n}|a_{ij}|&&(最大行和范数,即各行元素绝对值和的最大值)\\ \end{aligned} ∣∣A1=1jnmaxi=1naij∣∣A2=λ1∣∣A=1inmaxj=1naij(最大列和范数,即各列元素绝对值和的最大值)(λ1  ATA 的最大特征值)(最大行和范数,即各行元素绝对值和的最大值)

谱半径:
nnn 阶矩阵 AAA 的特征值为 λi(i=1,2,⋯ ,n)\lambda_i(i=1,2,\cdots,n)λi(i=1,2,,n),则称 ρ(A)=max⁡1⩽i⩽n∣λi∣\rho(A)=\max\limits_{1\leqslant i \leqslant n}|\lambda_{i}|ρ(A)=1inmaxλi 为矩阵 AAA 的谱半径,其中 ∣λi∣|\lambda_{i}|λi 表示特征值 λi\lambda_{i}λi 的模。

定理 2.9 ρ(A)⩽∣∣A∣∣\quad\rho(A)\leqslant||A||ρ(A)∣∣A∣∣.

定理 2.11AAA 为实对称矩阵,则有 ρ(A)=∣∣A∣∣2\rho(A)= ||A||_2ρ(A)=∣∣A2.

条件数:
nnn 阶方阵 AAA 非奇异,称 ∣∣A∣∣⋅∣∣A−1∣∣||A||\cdot||A^{-1}||∣∣A∣∣∣∣A1∣∣ 为矩阵 AAA 的条件数,记为 cond(A)\text{cond}(A)cond(A),即 cond(A)=∣∣A∣∣⋅∣∣A−1∣∣\text{cond}(A)= ||A||\cdot||A^{-1}||cond(A)=∣∣A∣∣∣∣A1∣∣.

三、线性方程组的迭代解法

1. Jacobi 方法

A=L+D+UA=L+D+UA=L+D+U,则方程 Ax=bAx=bAx=b 可以化为 (L+D+U)x=b⇒Dx=−(L+U)x+b(L+D+U)x=b \Rightarrow Dx=-(L+U)x+b(L+D+U)x=bDx=(L+U)x+b,有

x=−D−1(L+U)x+D−1b x=-D^{-1}(L+U)x+D^{-1}b x=D1(L+U)x+D1b
得 Jacobi 迭代法的矩阵形式为
x(k+1)=−D−1(L+U)x(k)+D−1b x^{(k+1)}=-D^{-1}(L+U)x^{(k)}+D^{-1}b x(k+1)=D1(L+U)x(k)+D1b
其中,
L=[0a210a31a320⋮⋮⋱⋱an1an2⋯an,n−10],D=[a11a22a33⋱ann],U=[0a12a13⋯a1n0a23⋯a2n0⋱⋮⋱an−1,n0] L=\begin{bmatrix} 0 & & & &\\ a_{21} & 0 & & &\\ a_{31} & a_{32} & 0 & &\\ \vdots & \vdots & \ddots & \ddots &\\ a_{n1} & a_{n2} & \cdots & a_{n,n-1} &0\\ \end{bmatrix},\quad D=\begin{bmatrix} a_{11} & & & &\\ & a_{22} & & &\\ & & a_{33} & &\\ & & & \ddots &\\ & & & & a_{nn}\\ \end{bmatrix},\quad U=\begin{bmatrix} 0 & a_{12} & a_{13} & \cdots & a_{1n}\\ & 0 & a_{23} & \cdots & a_{2n}\\ & & 0 & \ddots & \vdots\\ & & & \ddots & a_{n-1,n}\\ & & & & 0\\ \end{bmatrix} L=0a21a31an10a32an20an,n10,D=a11a22a33ann,U=0a120a13a230a1na2nan1,n0
一般带入初值 x(0)=[0,0,⋯ ,0]Tx^{(0)}=[0,0,\cdots,0]^Tx(0)=[0,0,,0]T.

2. Gauss-Seidel 迭代法

在 Jacobi 方法的迭代公式 Dx(k+1)=−Lx(k)−Ux(k)+bDx^{(k+1)}=-Lx^{(k)}-Ux^{(k)}+bDx(k+1)=Lx(k)Ux(k)+b 中,用 Lx(k+1)Lx^{(k+1)}Lx(k+1) 代替 Lx(k)Lx^{(k)}Lx(k),可得 Dx(k+1)=−Lx(k+1)−Ux(k)+bDx^{(k+1)}=-Lx^{(k+1)}-Ux^{(k)}+bDx(k+1)=Lx(k+1)Ux(k)+b,于是得 Gauss-Seidel 法的矩阵形式迭代公式

x(k+1)=−(D+L)−Ux(k)+(D+L)−1b x^{(k+1)}=-(D+L)^{-}Ux^{(k)}+(D+L)^{-1}b x(k+1)=(D+L)Ux(k)+(D+L)1b
一般带入初值 x(0)=[0,0,⋯ ,0]Tx^{(0)}=[0,0,\cdots,0]^Tx(0)=[0,0,,0]T.

3. 逐次超松弛法

逐次超松弛法 (SOR 法) 可以看成是 Gauss-Seidel 方法的加速,Seidel 迭代法是 SOR 法的特例。将 Seidel 的迭代公式改写为 Dx(k+1)=(1−ω)Dx(k)+ωDx(k+1)=(1−ω)Dx(k)+ω(b−Lx(k+1)−Ux(k))Dx^{(k+1)}=(1-\omega)Dx^{(k)}+\omega Dx^{(k+1)}=(1-\omega)Dx^{(k)}+\omega(b-Lx^{(k+1)}-Ux^{(k)})Dx(k+1)=(1ω)Dx(k)+ωDx(k+1)=(1ω)Dx(k)+ω(bLx(k+1)Ux(k)),得到 SOR 方法的矩阵形式迭代公式为

x(k+1)=−(D+ωL)−1[(1−ω)D−ωU]x(k)+ω(D+ωL)−1b x^{(k+1)}=-(D+\omega L)^{-1}[(1-\omega)D-\omega U]x^{(k)}+\omega(D+\omega L)^{-1}b x(k+1)=(D+ωL)1[(1ω)DωU]x(k)+ω(D+ωL)1b
一般带入初值 x(0)=[1,1,⋯ ,1]Tx^{(0)}=[1,1,\cdots,1]^Tx(0)=[1,1,,1]T.

4. 迭代法的收敛条件

从迭代矩阵判断收敛:

定理 3.1 对任意初始向量 x(0)x^{(0)}x(0),由迭代公式 x(k+1)=Bx(k)+fx^{(k+1)}=Bx^{(k)}+fx(k+1)=Bx(k)+f 产生的迭代序列 {x(k)}\{x^{(k)}\}{x(k)} 收敛的充分必要条件为 ρ(B)<1\rho(B)<1ρ(B)<1.

常用 ∣∣B∣∣1<1||B||_1<1∣∣B1<1∣∣B∣∣∞<1||B||_{\infin}<1∣∣B<1 来判别迭代法收敛,且 ∣∣B∣∣||B||∣∣B∣∣ 的值越小收敛就越快;但 ∣∣B∣∣⩾1||B||\geqslant1∣∣B∣∣1 时,不能由此断定迭代法不收敛。

从系数矩阵判断收敛:

定义 3.2 若矩阵 A=(aij)n×nA=(a_{ij})_{n\times n}A=(aij)n×n 满足 ∣aii∣⩾∑j=1,j≠in∣aij∣,i=1,2,⋯ ,n|a_{ii}|\geqslant \sum\limits_{j=1,j\neq i}^{n}|a_{ij}|,i=1,2,\cdots,naiij=1,j=inaij,i=1,2,,n,且至少有一个严格不等式成立,则称 AAA 对角占优。

∣aii∣>∑j=1,j≠in∣aij∣,i=1,2,⋯ ,n|a_{ii}| > \sum\limits_{j=1,j\neq i}^{n}|a_{ij}|,i=1,2,\cdots,naii>j=1,j=inaij,i=1,2,,n,则称 AAA 严格对角占优。

定义 3.3 若矩阵 AAA 经过行交换和相应的列交换,能够变成
(A11A120A22) \begin{pmatrix} A_{11} & A_{12} \\0 & A_{22} \end{pmatrix} (A110A12A22)

的形式,其中 A11A_{11}A11A22A_{22}A22 为方阵,则称 AAA 为可约矩阵,反之称 AAA 为不可约矩阵。

定理 3.3AAA 是严格对角占优或 AAA 是不可约对角占优,则解方程组 Ax=bAx=bAx=b 的 Jacobi 迭代法和 Gauss-Seidel 迭代法均收敛。

定理 3.4 SOR 法收敛的必要条件是 0<ω<20<\omega<20<ω<2.

定理 3.5AAA 为实对称正定矩阵,且 0<ω<20<\omega<20<ω<2,则解方程组 Ax=bAx=bAx=b 的 SOR 法收敛。

推论,若 AAA 是实对称正定矩阵,则解方程组 Ax=bAx=bAx=b 的 Gauss-Seidel 方法收敛,但 Jacobi 方法不一定收敛。

定理 3.6AAA2D−A2D-A2DA 均为实对称正定矩阵,则解方程组 Ax=bAx=bAx=b 的 Jacobi 迭代法收敛。

定理 3.7AAA 严格对角占优,则当 0<ω⩽10<\omega\leqslant 10<ω1 时 SOR 方法收敛。

四、方阵特征值和特征向量的计算

1. 乘幂法

乘幂法也称幂法,用来求矩阵按模最大特征值和相应的特征向量。

nnn 阶矩阵 AAA 具有 nnn 个线性无关的特征向量 x1,x2,⋯ ,xnx_1,x_2,\cdots,x_nx1,x2,,xn,相应的特征值 λ1,λ2,⋯ ,λn\lambda_1,\lambda_2,\cdots,\lambda_nλ1,λ2,,λn 满足

∣λ1∣>∣λ2∣⩾∣λ3∣⩾⋯⩾∣λn∣ |\lambda_1| > |\lambda_2| \geqslant |\lambda_3| \geqslant \cdots \geqslant |\lambda_n| λ1>λ2λ3λn

则对任取的非零向量 v0v_0v0,由 vk=Avk−1=⋯=Akv0,k=1,2,⋯v_k=Av_{k-1}=\cdots=A^kv_0,k=1,2,\cdotsvk=Avk1==Akv0,k=1,2,可产生一个向量序列 vk{v_k}vk.

定理 4.1 对上述向量序列 vk{v_k}vk 有:

1)lim⁡k→∞vkλ1k=a1x1\lim\limits_{k\rarr\infin}\dfrac{v_k}{\lambda_1^k}=a_1x_1klimλ1kvk=a1x1 (a1a_1a1 为常数);
2)lim⁡k→∞(vk+1)m(vk)m=λ1\lim\limits_{k\rarr\infin}\dfrac{(v_{k+1})_m}{(v_{k})_m}=\lambda_1klim(vk)m(vk+1)m=λ1. 其中 x1x_1x1λ1\lambda_1λ1 所对应的特征向量,(vk)m(v_k)_m(vk)m 表示 vkv_kvk 的第 mmm 个分量。

2. 改进的乘幂法

v0=u0=[1,1,⋯ ,1]Tv_0=u_0=[1,1,\cdots,1]^Tv0=u0=[1,1,,1]T,开始计算 λ1\lambda_1λ1

v1=Au0=Av0max⁡(v0),u1=v1max⁡(v1)=Av0max⁡(Av0)v2=Au1=A2v0max⁡(Av0),u2=v2max⁡(v2)=A2v0max⁡(A2v0)⋯⋯⋯vk=Auk−1=Akv0max⁡(Ak−1v0),uk=vkmax⁡(vk)=Akv0max⁡(Akv0) v_1=Au_0=\dfrac{Av_0}{\max(v_0)},\quad u_1=\dfrac{v_1}{\max(v_1)}=\dfrac{Av_0}{\max(Av_0)}\\[8pt] v_2=Au_1=\dfrac{A^2v_0}{\max(Av_0)},\quad u_2=\dfrac{v_2}{\max(v_2)}=\dfrac{A^2v_0}{\max(A^2v_0)}\\[8pt]\cdots\cdots\cdots\\[8pt] v_k=Au_{k-1}=\dfrac{A^kv_0}{\max(A^{k-1}v_0)},\quad u_k=\dfrac{v_k}{\max(v_k)}=\dfrac{A^kv_0}{\max(A^kv_0)} v1=Au0=max(v0)Av0,u1=max(v1)v1=max(Av0)Av0v2=Au1=max(Av0)A2v0,u2=max(v2)v2=max(A2v0)A2v0⋯⋯⋯vk=Auk1=max(Ak1v0)Akv0,uk=max(vk)vk=max(Akv0)Akv0

则有 lim⁡k→∞uk=x1max⁡(x1),lim⁡k→∞max⁡(vk)=λ1\lim\limits_{k\rarr\infin}u_k=\dfrac{x_1}{\max(x_1)},\quad \lim\limits_{k\rarr\infin}\max{(v_k)}=\lambda_1klimuk=max(x1)x1,klimmax(vk)=λ1.

3. 反幂法

反幂法,用来求矩阵 AAA 按模最小特征值和相应的特征向量。

用乘幂法求出 A−1A^{-1}A1 的按模最大特征值和相应的特征向量,就可以获得 AAA 的按模最小特征值和相应的特征向量

同样取 v0=[1,1,⋯ ,1]Tv_0=[1,1,\cdots,1]^Tv0=[1,1,,1]T,开始计算 1λn\dfrac{1}{\lambda_n}λn1

u0=v0max⁡(v0),vk=A−1uk−1,uk=vkmax⁡(vk),k=1,2,⋯ u_0=\dfrac{v_0}{\max(v_0)},\quad v_k=A^{-1}u_{k-1},\quad u_k=\dfrac{v_k}{\max(v_k)},\quad k=1,2,\cdots u0=max(v0)v0,vk=A1uk1,uk=max(vk)vk,k=1,2,

则有 lim⁡k→∞uk=xnmax⁡(xn),lim⁡k→∞max⁡(vk)=1λn\lim\limits_{k\rarr\infin}u_k=\dfrac{x_n}{\max(x_n)},\quad \lim\limits_{k\rarr\infin}\max{(v_k)}=\dfrac{1}{\lambda_n}klimuk=max(xn)xn,klimmax(vk)=λn1.

一般采用矩阵三角分解的方法解方程组 Avk=uk−1Av_k=u_{k-1}Avk=uk1 来得到向量序列 vkv_kvk.

4. Jacobi 方法

Jacobi 方法用来求实对称矩阵的所有特征值和相应的特征向量。

对于一个实对称矩阵 Tk−1T_{k-1}Tk1,可以通过平面旋转矩阵 SkS_kSk 将其一步步的转化为一个对角阵 diag(λ1,λ2,⋯ ,λn)\text{diag}(\lambda_1,\lambda_2,\cdots,\lambda_n)diag(λ1,λ2,,λn),其中,

p列q列Sk=S(p,q)=[1⋱cos⁡θk⋯sin⁡θk⋮⋮−sin⁡θk⋯cos⁡θk⋱1]p行q行 \qquad\qquad\begin{matrix} & & \text{p列} & & \qquad \text{q列} & & \end{matrix} \\ S_k=S(p,q)= \begin{bmatrix} 1 & & & & & & \\ & \ddots & & & & & \\ & & \cos\theta_k & \cdots & \sin\theta_k & & \\ & & \vdots & & \vdots & & \\ & & -\sin\theta_k & \cdots & \cos\theta_k & & \\ & & & & & \ddots & \\& & & & & & 1\\ \end{bmatrix} \begin{matrix} \\ \\ \text{p行} \\ \\ \text{q行} \\ \\ \\ \end{matrix} pqSk=S(p,q)=1cosθksinθksinθkcosθk1pq

计算方法:

对于一个实对称矩阵 Tk−1T_{k-1}Tk1,选取不在对角线上的绝对值最大的元素 tpq(k−1)t_{pq}^{(k-1)}tpq(k1),构造旋转矩阵 SkS_kSk,其中 spp(k)=cos⁡θk,spq(k)=sin⁡θk,sqp(k)=−sin⁡θk,sqq(k)=cos⁡θks_{pp}^{(k)}=\cos\theta_k,s_{pq}^{(k)}=\sin\theta_k,s_{qp}^{(k)}=-\sin\theta_k,s_{qq}^{(k)}=\cos\theta_kspp(k)=cosθk,spq(k)=sinθk,sqp(k)=sinθk,sqq(k)=cosθk,对角线元素为 1,其余元素为 0,计算 Tk=SkTTk−1SkT_k=S_k^TT_{k-1}S_kTk=SkTTk1Sk.

SkS_kSk 中要选择适当的 cos⁡θk\cos\theta_kcosθksin⁡θk\sin\theta_ksinθk,需要先计算

a=cot⁡2θk=tqq(k−1)−tpp(k−1)2tpq(k−1),−π2⩽2θk⩽π2 a=\cot2\theta_k=\dfrac{t_{qq}^{(k-1)}-t_{pp}^{(k-1)}}{2t_{pq}^{(k-1)}},\quad-\dfrac{\pi}{2}\leqslant 2\theta_k\leqslant\dfrac{\pi}{2} a=cot2θk=2tpq(k1)tqq(k1)tpp(k1),2π2θk2π

而后计算

t=±1∣a∣+1+a2{当a⩾0时,取+当a<0时,取− t=\pm\dfrac{1}{|a|+\sqrt{1+a^2}}\quad \begin{cases}当 a\geqslant0 时,取+\\当 a<0时,取-\end{cases} t=±a+1+a21{a0时,取+a<0时,取

则有

cos⁡θk=11+t2,sin⁡θk=t⋅cos⁡θk \cos\theta_k=\dfrac{1}{\sqrt{1+t^2}},\quad\sin\theta_k=t\cdot\cos\theta_k cosθk=1+t21,sinθk=tcosθk

lim⁡k→∞Tk=diag(λ1,λ2,⋯ ,λn)\lim\limits_{k\rarr\infin}T_k=\text{diag}(\lambda_1,\lambda_2,\cdots,\lambda_n)klimTk=diag(λ1,λ2,,λn) 时,TkT_kTk 对角线上的元素就是特征值,而特征向量

[x1,x2,⋯ ,xn]=S1⋅S2⋯Sn [x_1,x_2,\cdots,x_n]=S_1 \cdot S_2 \cdots S_n [x1,x2,,xn]=S1S2Sn

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值