当前位置: 代码迷 >> 综合 >> 计算方法(二):非线性方程求根
  详细解决方案

计算方法(二):非线性方程求根

热度:27   发布时间:2023-11-25 01:18:45.0

文章目录

  • 非线性方程求根
    • 二分法
    • 迭代法
      • 不动点迭代法(简单迭代法)
      • 迭代法收敛的充分条件
    • 牛顿迭代法与弦割法
      • 牛顿迭代公式及其几何意义
        • 单根情形
      • 牛顿迭代法收敛的充分条件
      • 弦割法(割线法)
    • 非线性方程组牛顿迭代法求根
    • 迭代法的收敛阶和加速收敛方式
        • 分析简单迭代法与牛顿迭代法的收敛速度:
        • 迭代加速方法

非线性方程求根

主要讨论单变量非线性方程
f ( x ) = 0 ( 2.1 ) f(x)=0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (2.1) f(x)=0                               (2.1)的求根问题 x ∈ R , f ( x ) ∈ C [ a , b ] x\in R\ \ ,\ \ f(x)\in C[a,b] xR  ,  f(x)C[a,b].

(1)“根在哪里”,即确定根所在的区间,进行根的隔离。

(2)“根的求法”,通过数值方法,近似求解,并保证精度要求。

f ( x ) ∈ C [ a , b ] f(x)\in C[a,b] f(x)C[a,b] f ( a ) f ( b ) < 0 f(a)f(b)<0 f(a)f(b)<0 ,根据闭区间上连续函数性质可知 f ( x ) = 0 f(x)=0 f(x)=0 ( a , b ) (a,b) (a,b) 内至少有一个实根,称 [ a , b ] [a,b] [a,b] 为方程(2.1)的有根区间

二分法

f ( x ) ∈ C [ a , b ] f(x)\in C[a,b] f(x)C[a,b] f ( a ) f ( b ) < 0 f(a)f(b)<0 f(a)f(b)<0 ,根据连续函数性质可知 f ( x ) = 0 f(x)=0 f(x)=0 ( a , b ) (a,b) (a,b) 内至少有一个实根 x ? x^* x?

考察有根区间 [ a , b ] [a,b] [a,b] ,取中点 x 0 = a + b 2 x_0=\frac{a+b}{2} x0?=2a+b? 将区间分为两半。若 f ( x 0 ) = 0 f(x_0)=0 f(x0?)=0 ,则 x 0 x_0 x0? f ( x ) = 0 f(x)=0 f(x)=0 的实根 x ? x^* x? 。若 f ( x 0 ) ≠ 0 f(x_0)\neq0 f(x0?)??=0 ,检查 f ( x 0 ) f(x_0) f(x0?) f ( a ) f(a) f(a) 是否同号,即不等式:
f ( a ) f ( x 0 ) < 0 f(a)f(x_0)<0 f(a)f(x0?)<0是否成立。如果成立,说明所求的根 x ? x^* x? x 0 x_0 x0? 的左侧,这时令 a 1 = a , b 1 = x 0 a_1=a,b_1=x_0 a1?=a,b1?=x0? ;否则 x ? x^* x? 必在 x 0 x_0 x0? 右侧,这时令 a 1 = x 0 , b 1 = b a_1=x_0,b_1=b a1?=x0?,b1?=b ,两种情况都能得到一个新的有根区间 [ a 1 , b 1 ] [a_1,b_1] [a1?,b1?] ,其长度仅为 [ a , b ] [a,b] [a,b] 的一半。

对缩小了的有根区间 [ a 1 , b 1 ] [a_1,b_1] [a1?,b1?] 用中点 x 1 = a 1 + b 1 2 x_1=\frac{a_1+b_1}{2} x1?=2a1?+b1??再分成两半,然后判断 x 1 x_1 x1? 是不是根,并用
f ( a ) f ( x 1 ) < 0 f(a)f(x_1)<0 f(a)f(x1?)<0是否成立来判断所求的根 x ? x^* x? x 1 x_1 x1? 的哪一侧,从而又确定一个新的有根区间 [ a 2 , b 2 ] [a_2,b_2] [a2?,b2?] ,其长度是 [ a 1 , b 1 ] [a_1,b_1] [a1?,b1?] 的一半。

如此反复二分下去,可以得出一系列有根区间
[ a , b ] ? [ a 1 , b 1 ] ? [ a 2 , b 2 ] ? ? ? [ a k , b k ] ? ? [a,b]\supset[a_1,b_1]\supset[a_2,b_2]\supset\cdots\supset[a_k,b_k]\supset\cdots [a,b]?[a1?,b1?]?[a2?,b2?]???[ak?,bk?]??其中区间每个区间都是前一个区间的一半,从而 [ a k , b k ] [a_k,b_k] [ak?,bk?] 的长度为
b k ? a k = b ? a 2 k b_k-a_k=\frac{b-a}{2^k} bk??ak?=2kb?a? k → ∞ k\rightarrow\infty k 时,此区间长度趋于零,如果二分过程无限地继续下去,这些区间最终必收缩于一点 x ? x^* x?,为所求的根。

每次二分后,取有根区间 [ a n , b n ] [a_n,b_n] [an?,bn?] 的中点 x n = a n + b n 2 x_n=\frac{a_n+b_n}{2} xn?=2an?+bn?? 作为根的近似值,可以得到一个近似根的序列 x 0 , x 1 , x 2 , ? x_0,x_1,x_2,\cdots x0?,x1?,x2?,?该序列必以根 x ? x^* x? 为极限。

给定一个预定的精度 ε \varepsilon ε ,由 x ? ∈ [ a n , b n ] x^*\in [a_n,b_n] x?[an?,bn?] ,可得
∣ x ? ? x n ∣ ≤ 1 2 ( b n ? a n ) = 1 2 n + 1 ( b ? a ) |x^*-x_n|\leq\frac{1}{2}(b_n-a_n)=\frac{1}{2^{n+1}}(b-a) x??xn?21?(bn??an?)=2n+11?(b?a)只要 n n n 充分大,使得
1 2 n + 1 ( b ? a ) < ε , 即 n > [ ln ? b ? a ε / ln ? 2 ] \frac{1}{2^{n+1}}(b-a)<\varepsilon\ \ \ \ , \ \ 即\ n>[\ln\frac{b-a}{\varepsilon}/\ln2] 2n+11?(b?a)<ε    ,   n>[lnεb?a?/ln2]就有
∣ x ? ? x n ∣ < ε |x^*-x_n|<\varepsilon x??xn?<ε x n x_n xn? 就是一个满足精度要求的近似根。

注:在实际计算中,若 ∣ f ( x n ) ∣ |f(x_n)| f(xn?) 很小: ∣ f ( x n ) ∣ < δ |f(x_n)|<\delta f(xn?)<δ δ \delta δ 为给定的误差限),则 x n x_n xn? 就可作为近似根。

二分法的优点算法简单,且总是收敛的缺点事先要确定有根区间,且收敛较慢,且不能用于求复根或偶数重根,一般不单独将其用于求根,只用其求根的一个较好的近似值。

迭代法

不动点迭代法(简单迭代法)

将方程 f ( x ) = 0 f(x)=0 f(x)=0 转化为:
x = g ( x ) x=g(x) x=g(x) x ? x^* x? 满足 f ( x ? ) = 0 f(x^*)=0 f(x?)=0,则 x ? = g ( x ? ) x^*=g(x^*) x?=g(x?) ,称 x ? x^* x? 为函数 g ( x ) g(x) g(x) 的一个不动点

选择初始近似值 x 0 x_0 x0?,代入得: x 1 = g ( x 0 ) x_1=g(x_0) x1?=g(x0?)

反复迭代: x k + 1 = g ( x k ) x_{k+1}=g(x_k) xk+1?=g(xk?) k = 0 , 1 , 2 , ? k=0,1,2,\cdots k=0,1,2,?,称 g ( x ) g(x) g(x)迭代函数,可得一个迭代序列{ x k x_k xk? }

若对于 x 0 ∈ [ a , b ] x_0\in[a,b] x0?[a,b],该迭代序列有极限: lim ? k → ∞ x k = x ? \lim_{k\rightarrow\infty}x_k=x^* limk?xk?=x?,则称迭代法收敛,且 x ? = g ( x ? ) x^*=g(x^*) x?=g(x?) g ( x ) g(x) g(x) 的不动点。若迭代序列发散,则称迭代法发散

不动点迭代法的基本思想:将隐式方程 f ( x ) = 0 f(x)=0 f(x)=0 化为显式的计算公式 x = g ( x ) x=g(x) x=g(x) ,然后通过迭代,求方程近似根。

迭代法几何意义: 方程 x = g ( x ) x=g(x) x=g(x) 的求根问题在 x y xy xy 平面上就是要确定曲线 x = g ( x ) x=g(x) x=g(x) 与直线 y = x y=x y=x 的交点 P ? P^* P?

迭代法收敛的充分条件

压缩映照: 在区间[a,b]上定义的函数 g ( x ) g(x) g(x),若存在常数 L , 0 ≤ L ≤ 1 L,0\leq L\leq 1 L,0L1,使得 ? x , y ∈ [ a , b ] \forall x,y\in[a,b] ?x,y[a,b],都有:
∣ g ( x ) ? g ( y ) ∣ ≤ L ∣ x ? y ∣ |g(x)-g(y)|\leq L|x-y| g(x)?g(y)Lx?y则称映照 g ( x ) g(x) g(x) 在区间 [ a , b ] [a,b] [a,b] 上是压缩的

不动点的存在唯一性及误差分析

定理1: g ( x ) ∈ C [ a , b ] g(x)\in C[a,b] g(x)C[a,b] 满足以下两个条件:(1)任意 x ∈ [ a , b ] x\in [a,b] x[a,b],有 g ( x ) ∈ [ a , b ] g(x)\in[a,b] g(x)[a,b];(2)存在常数 L , 0 ≤ L ≤ 1 L,0\leq L\leq 1 L,0L1,使对任意 x , y ∈ [ a , b ] x,y\in[a,b] x,y[a,b],有
∣ g ( x ) ? g ( y ) ∣ ≤ L ∣ x ? y ∣ |g(x)-g(y)|\leq L|x-y| g(x)?g(y)Lx?y则:(1) x = g ( x ) x=g(x) x=g(x) [ a , b ] [a,b] [a,b] 上存在唯一实根 x ? x^* x?;(2)对任意初值 x 0 ∈ [ a , b ] x_0\in[a,b] x0?[a,b],由 x k + 1 = g ( x k ) x_{k+1}=g(x_k) xk+1?=g(xk?) 得到的迭代序列 { x k {x_k} xk?}收敛到 x = g ( x ) x=g(x) x=g(x) [ a , b ] [a,b] [a,b] 的唯一实根 x ? x^* x?,并有误差估计:
∣ x ? ? x k ∣ ≤ 1 1 ? L ∣ x k + 1 ? x k ∣ ∣ x ? ? x k ∣ ≤ L k 1 ? L ∣ x 1 ? x 0 ∣ |x^*-x_k|\leq \frac{1}{1-L}|x_{k+1}-x_k|\\|x^*-x_k|\leq\frac{L^k}{1-L}|x_1-x_0| x??xk?1?L1?xk+1??xk?x??xk?1?LLk?x1??x0?

证明如下:

先证不动点存在性。
定 义 函 数 : φ ( x ) = g ( x ) ? x 显 然 φ ( x ) ∈ C [ a , b ] 。 因 为 a ≤ g ( x ) ≤ b , 有 φ ( a ) = g ( a ) ? a ≥ 0 , φ ( b ) = g ( b ) ? b ≤ 0 由 连 续 函 数 性 质 可 知 存 在 x ? ∈ ( a , b ) , 使 得 φ ( x ? ) = 0 , 即 g ( x ? ) = x ? , 为 不 动 点 定义函数:\varphi(x)=g(x)-x\\显然\varphi(x)\in C[a,b]。因为a\leq g(x)\leq b,有\\\varphi(a)=g(a)-a\geq0,\varphi(b)=g(b)-b\leq0\\由连续函数性质可知存在\ x^*\in(a,b),使得 \ \varphi(x^*)=0,即\ g(x^*)=x^*,为不动点 :φ(x)=g(x)?xφ(x)C[a,b]ag(x)bφ(a)=g(a)?a0,φ(b)=g(b)?b0 x?(a,b),使 φ(x?)=0, g(x?)=x?,
再证唯一性。
设 x 1 ? 及 x 2 ? ∈ [ a , b ] 是 g ( x ) 的 两 个 不 同 的 不 动 点 , 则 ∣ x 1 ? ? x 2 ? ∣ = ∣ g ( x 1 ? ) ? g ( x 2 ? ) ∣ ≤ L ∣ x 1 ? ? x 2 ? ∣ < ∣ x 1 ? ? x 2 ? ∣ , 矛 盾 设\ x_1^*\ 及\ x_2^*\in[a,b]是\ g(x)\ 的两个不同的不动点,则\\|x_1^*-x_2^*|=|g(x_1^*)-g(x_2^*)|\leq L|x_1^*-x_2^*|<|x_1^*-x_2^*|,矛盾  x1??  x2??[a,b] g(x) x1???x2??=g(x1??)?g(x2??)Lx1???x2??<x1???x2??,
误差估计:
∣ x k ? x ? ∣ = ∣ g ( x k ? 1 ) ? g ( x ? ) ∣ ≤ L ∣ x k ? 1 ? x ? ∣ ≤ ? ≤ L k ∣ x 0 ? x ? ∣ ∣ x k + 1 ? x k ∣ = ∣ g ( x k ) ? g ( x k ? 1 ) ∣ ≤ L ∣ x k ? x k ? 1 ∣ ≤ L k ∣ x 1 ? x 0 ∣ 于 是 , 对 任 意 正 整 数 p , 有 ∣ x k + p ? x k ∣ ≤ ∣ x k + p ? x k + p ? 1 ∣ + ∣ x k + p ? 1 ? x k + p ? 2 ∣ + ? + ∣ x k + 1 ? x k ∣ ≤ ( L k + p ? 1 + L k + p ? 2 + ? + L k ) ∣ x 1 ? x 0 ∣ 令 p → ∞ , 注 意 到 lim ? p → ∞ x k + p = x ? , 可 得 ∣ x ? ? x k ∣ ≤ L k 1 ? L ∣ x 1 ? x 0 ∣ ∣ x k + 1 ? x k ∣ = ∣ ( x ? ? x k ) ? ( x ? ? x k + 1 ) ∣ ≥ ∣ x ? ? x k ∣ ? ∣ x ? ? x k + 1 ∣ ≥ ∣ x ? ? x k ∣ ? L ∣ x ? ? x k ∣ = ( 1 ? L ) ∣ x ? ? x k ∣ ∣ x ? ? x k ∣ ≤ 1 1 ? L ∣ x k + 1 ? x k ∣ |x_k-x^*|=|g(x_{k-1})-g(x^*)|\leq L|x_{k-1}-x^*|\leq \cdots\leq L^k|x_0-x^*|\\|x_{k+1}-x_k|=|g(x_k)-g(x_{k-1})|\leq L|x_k-x_{k-1}|\leq L^k|x_1-x_0|\\于是,对任意正整数\ p,有\\|x_{k+p}-x_k|\leq |x_{k+p}-x_{k+p-1}|+|x_{k+p-1}-x_{k+p-2}|+\cdots+|x_{k+1}-x_k|\leq(L^{k+p-1}+L^{k+p-2}+\cdots +L^k)|x_1-x_0|\\令\ p\rightarrow\infty,注意到\ \lim_{p\rightarrow\infty}x_{k+p}=x^*,可得\\|x^*-x_k|\leq \frac{L^k}{1-L}|x_1-x_0|\\|x_{k+1}-x_k|=|(x^*-x_k)-(x^*-x_{k+1})|\geq|x^*-x_k|-|x^*-x_{k+1}|\geq|x^*-x_k|-L|x^*-x_k|=(1-L)|x^*-x_k|\\|x^*-x_k|\leq\frac{1}{1-L}|x_{k+1}-x_k| xk??x?=g(xk?1?)?g(x?)Lxk?1??x??Lkx0??x?xk+1??xk?=g(xk?)?g(xk?1?)Lxk??xk?1?Lkx1??x0? p,xk+p??xk?xk+p??xk+p?1?+xk+p?1??xk+p?2?+?+xk+1??xk?(Lk+p?1+Lk+p?2+?+Lk)x1??x0? p plim?xk+p?=x?,x??xk?1?LLk?x1??x0?xk+1??xk?=(x??xk?)?(x??xk+1?)x??xk??x??xk+1?x??xk??Lx??xk?=(1?L)x??xk?x??xk?1?L1?xk+1??xk?

实际迭代计算过程中,有时 L L L 难以估计,所以,只要相邻两次计算结果的偏差 ∣ x k + 1 ? x k ∣ |x_{k+1}-x_k| xk+1??xk? 足够小,即可保证近似值 x k x_k xk? 具有足够精度。

由Lagrange中值定理可知,如果 g ( x ) ∈ C 1 [ a , b ] g(x)\in C^1[a,b] g(x)C1[a,b],且对任意 x ∈ [ a , b ] x\in[a,b] x[a,b],有 ∣ g ′ ( x ) ∣ ≤ L ≤ 1 |g'(x)|\leq L\leq 1 g(x)L1,则对 ? x , y ∈ [ a , b ] \forall x,y\in[a,b] ?x,y[a,b],有
∣ g ( x ) ? g ( y ) ∣ = ∣ g ′ ( ξ ) ( x ? y ) ∣ ≤ L ∣ x ? y ∣ , ξ ∈ ( a , b ) |g(x)-g(y)|=|g'(\xi)(x-y)|\leq L|x-y|,\xi\in(a,b) g(x)?g(y)=g(ξ)(x?y)Lx?y,ξ(a,b)表明上述定理的条件(2)可用 g ′ ( x ) g'(x) g(x) 的性质代替。

注: 一般情况下, L L L 越小,收敛速度越快。

局部收敛性 g ( x ) g(x) g(x) 有不动点 x ? x^* x?,如果存在 x ? x^* x? 的某一邻域 S = { x ∣ ∣ x ? x ? ∣ ≤ δ } S=\{x||x-x^*|\leq\delta\} S={ xx?x?δ},对任意 x 0 ∈ S x_0\in S x0?S,迭代产生的序列 { x k } ∈ S \{x_k\}\in S { xk?}S,且收敛到 x ? x^* x?,则称迭代法局部收敛

定理2:设 x ? x^* x? g ( x ) g(x) g(x) 的不动点, g ′ ( x ) g'(x) g(x) x ? x^* x? 的某个邻域连续,且 ∣ g ′ ( x ) ∣ < 1 |g'(x)|<1 g(x)<1,则迭代法局部收敛。

证明:由连续函数性质,存在 L L L x ? x^* x? 的某个邻域 S = { x ∣ ∣ x ? x ? ∣ ≤ δ } = [ x ? ? δ , x ? + δ ] S=\{x||x-x^*|\leq\delta\}=[x^*-\delta,x^*+\delta] S={ xx?x?δ}=[x??δ,x?+δ],对任意 x ∈ S x\in S xS,成立:
∣ g ′ ( x ) ∣ ≤ L < 1 |g'(x)|\leq L<1 g(x)L<1又: ∣ g ( x ) ? x ? ∣ = ∣ g ( x ) ? g ( x ? ) ∣ ≤ L ∣ x ? x ? ∣ ≤ ∣ x ? x ? ∣ |g(x)-x^*|=|g(x)-g(x^*)|\leq L|x-x^*|\leq|x-x^*| g(x)?x?=g(x)?g(x?)Lx?x?x?x? 可知,对任意 x ∈ S x\in S xS,总有 g ( x ) ∈ S g(x)\in S g(x)S。由定理1知,对任意 x 0 ∈ S x_0\in S x0?S,迭代序列 { x k } ∈ S \{x_k\}\in S { xk?}S,且收敛到 x ? x^* x?

牛顿迭代法与弦割法

牛顿迭代公式及其几何意义

牛顿法实质上是一种线性化方法。对于单根和重根,收敛速度不同。

f ( x ) f(x) f(x) 可以表示成 f ( x ) = ( x ? x ? ) m q ( x ) f(x)=(x-x^*)^mq(x) f(x)=(x?x?)mq(x),且 q ( x ? ) ≠ 0 q(x^*)\neq0 q(x?)??=0,则称 x ? x^* x? 为方程 f ( x ) = 0 f(x)=0 f(x)=0m重根,当m=1时,称 x ? x^* x? 为方程 f ( x ) = 0 f(x)=0 f(x)=0单根

f ( x ) ∈ C m [ a , b ] f(x)\in C^m[a,b] f(x)Cm[a,b],则 f ( x ) f(x) f(x) 在内的点 x ? x^* x? 具有m重根的充要条件是:
f ( x ? ) = f ′ ( x ? ) = ? = f ( m ? 1 ) ( x ? ) = 0 , f ( m ) ( x ? ) ≠ 0 f(x^*)=f'(x^*)=\cdots=f^{(m-1)}(x^*)=0,\ \ \ f^{(m)}(x^*)\neq0 f(x?)=f(x?)=?=f(m?1)(x?)=0,   f(m)(x?)??=0

单根情形

f ( x ) ∈ C 1 ( x ? ? δ , x ? + δ ) f(x)\in C^{1}(x^*-\delta,x^*+\delta) f(x)C1(x??δx?+δ) f ′ ( x ? ) ≠ 0 f'(x^*)\neq0 f(x?)??=0,即 x ? x^* x? 为方程 f ( x ) = 0 f(x)=0 f(x)=0 的单根。

设已知方程 f ( x ) = 0 f(x)=0 f(x)=0 有近似根 x k x_k xk? f ′ ( x k ) ≠ 0 f'(x_k)\neq0 f(xk?)??=0),将函数 f ( x ) f(x) f(x) 在点 x k x_k xk? 展开,有:
f ( x ) ≈ f ( x k ) + f ′ ( x k ) ( x ? x k ) f(x)\approx f(x_k)+f'(x_k)(x-x_k) f(x)f(xk?)+f(xk?)(x?xk?)于是方程 f ( x ) = 0 f(x)=0 f(x)=0 可以近似表示为:
f ( x k ) + f ′ ( x k ) ( x ? x k ) = 0 f(x_k)+f'(x_k)(x-x_k)=0 f(xk?)+f(xk?)(x?xk?)=0记其根为 x k + 1 x_{k+1} xk+1?,则 x k + 1 x_{k+1} xk+1? 的计算公式为:
x k + 1 = x k ? f ( x k ) f ′ ( x k ) , k = 0 , 1 , ? x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)},\ \ \ \ k=0,1,\cdots xk+1?=xk??f(xk?)f(xk?)?,    k=0,1,?

牛顿迭代法收敛的充分条件

定理3:设 f ( x ) f(x) f(x) 在其零点 x ? x^* x? 的某邻域 S = { x ∣ ∣ x ? x ? ∣ ≤ δ } S=\{x||x-x^*|\leq\delta\} S={ xx?x?δ} 内有二阶连续导数,且 f ′ ( x ? ) ≠ 0 f'(x^*)\neq0 f(x?)??=0 (即 x ? x^* x? 为单根),则牛顿迭代法在 x ? x^* x? 附近具有局部收敛性。

证明:牛顿迭代法的迭代函数为:
g ( x ) = x ? f ( x ) f ′ ( x ) g ′ ( x ) = 1 ? [ f ′ ( x ) ] 2 ? f ( x ) f ′ ′ ( x ) [ f ′ ( x ) ] 2 = f ( x ) f ′ ′ ( x ) [ f ′ ( x ) ] 2 g(x)=x-\frac{f(x)}{f'(x)}\\g'(x)=1-\frac{[f'(x)]^2-f(x)f''(x)}{[f'(x)]^2}=\frac{f(x)f''(x)}{[f'(x)]^2} g(x)=x?f(x)f(x)?g(x)=1?[f(x)]2[f(x)]2?f(x)f(x)?=[f(x)]2f(x)f(x)?
假定 x ? x^* x? f ( x ) f(x) f(x) 的一个单根,即 f ( x ? ) = 0 f(x^*)=0 f(x?)=0 f ′ ( x ? ) ≠ 0 f'(x^*)\neq0 f(x?)??=0,则由上式知 g ′ ( x ) = 0 g'(x)=0 g(x)=0,于是由定理2得,牛顿迭代法在 x ? x^* x? 附近具有局部收敛性。

定理4:对方程 f ( x ) = 0 f(x)=0 f(x)=0,若存在区间 [ a , b ] [a,b] [a,b],使

(1) f ′ ′ ( x ) f''(x) f(x) [ a , b ] [a,b] [a,b] 上连续;

(2) f ( a ) f ( b ) < 0 f(a)f(b)<0 f(a)f(b)<0

(3)对任意 x ∈ [ a , b ] x\in[a,b] x[a,b],都有 f ′ ( x ) ≠ 0 f'(x)\neq0 f(x)??=0

(4) f ′ ′ ( x ) f''(x) f(x) [ a , b ] [a,b] [a,b] 上保号。

则当初值 x 0 ∈ [ a , b ] x_0\in[a,b] x0?[a,b] f ( x 0 ) f ′ ′ ( x 0 ) > 0 f(x_0)f''(x_0)>0 f(x0?)f(x0?)>0 时,牛顿迭代法产生的迭代序列 { x k } \{x_k\} { xk?} 收敛于方程 f ( x ) = 0 f(x)=0 f(x)=0 [ a , b ] [a,b] [a,b] 上的唯一实根 x ? x^* x?

牛顿迭代法的计算步骤

(1)选定初始近似值 x 0 x_0 x0?,计算 f 0 = f ( x 0 ) , f 0 ′ = f ′ ( x 0 ) f_0=f(x_0),f'_0=f'(x_0) f0?=f(x0?),f0?=f(x0?)

(2)迭代。按公式: x 1 = x 0 ? f 0 / f 0 ′ x_1=x_0-{f_0}/{f'_0} x1?=x0??f0?/f0? 迭代一次,得新的近似值 x 1 x_1 x1?,计算 f 1 = f ( x 1 ) , f 1 ′ = f ′ ( x 1 ) f_1=f(x_1),f'_1=f'(x_1) f1?=f(x1?),f1?=f(x1?)

(3)控制。如果 x 1 x_1 x1? 满足 ∣ δ ∣ < ζ 1 |\delta|<\zeta_1 δ<ζ1? ∣ f 1 ∣ < ζ 2 |f_1|<\zeta_2 f1?<ζ2?,则终止迭代,以 x 1 x_1 x1? 作为所求的根;否则转(4)。此处 ζ 1 , ζ 2 \zeta_1,\zeta_2 ζ1?ζ2? 是允许误差,而
δ = { ∣ x 1 ? x 0 ∣ , 当 ∣ x 1 ∣ < C 时 ∣ x 1 ? x 0 ∣ ∣ x 1 ∣ , 当 ∣ x 1 ∣ ≥ C 时 \delta=\begin{cases} |x_1-x_0|,\quad 当|x_1|< C时\\\frac{|x_1-x_0|}{|x_1|}, \quad 当|x_1|\geq C时 \end{cases} δ={ x1??x0?,x1?<Cx1?x1??x0??,x1?C?其中 C C C 是取绝对误差或相对误差的控制常数,一般可取 C = 1 C=1 C=1

(4)修正。如果迭代次数达到预先指定的次数 N N N,或者 f ′ = 0 f'=0 f=0,则方法失败;否则以 ( x 1 , f 1 , f 1 ′ ) (x_1,f_1,f'_1) (x1?,f1?,f1?) 代替 ( x 0 , f 0 , f 0 ′ ) (x_0,f_0,f'_0) (x0?,f0?,f0?) 转(2)继续迭代。

牛顿法的优点是收敛快,缺点一是每步迭代计算量大,缺点二是初始近似值 x 0 x_0 x0? 只在根 x ? x^* x?附近才能保证收敛。为克服这两个缺点,通常可用下述方法:

(1)简化牛顿法,也称平行弦法,其迭代公式为:
x k + 1 = x k ? C f ( x k ) , C ≠ 0 , k = 0 , 1 , ? x_{k+1}=x_k-Cf(x_k),\ \ \ C\neq0,\ \ \ k=0,1,\cdots xk+1?=xk??Cf(xk?),   C??=0,   k=0,1,?迭代函数为:
g ( x ) = x ? C f ( x ) g(x)=x-Cf(x) g(x)=x?Cf(x) ∣ g ′ ( x ) ∣ = ∣ 1 ? C f ′ ( x ) ∣ < 1 |g'(x)|=|1-Cf'(x)|<1 g(x)=1?Cf(x)<1,即取 0 < C f ′ ( x ) < 2 0<Cf'(x)<2 0<Cf(x)<2,在根 x ? x^* x? 附近成立,则迭代法局部收敛。若取 C = 1 f ′ ( x 0 ) C=\frac{1}{f'(x_0)} C=f(x0?)1?,则称为简化牛顿法,其几何意义是用平行弦与 x x x 轴交点作为 x ? x^* x? 的近似。

(2)牛顿下山法。 为了防止迭代发散,对迭代过程附加一项要求,即具有单调性: ∣ f ( x k + 1 ) ∣ < ∣ f ( x k ) ∣ |f(x_{k+1})|<|f(x_k)| f(xk+1?)<f(xk?) 。将牛顿法的计算结果:
x ˉ k + 1 = x k ? f ( x k ) f ′ ( x k ) \bar{x}_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)} xˉk+1?=xk??f(xk?)f(xk?)?与前一步的近似值 x k x_k xk? 适当加权平均作为新的改进值:
x k + 1 = λ x ˉ k + 1 + ( 1 ? λ ) x k = x k ? λ f ( x k ) f ′ ( x k ) x_{k+1}=\lambda\bar x_{k+1}+(1-\lambda)x_k=x_k-\lambda \frac{f(x_k)}{f'(x_k)} xk+1?=λxˉk+1?+(1?λ)xk?=xk??λf(xk?)f(xk?)?选择下山因子 λ \lambda λ 时从 λ = 1 \lambda=1 λ=1 开始,逐次 λ \lambda λ 减半进行试算,直到能使下降条件满足为止,即满足单调下降性: ∣ f ( x k + 1 ) ∣ < ∣ f ( x k ) ∣ |f(x_{k+1})|<|f(x_k)| f(xk+1?)<f(xk?)

弦割法(割线法)

x k , x k ? 1 x_k,x_{k-1} xk?,xk?1? f ( x ) = 0 f(x)=0 f(x)=0 的近似根,利用 f ( x k ) , f ( x k ? 1 ) f(x_k),f(x_{k-1}) f(xk?),f(xk?1?) 构造一次插值多项式 p 1 ( x ) p_1(x) p1?(x),并用 p 1 ( x ) p_1(x) p1?(x) 的根作为 f ( x ) = 0 f(x)=0 f(x)=0 的新的近似根 x k + 1 x_{k+1} xk+1?。由
p 1 ( x ) = f ( x k ) + f ( x k ) ? f ( x k ? 1 ) x k ? x k ? 1 ( x ? x k ) p_1(x)=f(x_k)+\frac{f(x_k)-f(x_{k-1})}{x_k-x_{k-1}}(x-x_k) p1?(x)=f(xk?)+xk??xk?1?f(xk?)?f(xk?1?)?(x?xk?)相当于在 f ( x ) f(x) f(x) 曲线上取两点 ( x k , f ( x k ) ) , ( x k ? 1 , f ( x k ? 1 ) ) (x_k,f(x_k)),(x_{k-1},f(x_{k-1})) (xk?,f(xk?)),(xk?1?,f(xk?1?)) ,过这两点作割线。令 p 1 ( x k + 1 ) = 0 p_1(x_{k+1})=0 p1?(xk+1?)=0,得
x k + 1 = x k ? f ( x k ) f ( x k ) ? f ( x k ? 1 ) ( x k ? x k ? 1 ) , k = 1 , 2 , ? x_{k+1}=x_k-\frac{f(x_k)}{f(x_k)-f(x_{k-1})}(x_k-x_{k-1}),\ \ \ \ k=1,2,\cdots xk+1?=xk??f(xk?)?f(xk?1?)f(xk?)?(xk??xk?1?),    k=1,2,?弦割法:牛顿法 x k + 1 = x k ? f ( x k ) f ′ ( x k ) x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)} xk+1?=xk??f(xk?)f(xk?)? 中的导数 f ′ ( x k ) f'(x_k) f(xk?) 用差商 f ( x k ) ? f ( x k ? 1 ) x k ? x k ? 1 \frac{f(x_k)-f(x_{k-1})}{x_k-x_{k-1}} xk??xk?1?f(xk?)?f(xk?1?)? 取代的结果。

x k + 1 x_{k+1} xk+1? 实际上是两点 ( x k , f ( x k ) ) , ( x k ? 1 , f ( x k ? 1 ) ) (x_k,f(x_k)),(x_{k-1},f(x_{k-1})) (xk?,f(xk?)),(xk?1?,f(xk?1?)) 的割线与 x x x 轴交点的横坐标。

弦割法避免了求导数,但收敛速度不如牛顿法。

非线性方程组牛顿迭代法求根

考虑方程组 { f 1 ( x 1 , ? , x n ) = 0 ? ? ? f n ( x 1 , ? , x n ) = 0 \begin{cases}f_1(x_1,\cdots,x_n)=0\\\cdots\cdots\cdots\\f_n(x_1,\cdots,x_n)=0 \end{cases} ??????f1?(x1?,?,xn?)=0???fn?(x1?,?,xn?)=0?

其中 f 1 , f 2 , ? , f n f_1,f_2,\cdots,f_n f1?,f2?,?,fn? 均为 ( x 1 , ? , x n ) (x_1,\cdots,x_n) (x1?,?,xn?) 的多元函数。用向量记号记 X = ( x 1 , ? , x n ) T ∈ R n , F = ( f 1 , ? , f n ) T X=(x_1,\cdots,x_n)^T\in R^n,F=(f_1,\cdots,f_n)^T X=(x1?,?,xn?)TRn,F=(f1?,?,fn?)T,可以写成
F ( X ) = 0 F(X)=0 F(X)=0若已给出方程的一个近似根 X ( k ) = ( x 1 k , ? , x n ( k ) ) X^{(k)}=(x_1^{k},\cdots,x_n^{(k)}) X(k)=(x1k?,?,xn(k)?),将函数 F ( X ) F(X) F(X) 的分量 f i ( x ) ( i = 1 , ? , n ) f_i(x)(i=1,\cdots,n) fi?(x)(i=1,?,n) X ( k ) X^{(k)} X(k) 用多元函数泰勒展开并取线性部分,可表示为
F ( X ) ≈ F ( X ( k ) ) + F ′ ( X ( k ) ) ( X ? X ( k ) ) 令 右 式 等 于 0 : F ′ ( X ( k ) ) ( X ? X ( k ) ) = ? F ( X ( k ) ) F(X)\approx F(X^{(k)})+F'(X^{(k)})(X-X^{(k)})\\令右式等于0:F'(X^{(k)})(X-X^{(k)})=-F(X^{(k)}) F(X)F(X(k))+F(X(k))(X?X(k))0F(X(k))(X?X(k))=?F(X(k))其中 F ′ ( X ) F'(X) F(X) f 1 , f 2 , ? , f n f_1,f_2,\cdots,f_n f1?,f2?,?,fn? n ? n n*n n?n雅可比(Jacobi)矩阵
F ′ ( X ) = ? ( f 1 , f 2 , ? , f n ) ? ( x 1 , x 2 , ? , x n ) = [ ? f 1 ? x 1 ? f 1 ? x 2 ? ? f 1 ? x n ? f 2 ? x 1 ? f 2 ? x 2 ? ? f 2 ? x n ? ? ? ? f n ? x 1 ? f n ? x 2 ? ? f n ? x n ] F'(X)=\frac{\partial(f_1,f_2,\cdots,f_n)}{\partial(x_1,x_2,\cdots,x_n)}=\left[\begin{matrix}\frac{\partial f_1}{\partial x_1} & \frac{\partial f_1}{\partial x_2} & \cdots&\frac{\partial f_1}{\partial x_n}\\\frac{\partial f_2}{\partial x_1} & \frac{\partial f_2}{\partial x_2} &\cdots&\frac{\partial f_2}{\partial x_n} \\\vdots&\vdots&&\vdots\\\frac{\partial f_n}{\partial x_1} & \frac{\partial f_n}{\partial x_2} &\cdots&\frac{\partial f_n}{\partial x_n}\end{matrix}\right] F(X)=?(x1?,x2?,?,xn?)?(f1?,f2?,?,fn?)?=????????x1??f1???x1??f2????x1??fn????x2??f1???x2??f2????x2??fn????????xn??f1???xn??f2????xn??fn??????????求解方程组,并记为 X ( k + 1 ) X^{(k+1)} X(k+1),得
X ( k + 1 ) = X ( k ) ? F ′ ( X ( k ) ) ? 1 F ( X ( k ) ) , k = 0 , 1 , ? X^{(k+1)}=X^{(k)}-F'(X^{(k)})^{-1}F(X^{(k)}),\ \ k=0,1,\cdots X(k+1)=X(k)?F(X(k))?1F(X(k)),  k=0,1,?

定理5:设 F ( X ) F(X) F(X) 的定义域 D ? R n D\subset R^n D?Rn X ? ∈ D X^*\in D X?D 满足 F ( X ? ) = 0 F(X^*)=0 F(X?)=0,在 X ? X^* X? 的开邻域 S 0 ? D S_0\subset D S0??D F ′ ( X ) F'(X) F(X) 存在且连续, F ′ ( X ) F'(X) F(X) 非奇异,则牛顿法生成的序列{ X ( k ) X^{(k)} X(k)}在闭域 S ? S 0 S\subset S_0 S?S0? 上超线性收敛于 X ? X^* X?。若还存在常数 L > 0 L>0 L>0,使 ∣ ∣ F ′ ( X ) ? F ′ ( X ? ) ∣ ∣ ≤ L ? ∣ ∣ X ? X ? ∣ ∣ , ? X ∈ S ||F'(X)-F'(X^*)||\leq L*||X-X^*||,\forall X\in S F(X)?F(X?)L?X?X?,?XS,则{ X ( k ) X^{(k)} X(k)} 至少平方收敛。

迭代法的收敛阶和加速收敛方式

定义:设迭代法 x k + 1 = g ( x k ) x_{k+1}=g(x_k) xk+1?=g(xk?) 收敛于方程 x = g ( x ) x=g(x) x=g(x) 的根 x ? x^* x?,若存在常数 p ( p ≥ 1 ) p(p\geq1) p(p1) c ( c > 0 ) c(c>0) c(c>0),使得
lim ? k → ∞ ∣ x ? ? x k + 1 ∣ ∣ x ? ? x k ∣ p = c \lim_{k\rightarrow\infty}\frac{|x^*-x_{k+1}|}{|x^*-x_k|^p}=c klim?x??xk?px??xk+1??=c
则称该迭代过程是 p p p 阶收敛的。特别的, p = 1 ( 0 < c < 1 ) p=1(0<c<1) p=1(0<c<1) 时称线性收敛 p > 1 p>1 p>1 时称超线性收敛 p = 2 p=2 p=2 时称平方收敛。

迭代法的收敛速度依赖于迭代函数 g ( x ) g(x) g(x) 的选取。 收敛阶越高,收敛速度就越快。

定理6:设 x ? x^* x? 是方程 x = g ( x ) x=g(x) x=g(x) 的根, g ( x ) , g ′ ( x ) , ? , g ( p ) ( x ) g(x),g'(x),\cdots,g^{(p)}(x) g(x),g(x),?,g(p)(x) x ? x^* x? 的邻近连续,且 g ′ ( x ? ) = g ′ ′ ( x ? ) = ? = g ( p ? 1 ) ( x ? ) = 0 , g ( p ) ( x ? ) ≠ 0 g'(x^*)=g''(x^*)=\cdots=g^{(p-1)}(x^*)=0,g^{(p)}(x^*)\neq0 g(x?)=g(x?)=?=g(p?1)(x?)=0,g(p)(x?)??=0,则迭代法 x k + 1 = g ( x k ) x_{k+1}=g(x_k) xk+1?=g(xk?) x ? x^* x? 邻近是 p p p 阶收敛的。

特别的,当 0 < ∣ g ′ ( x ? ) ∣ < 1 0<|g'(x^*)|<1 0<g(x?)<1 时,迭代法是线性收敛的;当 g ′ ( x ? ) = 0 , g ′ ′ ( x ? ) ≠ 0 g'(x^*)=0,g''(x^*)\neq0 g(x?)=0,g(x?)??=0,迭代法是线性收敛的。

证明:由 g ′ ( x ? ) = 0 g'(x^*)=0 g(x?)=0,可知迭代法 x k + 1 = g ( x k ) x_{k+1}=g(x_k) xk+1?=g(xk?) 具有局部收敛性。

g ( x k ) g(x_k) g(xk?) 在根 x ? x^* x? 处泰勒展开,有
g ( x k ) = g ( x ? ) + g ( p ) ( ξ ) p ! ( x k ? x ? ) p , ξ 在 x k 、 x ? 之 间 g(x_k)=g(x^*)+\frac{g^{(p)}(\xi)}{p!}(x_k-x^*)^p,\ \ \xi在x_k、x^*之间 g(xk?)=g(x?)+p!g(p)(ξ)?(xk??x?)p,  ξxk?x?注意到 g ( x k ) = x k + 1 , g ( x ? ) = x ? g(x_k)=x_{k+1},g(x^*)=x^* g(xk?)=xk+1?,g(x?)=x?,由上式得
x k + 1 ? x ? = g ( p ) ( ξ ) p ! ( x k ? x ? ) p → g ( p ) ( x ? ) p ! ( x k ? x ? ) p ( k → ∞ ) x_{k+1}-x^*=\frac{g^{(p)}(\xi)}{p!}(x_k-x^*)^p\rightarrow\frac{g^{(p)}(x^*)}{p!}(x_k-x^*)^p\ \ \ \ \ \ \ (k\rightarrow\infty) xk+1??x?=p!g(p)(ξ)?(xk??x?)pp!g(p)(x?)?(xk??x?)p       (k) 即迭代过程 x k + 1 = g ( x k ) x_{k+1}=g(x_k) xk+1?=g(xk?) x ? x^* x? 邻近是 p p p 阶收敛的。

分析简单迭代法与牛顿迭代法的收敛速度:

简单迭代法:由 x ? ? x k + 1 = g ( x ? ) ? g ( x k ) = g ′ ( ζ k ) ( x ? ? x k ) x^*-x_{k+1}=g(x^*)-g(x_k)=g'(\zeta_k)(x^*-x_k) x??xk+1?=g(x?)?g(xk?)=g(ζk?)(x??xk?),得
lim ? k → ∞ ∣ x ? ? x k + 1 ∣ ∣ x ? ? x k ∣ = lim ? k → ∞ ∣ g ′ ( ζ k ) ∣ = ∣ g ′ ( x ? ) ∣ \lim_{k\rightarrow\infty}\frac{|x^*-x_{k+1}|}{|x^*-x_k|}=\lim_{k\rightarrow\infty}|g'(\zeta_k)|=|g'(x^*)| klim?x??xk?x??xk+1??=klim?g(ζk?)=g(x?)所以 0 < ∣ g ′ ( x ) ∣ < 1 0<|g'(x)|<1 0<g(x)<1 时,简单迭代法线性收敛。

牛顿迭代法(1)单根情形: g ( x ) = x ? f ( x ) f ′ ( x ) g(x)=x-\frac{f(x)}{f'(x)} g(x)=x?f(x)f(x)?,知
g ′ ( x ) = 1 ? [ f ′ ( x ) ] 2 ? f ( x ) f ′ ′ ( x ) [ f ′ ( x ) ] 2 = f ( x ) f ′ ′ ( x ) [ f ′ ( x ) ] 2 g'(x)=1-\frac{[f'(x)]^2-f(x)f''(x)}{[f'(x)]^2}=\frac{f(x)f''(x)}{[f'(x)]^2} g(x)=1?[f(x)]2[f(x)]2?f(x)f(x)?=[f(x)]2f(x)f(x)? x ? x^* x? f ( x ) f(x) f(x) 的一个单根,即 f ( x ? ) = 0 , f ′ ( x ? ) ≠ 0 f(x^*)=0,f'(x^*)\neq0 f(x?)=0,f(x?)??=0,则由上式知
g ′ ( x ? ) = 0 , g ′ ′ ( x ? ) = f ′ ′ ( x ? ) f ′ ( x ? ) g'(x^*)=0,g''(x^*)=\frac{f''(x^*)}{f'(x^*)} g(x?)=0,g(x?)=f(x?)f(x?)?表明牛顿迭代法在零点 x ? x^* x? 的邻近是平方收敛的。
lim ? k → ∞ x k + 1 ? x ? ( x k ? x ? ) 2 = g ′ ′ ( x ? ) 2 = f ′ ′ ( x ? ) 2 f ′ ( x ? ) \lim_{k\rightarrow\infty}\frac{x_{k+1}-x^*}{(x_k-x^*)^2}=\frac{g''(x^*)}{2}=\frac{f''(x^*)}{2f'(x^*)} klim?(xk??x?)2xk+1??x??=2g(x?)?=2f(x?)f(x?)?(2)重根形式: f ( x ) = ( x ? x ? ) m q ( x ) f(x)=(x-x^*)^mq(x) f(x)=(x?x?)mq(x),整数 m ≥ 2 , q ( x ? ) ≠ 0 m\geq2,q(x^*)\neq0 m2,q(x?)??=0,则 x ? x^* x? 为方程 f ( x ) = 0 f(x)=0 f(x)=0 的m重根
g ( x ) = x ? f ( x ) f ′ ( x ) g ′ ( x ? ) = f ( x ) f ′ ′ ( x ) [ f ′ ( x ) ] 2 ∣ x = x ? = m ( m ? 1 ) ( x ? x ? ) 2 m ? 2 q ( x ) + 2 m ( x ? x ? ) 2 m ? 1 q ′ ( x ) q ( x ) + ( x ? x ? ) 2 m q ( x ) q ′ ′ ( x ) m 2 ( x ? x ? ) 2 m ? 2 q ( x ) 2 + ( x ? x ? ) 2 m q ′ ( x ) 2 + 2 m ( x ? x ? ) 2 m ? 1 q ( x ) q ′ ( x ) ∣ x = x ? = m ( m ? 1 ) q ( x ) + 2 m ( x ? x ? ) q ′ ( x ) q ( x ) + ( x ? x ? ) 2 q ( x ) q ′ ′ ( x ) m 2 q ( x ) 2 + ( x ? x ? ) 2 q ′ ( x ) 2 + 2 m ( x ? x ? ) q ( x ) q ′ ( x ) ∣ x = x ? = 1 ? 1 m ≠ 0 , ∣ g ′ ( x ? ) ∣ < 1 g(x)=x-\frac{f(x)}{f'(x)}\\g'(x^*)=\frac{f(x)f''(x)}{[f'(x)]^2}|_{x=x^*}=\frac{m(m-1)(x-x^*)^{2m-2}q(x)+2m(x-x^*)^{2m-1}q'(x)q(x)+(x-x^*)^{2m}q(x)q''(x)}{m^2(x-x^*)^{2m-2}q(x)^2+(x-x^*)^{2m}q'(x)^2+2m(x-x^*)^{2m-1}q(x)q'(x)}|_{x=x^*}\\=\frac{m(m-1)q(x)+2m(x-x^*)q'(x)q(x)+(x-x^*)^2q(x)q''(x)}{m^2q(x)^2+(x-x^*)^2q'(x)^2+2m(x-x^*)q(x)q'(x)}|_{x=x^*}=1-\frac{1}{m}\neq0\ \ ,\ \ |g'(x^*)|<1 g(x)=x?f(x)f(x)?g(x?)=[f(x)]2f(x)f(x)?x=x??=m2(x?x?)2m?2q(x)2+(x?x?)2mq(x)2+2m(x?x?)2m?1q(x)q(x)m(m?1)(x?x?)2m?2q(x)+2m(x?x?)2m?1q(x)q(x)+(x?x?)2mq(x)q(x)?x=x??=m2q(x)2+(x?x?)2q(x)2+2m(x?x?)q(x)q(x)m(m?1)q(x)+2m(x?x?)q(x)q(x)+(x?x?)2q(x)q(x)?x=x??=1?m1???=0  ,  g(x?)<1所以当 x ? x^* x? f ( x ) = 0 f(x)=0 f(x)=0 m ( m ≥ 2 ) m(m\geq2) m(m2) 重零点, f ( x ) f(x) f(x) 在其零点 x ? x^* x? 的某邻域内有二阶连续导数,则牛顿法局部线性收敛,为使其仍然二次收敛,需对其修正。

若已知重根数 m m m g ( x ) = x ? m f ( x ) f ′ ( x ) g(x)=x-m\frac{f(x)}{f'(x)} g(x)=x?mf(x)f(x)?,可得:
g ′ ( x ? ) = 1 ? m ? [ f ′ ( x ) ] 2 ? f ( x ) f ′ ′ ( x ) [ f ′ ( x ) ] 2 = 1 ? m + m ? f ( x ) f ′ ′ ( x ) [ f ′ ( x ) ] 2 = 1 ? m + m ? ( 1 ? 1 m ) = 0 g'(x^*)=1-m*\frac{[f'(x)]^2-f(x)f''(x)}{[f'(x)]^2}=1-m+m*\frac{f(x)f''(x)}{[f'(x)]^2}=1-m+m*(1-\frac{1}{m})=0 g(x?)=1?m?[f(x)]2[f(x)]2?f(x)f(x)?=1?m+m?[f(x)]2f(x)f(x)?=1?m+m?(1?m1?)=0则迭代法:
x k + 1 = x k ? m f ( x k ) f ′ ( x k ) , k = 0 , 1 , ? x_{k+1}=x_k-\frac{mf(x_k)}{f'(x_k)}\ \ ,\ \ k=0,1,\cdots xk+1?=xk??f(xk?)mf(xk?)?  ,  k=0,1,?
局部二次收敛的

若重根数 m m m 未知: F ( x ) = f ( x ) f ′ ( x ) F(x)=\frac{f(x)}{f'(x)} F(x)=f(x)f(x)?,若 x ? x^* x? f ( x ) = 0 f(x)=0 f(x)=0 m m m 重根,则
F ( x ) = ( x ? x ? ) m q ( x ) m ( x ? x ? ) m ? 1 q ( x ) + ( x ? x ? ) m q ′ ( x ) = ( x ? x ? ) q ( x ) m q ( x ) + ( x ? x ? ) q ′ ( x ) F(x)=\frac{(x-x^*)^mq(x)}{m(x-x^*)^{m-1}q(x)+(x-x^*)^mq'(x)}=\frac{(x-x^*)q(x)}{mq(x)+(x-x^*)q'(x)} F(x)=m(x?x?)m?1q(x)+(x?x?)mq(x)(x?x?)mq(x)?=mq(x)+(x?x?)q(x)(x?x?)q(x)?得到 x ? x^* x? F ( x ) = 0 F(x)=0 F(x)=0 的单根,用牛顿法,其迭代函数为:
g ( x ) = x ? F ( x ) F ′ ( x ) = x ? f ( x ) f ′ ( x ) [ f ′ ( x ) ] 2 ? f ( x ) f ′ ′ ( x ) [ f ′ ( x ) ] 2 = x ? f ( x ) f ′ ( x ) [ f ′ ( x ) ] 2 ? f ( x ) f ′ ′ ( x ) g(x)=x-\frac{F(x)}{F'(x)}=x-\frac{\frac{f(x)}{f'(x)}}{\frac{[f'(x)]^2-f(x)f''(x)}{[f'(x)]^2}}=x-\frac{f(x)f'(x)}{[f'(x)]^2-f(x)f''(x)} g(x)=x?F(x)F(x)?=x?[f(x)]2[f(x)]2?f(x)f(x)?f(x)f(x)??=x?[f(x)]2?f(x)f(x)f(x)f(x)?从而可构造迭代法
x k + 1 = x k ? f ( x ) f ′ ( x ) [ f ′ ( x ) ] 2 ? f ( x ) f ′ ′ ( x ) , k = 0 , 1 , ? x_{k+1}=x_k-\frac{f(x)f'(x)}{[f'(x)]^2-f(x)f''(x)}\ \ ,\ \ k=0,1,\cdots xk+1?=xk??[f(x)]2?f(x)f(x)f(x)f(x)?  ,  k=0,1,?是二阶收敛的。

迭代加速方法

1、艾特肯(Aitken)加速方法:对于收敛于 x ? x^* x? 的不动点迭代法 x k + 1 = g ( x k ) x_{k+1}=g(x_k) xk+1?=g(xk?),设 x k x_k xk? 是根 x ? x^* x? 的某个近似值,用迭代公式校正一次得:
x k + 1 = g ( x k ) x_{k+1}=g(x_k) xk+1?=g(xk?)由微分中值定理得
x k + 1 ? x ? = g ( x k ) ? g ( x ? ) = g ′ ( ζ ) ( x k ? x ? ) , ζ 介 于 x k 、 x ? 之 间 x_{k+1}-x^*=g(x_k)-g(x^*)=g'(\zeta)(x_k-x^*)\ \ ,\ \ \zeta介于x_k、x^*之间 xk+1??x?=g(xk?)?g(x?)=g(ζ)(xk??x?)  ,  ζxk?x?假定 g ′ ( x ) g'(x) g(x) 改变不大,近似去某个近似值 L L L,则有
x k + 1 ? x ? ≈ L ( x k ? x ? ) (1) x_{k+1}-x^*\approx L(x_k-x^*)\tag{1} xk+1??x?L(xk??x?)(1)再进行一次校正,得
x k + 2 = g ( x k + 1 ) x k + 2 ? x ? ≈ L ( x k + 1 ? x ? ) x_{k+2}=g(x_{k+1})\\x_{k+2}-x^*\approx L(x_{k+1}-x^*) xk+2?=g(xk+1?)xk+2??x?L(xk+1??x?)与(1)式联立消去未知的 L L L ,有
x ? ? x k + 1 x ? ? x k = x ? ? x k + 2 x ? ? x k + 1 x ? ≈ x k x k + 2 ? x k + 1 2 x k + 2 ? 2 x k + 1 + x k = x k ? ( x k + 1 ? x k ) 2 x k + 2 ? 2 x k + 1 + x k \frac{x^*-x_{k+1}}{x^*-x_k}=\frac{x^*-x_{k+2}}{x^*-x_{k+1}}\\x^*\approx\frac{x_kx_{k+2}-x_{k+1}^2}{x_{k+2}-2x_{k+1}+x_k}=x_k-\frac{(x_{k+1}-x_k)^2}{x_{k+2}-2x_{k+1}+x_k} x??xk?x??xk+1??=x??xk+1?x??xk+2??x?xk+2??2xk+1?+xk?xk?xk+2??xk+12??=xk??xk+2??2xk+1?+xk?(xk+1??xk?)2?可用上式右端作为 x ? x^* x? 的新近似: x ~ k = x k ? ( x k + 1 ? x k ) 2 x k + 2 ? 2 x k + 1 + x k \tilde{x}_k=x_k-\frac{(x_{k+1}-x_k)^2}{x_{k+2}-2x_{k+1}+x_k} x~k?=xk??xk+2??2xk+1?+xk?(xk+1??xk?)2?。这被称为艾特肯(Aitken)加速方法

2、斯蒂芬森(Steffensen)方法:也称为艾特肯算法,把艾特肯加速技巧与不动点迭代结合,可得: { y k = g ( x k ) z k = g ( y k ) x k + 1 = x k ? ( y k ? x k ) 2 z k ? 2 y k + x k ( k = 0 , 1 , 2 , ? ) \begin{cases}y_k=g(x_k)\\z_k=g(y_k)\\x_{k+1}=x_k-\frac{(y_k-x_k)^2}{z_k-2y_k+x_k} \end{cases}\ \ (k=0,1,2,\cdots) ??????yk?=g(xk?)zk?=g(yk?)xk+1?=xk??zk??2yk?+xk?(yk??xk?)2??  (k=0,1,2,?)

也可将其写成另一种不动点迭代:
x k + 1 = g ( x k ) ( k = 0 , 1 , 2 , ? ) 其 中 g ( x ) = x ? ( g ( x ) ? x ) 2 g ( g ( x ) ) ? 2 g ( x ) + x x_{k+1}=g(x_k)\ \ \ (k=0,1,2,\cdots)\\其中\ \ \ g(x)=x-\frac{(g(x)-x)^2}{g(g(x))-2g(x)+x} xk+1?=g(xk?)   (k=0,1,2,?)   g(x)=x?g(g(x))?2g(x)+x(g(x)?x)2?