12. Jacobi法(雅可比法)

数值分析



周维祺

引入:迭代法

迭代法:递推计算一系列误差越来越小的近似解来逼近精确解

Jacobi法

  • Ax=bA\vec x=\vec b, ARn×n\quad A\in\mathbb R^{n\times n}可逆,主对角线上不含00x,bRn\vec x,\vec b\in\mathbb R^n

  • DDAA的主对角线组成的对角阵,即Dij={Aiji=j0ijD_{ij}=\begin{cases}A_{ij} & i=j \\ 0 & i\neq j\end{cases}

  • x(0)\vec x^{(0)}为初值,记x(k)\vec x^{(k)}为第kk步所得的近似解

Jacobi法的计算公式

x(k+1)=x(k)+D1(bAx(k))=r(k)\vec x^{(k+1)}=\vec x^{(k)}+D^{-1}\underbrace{(\vec b-A\vec x^{(k)})}_{=\vec r^{(k)}}

余项(residue):r(k)=bAx(k)\vec r^{(k)}=\vec b-A\vec x^{(k)}

kk步近似解代入后,与实际值的差异

误差向量:x(k)x\vec x^{(k)}-\vec x^*

xx^*是原线性方程组的精确解

例子和练习

x(0)=(1,1,1)T\vec x^{(0)}=(1,1,1)^T为初值,用Jacobi法计算以下线性方程组的近似解

(210131012)(x1x2x3)=(000)\begin{pmatrix}2 & 1 & 0 \\ 1 & 3 & 1 \\ 0 & 1 & 2 \end{pmatrix}\begin{pmatrix} x_1 \\ x_2 \\ x_3 \end{pmatrix}=\begin{pmatrix} 0 \\ 0 \\ 0 \end{pmatrix}

计算两步,并给出每一步误差向量的长度

解答

  • D=(200030002)D=\begin{pmatrix}2 & 0 & 0 \\ 0 & 3 & 0 \\ 0 & 0 & 2 \end{pmatrix}

  • D1=(120001300012)D^{-1}=\begin{pmatrix}\frac{1}{2} & 0 & 0 \\ 0 & \frac{1}{3} & 0 \\ 0 & 0 & \frac{1}{2} \end{pmatrix}

  • 准确解为x=(0,0,0)T\vec x^*=(0,0,0)^T,初值误差x(0)x=3\|\vec x^{(0)}-\vec x^*\|=\sqrt3

解答

  • 余项:r(1)=(000)(210131012)(111)=(353)\vec r^{(1)}=\begin{pmatrix} 0 \\ 0 \\ 0 \end{pmatrix}-\begin{pmatrix}2 & 1 & 0 \\ 1 & 3 & 1 \\ 0 & 1 & 2 \end{pmatrix}\begin{pmatrix} 1 \\ 1 \\ 1 \end{pmatrix}=\begin{pmatrix} -3 \\ -5 \\ -3 \end{pmatrix}

  • x(1)=(111)+(120001300012)(353)=(122312)\vec x^{(1)}=\begin{pmatrix} 1 \\ 1 \\ 1 \end{pmatrix}+\begin{pmatrix}\frac{1}{2} & 0 & 0 \\ 0 & \frac{1}{3} & 0 \\ 0 & 0 & \frac{1}{2} \end{pmatrix}\begin{pmatrix} -3 \\ -5 \\ -3 \end{pmatrix}=\begin{pmatrix} -\frac{1}{2} \\ -\frac{2}{3} \\ -\frac{1}{2} \end{pmatrix}

  • 误差:x(1)x=14+49+14=3436<3\|\vec x^{(1)}-\vec x^*\|=\sqrt{\frac{1}{4}+\frac{4}{9}+\frac{1}{4}}=\sqrt{\frac{34}{36}}<\sqrt3

解答

  • 余项:r(2)=(000)(210131012)(122312)=(53353)\vec r^{(2)}=\begin{pmatrix} 0 \\ 0 \\ 0 \end{pmatrix}-\begin{pmatrix}2 & 1 & 0 \\ 1 & 3 & 1 \\ 0 & 1 & 2 \end{pmatrix}\begin{pmatrix} -\frac{1}{2} \\ -\frac{2}{3} \\ -\frac{1}{2} \end{pmatrix}=\begin{pmatrix} \frac{5}{3} \\ 3 \\ \frac{5}{3} \end{pmatrix}

  • x(2)=(122312)+(120001300012)(53353)=(131313)\vec x^{(2)}=\begin{pmatrix} -\frac{1}{2} \\ -\frac{2}{3} \\ -\frac{1}{2} \end{pmatrix}+\begin{pmatrix}\frac{1}{2} & 0 & 0 \\ 0 & \frac{1}{3} & 0 \\ 0 & 0 & \frac{1}{2} \end{pmatrix}\begin{pmatrix} \frac{5}{3} \\ 3 \\ \frac{5}{3} \end{pmatrix}=\begin{pmatrix} \frac{1}{3} \\ \frac{1}{3} \\ \frac{1}{3} \end{pmatrix}

  • 误差:x(2)x=19+19+19=1236<3436<3\|\vec x^{(2)}-\vec x^*\|=\sqrt{\frac{1}{9}+\frac{1}{9}+\frac{1}{9}}=\sqrt{\frac{12}{36}}<\sqrt{\frac{34}{36}}<\sqrt3

迭代法收敛

kk\to\infty时,误差向量的长度x(k)x0\|\vec x^{(k)}-\vec x^*\|\to0

严格对角占优矩阵

  • 给定n×nn\times n的矩阵AA,用AijA_{ij}表示第ii行第jj列的元素

  • 行严格对角占优:Aii>j=1,jinAij|A_{ii}|> \sum\limits_{j=1,j\neq i}^n|A_{ij}|i=1,,ni=1,\ldots,n都成立

  • 列严格对角占优:Ajj>i=1,ijnAij|A_{jj}|> \sum\limits_{i=1,i\neq j}^n|A_{ij}|j=1,,nj=1,\ldots,n都成立

行(列)严格对角占优

主对角线上元素的绝对值比该行(列)其它元素绝对值之和都大

练习

  • 判断以下矩阵是否行/列严格对角占优


    (a2+b22ab0aba2+b2ab00a2+b2)\begin{pmatrix}a^2+b^2 & 2ab & 0 \\ ab & a^2+b^2 & ab \\ 0 & 0 & a^2+b^2 \end{pmatrix}, (311121113)\begin{pmatrix}3 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 3 \end{pmatrix}, (311131113)\begin{pmatrix}3 & 1 & 1 \\ 1 & 3 & 1 \\ 1 & 1 & 3 \end{pmatrix}

Gershgorin圆盘定理

在复平面上,n×nn\times n矩阵AA的任意特征值都在某个以AiiA_{ii}为圆心,j=1,jinAij\sum\limits_{j=1,j\neq i}^n|A_{ij}|为半径的圆盘中(i=1,,ni=1,\ldots,n)

练习

求矩阵(210121012)\begin{pmatrix}2 & 1 & 0 \\ 1 & 2 & 1 \\ 0 & 1 & 2 \end{pmatrix}的特征值

画出上述定理中的圆盘,并标出特征值对应的点

证明的主要步骤

  • λ\lambdaAA的一个特征值,x=(x1,,xn)\vec x=(x_1,\ldots,x_n)是对应的一个特征向量

  • 不妨设xk=1x_k=1,且对j=1,,nj=1,\ldots, n都有xj1|x_j|\le 1 (思考:为什么)

  • 考察Ax=λxAx=\lambda x的第kk行:j=1nAkjxj=λxk\sum_{j=1}^nA_{kj}x_j=\lambda x_k

  • λAkkj=1,jknAkjxjj=1,jknAkj  |\lambda-A_{kk}|\le\sum\limits_{j=1,j\neq k}^n|A_{kj}x_j|\le\sum\limits_{j=1,j\neq k}^n|A_{kj}|\; (思考:为什么)

练习

  • 证明以下两个命题:

  • 在复平面上,n×nn\times n矩阵AA的任意特征值也都在某个以AjjA_{jj}为圆心,i=1,ijnAij\sum\limits_{i=1,i\neq j}^n|A_{ij}|为半径的圆盘中(i=1,,ni=1,\ldots,n)

  • 行(列)严格对角占优矩阵是可逆矩阵

Jacobi法的收敛性: 严格对角占优\Rightarrow收敛

AA行(列)严格对角占优
则对任意b\vec b和初值x(0)\vec x^{(0)},Jacobi法对Ax=bA\vec x=\vec b都收敛

(证明留待第14讲)

Jacobi法的收敛性: 正定的情况

DDAA的主对角线部分,若AA2DA2D-A都正定
则对任意b\vec b和初值x(0)\vec x^{(0)},Jacobi法对Ax=bA\vec x=\vec b都收敛

(证明留作拓展思考)

练习

x(0)=(1,1,1)T\vec x^{(0)}=(1,1,1)^T为初值,用Jacobi法计算以下线性方程组的近似解是否收敛,说明理由

(210131012)(x1x2x3)=(000)\begin{pmatrix}2 & 1 & 0 \\ 1 & 3 & 1 \\ 0 & 1 & 2 \end{pmatrix}\begin{pmatrix} x_1 \\ x_2 \\ x_3 \end{pmatrix}=\begin{pmatrix} 0 \\ 0 \\ 0 \end{pmatrix}

小结

  • 迭代法及其收敛性的概念

  • Jacobi法的计算公式、收敛的充分条件

  • 行(列)严格对角占优的概念和性质

  • 圆盘定理