文档计算机科学数值分析方程组的迭代解法方程组的迭代解法简单迭代法迭代计算已知方程 f(x)=[f1(x)⋮fn(x)]=0\boldsymbol f(\boldsymbol x) = \begin{bmatrix}f_1(\boldsymbol x) \\\vdots \\f_n(\boldsymbol x)\end{bmatrix} = 0f(x)=f1(x)⋮fn(x)=0,其中 x\boldsymbol xx 是 nnn 维向量。将其变换为 x=φ(x)\boldsymbol x = \boldsymbol\varphi(\boldsymbol x)x=φ(x) 的形式,则 x(n+1)=φ(x(n))\boldsymbol x^{(n + 1)} = \boldsymbol\varphi(\boldsymbol x^{(n)})x(n+1)=φ(x(n)) 是迭代公式。如果 limn→+∞x(n)=α\lim\limits_{n \to +\infty} \boldsymbol x^{(n)} = \boldsymbol\alphan→+∞limx(n)=α 存在,则 α\boldsymbol\alphaα 为方程组的根。收敛条件记 aij=maxx∈Rn∣∂φi∂xj∣xa_{ij} = \max\limits_{x \in \mathrm R^n}\left|\dfrac{\partial\varphi_i}{\partial x_j}\right|_{\boldsymbol x}aij=x∈Rnmax∂xj∂φix。如果 μ=maxi=1n∑j=1naij<1\mu = \max\limits_{i = 1}^n \sum\limits_{j = 1}^n a_{ij} < 1μ=i=1maxnj=1∑naij<1,则迭代过程收敛,且 maxi=1n∣xi(k)−αi∣≤μk1−μmaxi=1n∣xi(1)−xi(0)∣\max\limits_{i = 1}^n \left|x_i^{(k)} - \alpha_i\right| \le \dfrac{\mu^k}{1 - \mu} \max\limits_{i = 1}^n \left|x_i^{(1)} - x_i^{(0)}\right|i=1maxnxi(k)−αi≤1−μμki=1maxnxi(1)−xi(0)。如果 ν=maxj=1n∑i=1naij<1\nu = \max\limits_{j = 1}^n \sum\limits_{i = 1}^n a_{ij} < 1ν=j=1maxni=1∑naij<1,则迭代过程收敛,且 ∑i=1n∣xi(k)−αi∣≤νk1−ν∑i=1n∣xi(1)−xi(0)∣\sum\limits_{i = 1}^n \left|x_i^{(k)} - \alpha_i\right| \le \dfrac{\nu^k}{1 - \nu} \sum\limits_{i = 1}^n \left|x_i^{(1)} - x_i^{(0)}\right|i=1∑nxi(k)−αi≤1−ννki=1∑nxi(1)−xi(0)。如果 p=∑i=1n∑j=1naij2<1p = \sqrt{\sum\limits_{i = 1}^n \sum\limits_{j = 1}^n a_{ij}^2} < 1p=i=1∑nj=1∑naij2<1,则迭代过程收敛,且 ∑i=1n(xi(k)−αi)2≤pk1−p∑i=1n(xi(1)−xi(0))2\sqrt{\sum\limits_{i = 1}^n \left(x_i^{(k)} - \alpha_i\right)^2} \le \dfrac{p^k}{1 - p} \sqrt{\sum\limits_{i = 1}^n \left(x_i^{(1)} - x_i^{(0)}\right)^2}i=1∑n(xi(k)−αi)2≤1−ppki=1∑n(xi(1)−xi(0))2。通常计算 aija_{ij}aij 只需要带入 x0\boldsymbol x_0x0,不用求区间最值。延拓法已知方程 f(x)=0\boldsymbol f(\boldsymbol x) = 0f(x)=0,并选定初值 x(0)\boldsymbol x^{(0)}x(0)。构造 h(x,t)=f(x)−(1−t)f(x(0)) (t∈[0,1])\boldsymbol h(\boldsymbol x, t) = \boldsymbol f(\boldsymbol x) - (1 - t)\boldsymbol f(\boldsymbol x^{(0)})\ (t \in [0, 1])h(x,t)=f(x)−(1−t)f(x(0)) (t∈[0,1])。h(x,t)\boldsymbol h(\boldsymbol x, t)h(x,t) 满足 h(x(0),0)=0\boldsymbol h(\boldsymbol x^{(0)}, 0) = \boldsymbol 0h(x(0),0)=0,h(x,1)=f(x)\boldsymbol h(\boldsymbol x,1) = \boldsymbol f(\boldsymbol x)h(x,1)=f(x)。ttt 控制 f(x(0))\boldsymbol f(\boldsymbol x^{(0)})f(x(0)) 的混合的程度:ttt 接近 000 时,h(x,t)=0\boldsymbol h(\boldsymbol x, t) = 0h(x,t)=0 接近 f(x)−f(x(0))=0\boldsymbol f(\boldsymbol x) - \boldsymbol f(\boldsymbol x^{(0)}) = \boldsymbol 0f(x)−f(x(0))=0。ttt 接近 111 时,h(x,t)=0h(\boldsymbol x,t) = 0h(x,t)=0 接近 f(x)=0\boldsymbol f(\boldsymbol x) = \boldsymbol 0f(x)=0。迭代求解时,将 [0,1][0,1][0,1] 分为 t0=0<t1<t2<⋯<tN=1t_0 = 0 < t_1 < t_2 < \cdots < t_N = 1t0=0<t1<t2<⋯<tN=1。第 kkk 次迭代,求解方程组 h(x,tk)=0\boldsymbol h(\boldsymbol x, t_k) = 0h(x,tk)=0,初值为 x(k−1)\boldsymbol x^{(k-1)}x(k−1)。当 tk−tk−1t_k - t_{k - 1}tk−tk−1 足够小时,h(x,tk)=0\boldsymbol h(\boldsymbol x, t_{k}) = 0h(x,tk)=0 和 h(x,tk−1)=0\boldsymbol h(\boldsymbol x, t_{k - 1}) = 0h(x,tk−1)=0 就足够相似,x(k)\boldsymbol x^{(k)}x(k) 与 x(k−1)\boldsymbol x^{(k-1)}x(k−1) 应当差距不大。每一次迭代的变化都比较小,容易满足收敛条件。方程的迭代解法线性方程组的直接解法