线性方程组的迭代法

计算方程组的一般方法分为直接求解法和迭代计算法,直接求解法会占用计算机的过多资源,增加了程序的复杂程度。而使用迭代的方法会简便程序的设计复杂度,更加适合大规模矩阵的计算要求。 


目录

一. 线性方程组迭代基本

二. 定常迭代法

2.1 jscob迭代法

2.2 Gauss—Seidel迭代法

2.3 松弛法

2.3.1 Richardson

2.3.2 Jacobi松弛



一. 线性方程组迭代基本

 对于一般的矩阵形式\large Ax=b\large A\in \mathbb{R}^{n\times n}的非奇异矩阵。将该式变化为\large x=Hx+f的等价形式。将该式构造为可迭代的形式\large x^{k+1}=Hx^{k}+f

迭代矩阵的可行性:

上式的迭代公式中的\large H矩阵是作为收敛矩阵,当收敛矩阵的谱半径小于1时,认为矩阵是收敛的,形式为\large \rho \left ( H \right )<1

向量\large \mathbf{x}收敛情况为,向量中的各个元素\large x^{\left (i \right )}是收敛的,即:\large \lim_{x^{\left ( i+1 \right )}\rightarrow x^{\left ( i\right )}}\left ( x^{\left ( i+1 \right )}-x^{\left ( i\right )} \right )=0。 


二. 定常迭代法

利用迭代形式\large x^{k+1}=Hx^{k}+f进行求方程组\large x=Hx+f的近似解的简单迭代解。定义矩阵\large A的形式,

\large A=\left (a _{ij} \right )_{n\times n},而\large D=diag(a_{11},...,a_{nn})为对角矩阵,\large -L,-U为矩阵的上下三角矩阵。

2.1 jscob迭代法

迭代计算的初始化的值任选\large x_{i}^{(0)}(i=1,2,3,... ,n),然后依据计算公式去迭代计算\large x_i^{(k+1)}(k=0,1,...)

\large \left\{\begin{matrix} a_{11}x_1^{(k+1)}+a_{12}x_2^{(k)}+a_{13}x_3^{(k)}+...+a_{1n}x_n^{(k)}=b_1\\ a_{21}x_1^{(k+1)}+a_{22}x_2^{(k)}+a_{23}x_3^{(k)}+...+a_{2n}x_n^{(k)}=b_2\\ \vdots \\ a_{n1}x_1^{(k+1)}+a_{n2}x_2^{(k)}+a_{n3}x_3^{(k)}+...+a_{nn}x_n^{(k)}=b_n\\ \end{matrix}\right.                                                              (2-1)

将线性方程组写成

 \large \left\{\begin{matrix} x_1^{(k+1)}=\frac{1}{ a_{11}}\left ( b_1-a_{12}x_2^{(k)}-a_{13}x_3^{(k)}-...-a_{1n}x_n^{(k)} \right )\\ x_1^{(k+1)}=\frac{1}{ a_{21}}\left ( b_2-a_{22}x_2^{(k)}-a_{23}x_3^{(k)}-...-a_{2n}x_n^{(k)} \right )\\ \vdots \\ x_1^{(k+1)}=\frac{1}{ a_{n1}}\left ( b_n-a_{n2}x_2^{(k)}-a_{n3}x_3^{(k)}-...-a_{nn}x_n^{(k)} \right )\\ \end{matrix}\right.                                                         (2-2)

迭代的方程右式括号里可以写为:

\large \bigl(\begin{smallmatrix} \begin{vmatrix} 0 & a_{12} & a_{13} & & a_{1n} \\ a_{21} &0 & a_{23} & & a_{2n} \\ a_{31} & a_{32} &0& & a_{3n} \\ &&&\ddots \\ a_{n1} & a_{n2} & a_{n3} & & 0 \end{vmatrix}+\begin{vmatrix} -b_1 & & & && \\ &- b_2& && & \\ & & -b_3& && \\ &&&&\ddots &\\ & & & & & -b_n \end{vmatrix} \end{smallmatrix}\bigr)

\large D^{-1}=diag(a_{11}^{-1},...,a_{nn}^{-1}),则

\large D^{-1}A=\begin{vmatrix}1 & a_{12} & a_{13} & & a_{1n} \\ a_{21} &1 & a_{23} & & a_{2n} \\ a_{31} & a_{32} &1& & a_{3n} \\ &&&\ddots \\ a_{n1} & a_{n2} & a_{n3} & & 1 \end{vmatrix}

则迭代矩阵(2-2)可以写为\large \large x^{k+1}=(I-D^{-1}A)x^{(K)}+D^{-1}b;这里与基本的迭代公式进行对应\large \large x^{k+1}=Hx^{k}+f\large H=I-D^{-1}A\large f=D^{-1}b

2.2 Gauss—Seidel迭代法

继续采用(2-1)矩阵进行变换,其迭代格式表示为(2-2);其中采用上下三角矩阵\large L&\large U表示为

\large x_i^{(k+1)}=-\frac{1}{a_{ii}}(LX_i^{(k+1)}+UX_j^{(k)}-b_i)

\large x^{(k+1)}\large x^{(k)}分类,可以变换为:

\large (1-D^{-1}L)x^{(k+1)}=D^{-1}Ux^{(k)}+D^{-1}b_i,将对角矩阵\large 1-D^{-1}L的逆矩阵左乘

\large x^{(k+1)}=(1-D^{(-1)}L)^{-1}D^{(-1)}Lx^{k}+(1-D^{(-1)}L)^{-1}D^{-1}b_i ;其中\large (1-D^{(-1)}L)^{-1}D^{(-1)}=(D-L)^{-1}最终的形式为:

\large x^{(k+1)}=(D-L)^{-1}Lx^{k}+(D-L)^{-1}b_i

2.3 松弛法

 通过与公式\large x^{(k+1)}=x^{(k)}+wx^{(k)}这里的\large w是控制收敛速度。

\large x^{(k+1)}=x^{(k)}+wx^{(k)}=x^{(k)}+w(\bar{w}^{(k+1)}-w^{(k)})其中\bar{w}^{(k+1)}是迭代格式。关于迭代的形式如下:

2.3.1 Richardson

 取迭代格式I- A,则\bar{x}^{(k+1)}=(I-A)x^{(k)}+b-x^{(k)}=- Ax^{(k)}+b\large x^{(k+1)}=x^{(k)}+w\Delta x^{(k)}=x^{(k)}+\omega(-Ax^{(k)}+b)=(I-\omega A)x^{(k)}+\omega b

###关于\large A为正定矩阵时,\large 0<\omega<2/(\lambda_{max})时收敛。当\large \omega=\omega _{opt}=2/(\lambda_{max}+\lambda_{min})时收敛速度最快。待求验

2.3.2 Jacobi松弛

取雅克比迭代格式松弛的迭代格式,则:

\large \bar{x}^{(k+1)}=(I-D^{-1}A)x^{(k)}+D^{-1}b

则:

\large x^{(k+1)}=(I-\omega D^{-1}A)x^{(k)}+\omega D^{-1}b

同理\large \rho(I-\omega D^{-1}A)<1时,JOR收敛

2.3.3 超松弛(SOR方法)

取Gauss—Seidel的迭代格式:

\large \bar{x}^{(k+1)}=(D-L)^{-1}Ux^{(k)}+(D-L)^{-1}b

则松弛迭代格式为:

\large x^{(k+1)}=\rho(D,L,U,\omega)x^{(k)}+\omega (D-\omega L)^{-1}b

其中:\large \rho(D,L,U,\omega)=(D-\omega L)^{-1}((1-\omega )D+\omega U)

你可能感兴趣的:(矩阵计算,线性代数)