方程组的迭代解法

方程组的迭代解法

  • 简单迭代法
    • 迭代计算
      • 已知方程 f(x)=[f1(x)fn(x)]=0\boldsymbol f(\boldsymbol x) = \begin{bmatrix}f_1(\boldsymbol x) \\\vdots \\f_n(\boldsymbol x)\end{bmatrix} = 0,其中 x\boldsymbol xnn向量
      • 将其变换为 x=φ(x)\boldsymbol x = \boldsymbol\varphi(\boldsymbol x) 的形式,则 x(n+1)=φ(x(n))\boldsymbol x^{(n + 1)} = \boldsymbol\varphi(\boldsymbol x^{(n)})迭代公式
      • 如果 limn+x(n)=α\lim\limits_{n \to +\infty} \boldsymbol x^{(n)} = \boldsymbol\alpha 存在,则 α\boldsymbol\alpha 为方程组的根。
    • 收敛条件
      • aij=maxxRnφixjxa_{ij} = \max\limits_{x \in \mathrm R^n}\left|\dfrac{\partial\varphi_i}{\partial x_j}\right|_{\boldsymbol x}
      • 如果 μ=maxi=1nj=1naij<1\mu = \max\limits_{i = 1}^n \sum\limits_{j = 1}^n a_{ij} < 1,则迭代过程收敛,且 maxi=1nxi(k)αiμk1μmaxi=1nxi(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|
      • 如果 ν=maxj=1ni=1naij<1\nu = \max\limits_{j = 1}^n \sum\limits_{i = 1}^n a_{ij} < 1,则迭代过程收敛,且 i=1nxi(k)αiνk1νi=1nxi(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|
      • 如果 p=i=1nj=1naij2<1p = \sqrt{\sum\limits_{i = 1}^n \sum\limits_{j = 1}^n a_{ij}^2} < 1,则迭代过程收敛,且 i=1n(xi(k)αi)2pk1pi=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}
      • 通常计算 aija_{ij} 只需要带入 x0\boldsymbol x_0,不用求区间最值。
  • 延拓法
    • 已知方程 f(x)=0\boldsymbol f(\boldsymbol x) = 0,并选定初值 x(0)\boldsymbol x^{(0)}
    • 构造 h(x,t)=f(x)(1t)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)\boldsymbol h(\boldsymbol x, t) 满足 h(x(0),0)=0\boldsymbol h(\boldsymbol x^{(0)}, 0) = \boldsymbol 0h(x,1)=f(x)\boldsymbol h(\boldsymbol x,1) = \boldsymbol f(\boldsymbol x)
    • tt 控制 f(x(0))\boldsymbol f(\boldsymbol x^{(0)}) 的混合的程度:
      • tt 接近 00 时,h(x,t)=0\boldsymbol h(\boldsymbol x, t) = 0 接近 f(x)f(x(0))=0\boldsymbol f(\boldsymbol x) - \boldsymbol f(\boldsymbol x^{(0)}) = \boldsymbol 0
      • tt 接近 11 时,h(x,t)=0h(\boldsymbol x,t) = 0 接近 f(x)=0\boldsymbol f(\boldsymbol x) = \boldsymbol 0
    • 迭代求解时,将 [0,1][0,1] 分为 t0=0<t1<t2<<tN=1t_0 = 0 < t_1 < t_2 < \cdots < t_N = 1
      • kk 次迭代,求解方程组 h(x,tk)=0\boldsymbol h(\boldsymbol x, t_k) = 0,初值为 x(k1)\boldsymbol x^{(k-1)}
      • tktk1t_k - t_{k - 1} 足够小时,h(x,tk)=0\boldsymbol h(\boldsymbol x, t_{k}) = 0h(x,tk1)=0\boldsymbol h(\boldsymbol x, t_{k - 1}) = 0 就足够相似,x(k)\boldsymbol x^{(k)}x(k1)\boldsymbol x^{(k-1)} 应当差距不大。
      • 每一次迭代的变化都比较小,容易满足收敛条件。