方程的根
f ( x ∗ ) = 0 f(x^*)=0 f(x∗)=0 , x ∗ x^* x∗ 为 f ( x ) f(x) f(x) 的根
单根和重根
f ( x ∗ ) f(x^*) f(x∗) 有 m m m 重根 x ∗ x^* x∗ 的充要条件是
f ( x ∗ ) = f ′ ( x ∗ ) = ⋯ = f ( m − 1 ) ( x ∗ ) = 0 f(x^*)=f'(x^*)=\cdots=f^{(m-1)}(x^*)=0 f(x∗)=f′(x∗)=⋯=f(m−1)(x∗)=0f ( m ) ( x ∗ ) ≠ 0 f^{(m)}(x^*)\ne0 f(m)(x∗)=0
例: 求 x = 0 x=0 x=0 是方程 f ( x ) = e 2 x − 1 − 2 x − 2 x 2 = 0 f(x)=e^{2x}-1-2x-2x^2=0 f(x)=e2x−1−2x−2x2=0 的几重根
解: f ( x ) = e 2 x − 1 − 2 x − 2 x 2 f ( 0 ) = 0 f(x)=e^{2x}-1-2x-2x^2\ \ f(0)=0 f(x)=e2x−1−2x−2x2 f(0)=0
f ′ ( x ) = 2 e 2 x − 2 − 4 x f ′ ( 0 ) = 0 f'(x)=2e^{2x}-2-4x\ \ f'(0)=0 f′(x)=2e2x−2−4x f′(0)=0
f ′ ′ ( x ) = 4 e 2 x − 4 f ′ ′ ( 0 ) = 0 f''(x)=4e^{2x}-4\ \ f''(0)=0 f′′(x)=4e2x−4 f′′(0)=0
f ′ ′ ′ ( x ) = 8 e 2 x f ′ ′ ′ ( 0 ) = 8 ≠ 0 f'''(x)=8e^{2x}\ \ f'''(0)=8\ne0 f′′′(x)=8e2x f′′′(0)=8=0
故 x = 0 x=0 x=0 是 f ( x ) f(x) f(x) 的三重根
有根区间
f ( x ) = 0 f(x)=0 f(x)=0 在有根区间 [ a , b ] [\ a,\ b\ ] [ a, b ] 内至少有一个根
f ( x ) f(x) f(x) 在区间 [ a , b ] [\ a,\ b\ ] [ 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 ] 内至少有一个根
隔根区间
f ( x ) = 0 f(x)=0 f(x)=0 在隔根区间 [ a , b ] [\ a,\ b\ ] [ a, b ] 内只有一个根
f ( x ) f(x) f(x) 在区间 [ a , b ] [\ a,\ b\ ] [ 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 ] 内有且仅有一个根
逐步搜索法
f ( x ) f(x) f(x) 的有根区间 [ a , b ] [\ a,\ b\ ] [ a, b ] ,不妨假定 f ( a ) < 0 f(a)<0 f(a)<0 ,从 x 0 = a x_0=a x0=a 出发,按步长 h h h 一步一步向右跨。一旦 x k = a + k h x_k=a+kh xk=a+kh 上的 f ( x k ) f(x_k) f(xk) 与 f ( a ) f(a) f(a) 异号,则确定了缩小的有根区间 [ x k − 1 , x k ] [\ x_{k-1},\ x_k\ ] [ xk−1, xk ]
区间二分法(只能求单根)
f ( x ) f(x) f(x) 在隔根区间 [ a , b ] [\ a,\ b\ ] [ a, b ] 上单调连续,则不断计算 f ( a + b 2 ) f(\dfrac {a+b}2) f(2a+b)
误差分析
取有根区间 [ a k , b k ] [\ a_{k},\ b_k\ ] [ ak, bk ] 的中点
x k = 1 2 ( a k + b k ) x_k=\dfrac 12(a_k+b_k) xk=21(ak+bk)
作为根的近似值,则此时的误差
∣ x ∗ − x k ∣ ≤ 1 2 ( b k − a k ) = 1 2 k + 1 ( b − a ) |x^*-x_k|\le\dfrac 12(b_k-a_k)=\dfrac 1{2^{k+1}}(b-a) ∣x∗−xk∣≤21(bk−ak)=2k+11(b−a)
若事先给定误差要求为 ε \varepsilon ε ,则只需
∣ x ∗ − x k ∣ ≤ 1 2 k + 1 ( b − a ) < ε |x^*-x_k|\le\dfrac 1{2^{k+1}}(b-a)<\varepsilon ∣x∗−xk∣≤2k+11(b−a)<ε
即可停止运算
此时二分最小次数 k k k ,由 ∣ x ∗ − x k ∣ ≤ 1 2 k + 1 ( b − a ) < ε |x^*-x_k|\le\dfrac 1{2^{k+1}}(b-a)<\varepsilon ∣x∗−xk∣≤2k+11(b−a)<ε 得 2 k + 1 > b − a ε 2^{k+1}>\dfrac {b-a}\varepsilon 2k+1>εb−a
k > l g ( b − a ) − l g ε l g 2 − 1 k>\dfrac {lg(b-a)-lg\varepsilon}{lg2}-1 k>lg2lg(b−a)−lgε−1
不动点迭代法
f ( x ) = 0 ⟷ x = g ( x ) f(x)=0\longleftrightarrow x=g(x) f(x)=0⟷x=g(x)
从初值 x 0 x_0 x0 出发,计算 x 1 = g ( x 0 ) , x 2 = g ( x 1 ) , ⋯ , x k + 1 = g ( x k ) , ⋯ x_1=g(x_0),\ x_2=g(x_1),\ \cdots,x_{k+1}=g(x_k),\ \cdots x1=g(x0), x2=g(x1), ⋯,xk+1=g(xk), ⋯ ,若存在 x ∗ x^* x∗ 使得 lim k → ∞ x k = x ∗ \lim\limits_{k\rightarrow\infty}x_k=x^* k→∞limxk=x∗ ,且 g ( x ) g(x) g(x) 连续,则 x ∗ = g ( x ∗ ) x^*=g(x^*) x∗=g(x∗) ,即 x ∗ x^* x∗ 是 g g g 的不动点,也就是 f f f 的根
不动点迭代的收敛性
设 φ ( x ) \varphi(x) φ(x) 在区间 [ a , b ] [\ a,\ b\ ] [ a, b ] 上具有连续的一阶导数,且满足
当 x ∈ [ a , b ] x\in[\ a,\ b\ ] x∈[ a, b ] 时, φ ( x ) ∈ [ a , b ] \varphi(x)\in[\ a,\ b\ ] φ(x)∈[ a, b ]
∃ 0 ≤ L < 1 \exist\ 0\le L<1 ∃ 0≤L<1 ,使得对所有的 x ∈ [ a , b ] x\in[\ a,\ b\ ] x∈[ a, b ] ,有
∣ φ ′ ( x ) ∣ ≤ L |\varphi'(x)|\le L ∣φ′(x)∣≤L
则方程 x = φ ( x ) x=\varphi(x) x=φ(x) 在区间 [ a , b ] [\ a,\ b\ ] [ a, b ] 上的解 x ∗ x^* x∗ 存在且唯一。对任意的 x 0 ∈ [ a , b ] x_0\in [\ a,\ b\ ] x0∈[ a, b ] ,迭代过程 x k + 1 = φ ( x k ) x_{k+1}=\varphi(x_k) xk+1=φ(xk) 均收敛于 x ∗ x^* x∗ 。 L L L 越小,收敛越快
并且有误差估计式
- ∣ x ∗ − x k ∣ ≤ L 1 − L ∣ x k − x k − 1 ∣ |x^*-x_k|\le\dfrac L{1-L}|x_k-x_{k-1}| ∣x∗−xk∣≤1−LL∣xk−xk−1∣
- ∣ x ∗ − x k ∣ ≤ L k 1 − L ∣ x 1 − x 0 ∣ |x^*-x_k|\le\dfrac {L^k}{1-L}|x_1-x_0| ∣x∗−xk∣≤1−LLk∣x1−x0∣
设在区间 [ a , b ] [\ a,\ b\ ] [ a, b ] 上方程 x = φ ( x ) x=\varphi(x) x=φ(x) 有根 x ∗ x^* x∗ ,且对任意 x ∈ [ a , b ] x\in[\ a,\ b\ ] x∈[ a, b ] 有 ∣ φ ′ ( x ) ∣ ≥ 1 |\varphi '(x)|\ge1 ∣φ′(x)∣≥1 ,则对任意 x 0 ( ≠ x ∗ ) ∈ [ a , b ] x_0(\ne x^*)\in[\ a,\ b\ ] x0(=x∗)∈[ a, b ] ,迭代过程 x k + 1 = φ ( x k ) x_{k+1}=\varphi(x_k) xk+1=φ(xk) 一定发散
例: 求 x 3 − 2 x − 5 = 0 x^3-2x-5=0 x3−2x−5=0 的最小正根
解: 用试凑法得 f ( 2 ) = − 1 f(2)=-1 f(2)=−1 , f ( 3 ) = 16 f(3)=16 f(3)=16 ,故 x ∗ ∈ [ 2 , 3 ] x^*\in[\ 2,\ 3\ ] x∗∈[ 2, 3 ]
若取迭代格式 x k + 1 = 2 x k + 5 x k 2 x_{k+1}=\dfrac {2x_k+5}{x_k^2} xk+1=xk22xk+5 ,则 φ ( x ) = 2 x + 5 x 2 \varphi(x)=\dfrac {2x+5}{x^2} φ(x)=x22x+5,故 φ ′ ( x ) = − 2 ( x + 5 ) x 3 \varphi'(x)=\dfrac {-2(x+5)}{x^3} φ′(x)=x3−2(x+5)
得 φ ′ ( 2 ) = − 14 8 \varphi'(2)=-\dfrac {14}8 φ′(2)=−814 ,即 max 2 ≤ x ≤ 3 ∣ φ ′ ( x ) ∣ > 1 \max\limits_{2\le x\le 3}|\varphi'(x)|>1 2≤x≤3max∣φ′(x)∣>1 ,故此迭代发散
将原方程改写成 x = 2 x + 5 3 x=\sqrt[3]{2x+5} x=32x+5 ,则 φ ′ ( x ) = 2 3 ( 2 x + 5 ) − 2 3 \varphi'(x)=\dfrac23(2x+5)^{-\frac 23} φ′(x)=32(2x+5)−32
得 max 2 ≤ x ≤ 3 ∣ φ ′ ( x ) ∣ = 0.94 < 1 \max\limits_{2\le x\le 3}|\varphi'(x)|=0.94<1 2≤x≤3max∣φ′(x)∣=0.94<1 , 迭代收敛
取 x k + 1 = 2 x k + 5 3 , k = 0 , 1 , 2 , ⋯ x_{k+1}=\sqrt[3]{2x_k+5}\ ,\ k=0,1,2,\cdots xk+1=32xk+5 , k=0,1,2,⋯
选初值 x 0 = 2.5 x_0=2.5 x0=2.5 (区间内任选),迭代后得 x ∗ = 2.0946 x^*=2.0946 x∗=2.0946
局部收敛性
设 φ ( x ) \varphi(x) φ(x) 在 x = φ ( x ) x=\varphi(x) x=φ(x) 的根 x ∗ x^* x∗ 附近连续,且有
∣ φ ′ ( x ∗ ) ∣ < 1 |\varphi'(x^*)|<1 ∣φ′(x∗)∣<1
则迭代格式 x k + 1 = φ ( x k ) x_{k+1}=\varphi(x_k) xk+1=φ(xk) 在 x ∗ x^* x∗ 附件具有局部收敛性因为实际中 x ∗ x^* x∗ 事先不知道,但初值在根领域,根据 φ ′ ( x ) \varphi'(x) φ′(x) 的连续性,可采用
∣ φ ′ ( x 0 ) ∣ < 1 |\varphi'(x_0)|<1 ∣φ′(x0)∣<1
来代替 ∣ φ ′ ( x ∗ ) ∣ < 1 |\varphi'(x^*)|<1 ∣φ′(x∗)∣<1 ,判断迭代收敛性
例: 方程 x 3 − x − 1 = 0 x^3-x-1=0 x3−x−1=0 在 x = 1.5 x=1.5 x=1.5 附近有根,把方程写出三种不同的等价形式
迭代格式在 x 0 = 1.5 x_0=1.5 x0=1.5 处不收敛的是()
解: 对各等价形式求导得 φ ′ ( x ) \varphi'(x) φ′(x)
分别求出 φ ′ ( x 0 ) \varphi'(x_0) φ′(x0) ,若其大于一,则迭代不收敛
故选 3
迭代过程的收敛速度
设迭代过程 x k + 1 = φ ( x k ) x_{k+1}=\varphi(x_k) xk+1=φ(xk) 收敛于 x = φ ( x ) x=\varphi(x) x=φ(x) 的根 x ∗ x^* x∗ ,令迭代误差 e k = x k − x ∗ e_k=x_k-x^* ek=xk−x∗ ,若存在常数 p ( p ≥ 1 ) p\ (p\ge1) p (p≥1) 和 c ( c > 0 ) c\ (c>0) c (c>0) ,使得
lim k → + ∞ ∣ e k + 1 ∣ ∣ e k ∣ p = c \lim\limits_{k\rightarrow+\infty}\dfrac {|e_{k+1}|}{|e_k|^p}=c k→+∞lim∣ek∣p∣ek+1∣=c
则称序列 x k {x_k} xk 是 p p p 阶收敛的p = 1 p=1 p=1 时称线性收敛, p = 2 p=2 p=2 时称平方收敛或二次收敛
简单判断方法
对迭代过程 x k + 1 = φ ( x k ) x_{k+1}=\varphi(x_k) xk+1=φ(xk) ,若 φ ( p ) ( x ) \varphi^{(p)}(x) φ(p)(x) 在所求根 x ∗ x^* x∗ 领域连续,且
φ ′ ( x ∗ ) = φ ′ ′ ( x ∗ ) = ⋯ = φ ( p − 1 ) ( x ∗ ) = 0 \varphi'(x^*)=\varphi''(x^*)=\cdots=\varphi^{(p-1)}(x^*)=0 φ′(x∗)=φ′′(x∗)=⋯=φ(p−1)(x∗)=0φ ( p ) ( x ∗ ) ≠ 0 \varphi^{(p)}(x^*)\ne0 φ(p)(x∗)=0
则迭代过程在 x ∗ x^* x∗ 领域是 p p p 阶收敛的
例: 迭代过程 x k + 1 = 2 3 x k + 1 x k 2 x_{k+1}=\dfrac 23x_k+\dfrac 1{x_k^2} xk+1=32xk+xk21 收敛于 x ∗ = 3 3 x^*=\sqrt[3]3 x∗=33 时,求其收敛速度
解: 令 φ ( x ) = 2 3 x + 1 x 2 \varphi(x)=\dfrac 23x+\dfrac 1{x^2} φ(x)=32x+x21
有 φ ′ ( x 0 ) = 0 \varphi'(x_0)=0 φ′(x0)=0, φ ′ ′ ( x 0 ) ≠ 0 \varphi''(x_0)\ne0 φ′′(x0)=0
故 x k {x_k} xk 平方收敛
- φ ′ ( x ∗ ) ≠ 0 \varphi'(x^*)\ne0 φ′(x∗)=0 最多线性收敛
- φ ′ ( x ∗ ) = 0 \varphi'(x^*)=0 φ′(x∗)=0 至少平方收敛
迭代加速
加权法加速
设 x k x_k xk 是根 x ∗ x^* x∗ 的近似值,在 [ x k , x ∗ ] [\ x_k,\ x^*\ ] [ xk, x∗ ] 上 φ ′ ( x ) \varphi'(x) φ′(x) 变化不大,其估计值为 c c c ,则有加权法加速公式
x k + 1 = 1 1 − c [ φ ( x k ) − c x k ] x_{k+1}=\dfrac 1{1-c}[\ \varphi(x_k)-cx_k\ ] xk+1=1−c1[ φ(xk)−cxk ]
例: 用加权法加速求方程 x = e − x x=e^{-x} x=e−x 在 0.5 附近的一个根
解: 因为在 x 0 = 0.5 x_0=0.5 x0=0.5 附近有
φ ′ ( x ) ∣ 0.5 = − e − x ∣ 0.5 = − e − 0.5 ≈ − 0.6 \varphi'(x)|_{0.5}=-e^{-x}|_{0.5}=-e^{-0.5}\approx-0.6 φ′(x)∣0.5=−e−x∣0.5=−e−0.5≈−0.6
故加速迭代公式写成
x k + 1 = 1 1.6 ( e − x k + 0.6 x k ) x_{k+1}=\dfrac 1{1.6}(e^{-x_k}+0.6x_k) xk+1=1.61(e−xk+0.6xk)
迭代公式的建立
对于非线性方程 f ( x ) = 0 f(x)=0 f(x)=0 ,若 f ′ ( x k ) ≠ 0 f'(x_k)\ne0 f′(xk)=0 ,建立迭代格式
x k + 1 = x k − f ( x k ) f ′ ( x k ) , k = 0 , 1 , ⋯ x_{k+1}=x_k-\dfrac {f(x_k)}{f'(x_k)}\ ,\ k=0,1,\cdots xk+1=xk−f′(xk)f(xk) , k=0,1,⋯
相应的迭代函数
φ ( x ) = x − f ( x ) f ′ ( x ) \varphi(x)=x-\dfrac {f(x)}{f' (x)} φ(x)=x−f′(x)f(x)
牛顿迭代法的计算步骤:
- 给出 x 0 x_0 x0 , ε \varepsilon ε , N N N
- 计算 x 1 = x 0 − f ( x 0 ) f ′ ( x 0 ) x_1=x_0-\dfrac {f(x_0)}{f'(x_0)} x1=x0−f′(x0)f(x0)
- 若 ∣ x 1 − x 0 ∣ < ε |x_1-x_0|<\varepsilon ∣x1−x0∣<ε 则转 4, 否则 x 0 = x 1 x_0=x_1 x0=x1 ,转步骤 2
- 输出 x 1 x_1 x1 ,结束
牛顿迭代法的收敛情况
局部收敛性
设 f ( x ∗ ) = 0 f(x^*)=0 f(x∗)=0 , f ′ ( x ∗ ) ≠ 0 f'(x^*)\ne0 f′(x∗)=0 , f ′ ′ ( x ∗ ) f''(x^*) f′′(x∗) 在 x ∗ x^* x∗ 邻域连续,则牛顿迭代法在 x ∗ x^* x∗ 局部收敛,且至少 2 阶收敛,并有
lim k → ∞ e k + 1 e k 2 = f ′ ′ ( x ∗ ) 2 f ′ ( x ∗ ) \lim\limits_{k\rightarrow\infty}\dfrac {e_{k+1}}{e_k^2}=\dfrac {f''(x^*)}{2f'(x^*)} k→∞limek2ek+1=2f′(x∗)f′′(x∗)
例: 设函数 f ( x ) = ( x 3 − a ) 2 f(x)=(x^3-a)^2 f(x)=(x3−a)2 ,写出解 f ( x ) = 0 f(x)=0 f(x)=0 的牛顿迭代格式,并证明此格式的收敛阶
解: f ( x ) = ( x 3 − a ) 2 f(x)=(x^3-a)^2 f(x)=(x3−a)2 , f ′ ( x ) = 6 ( x 3 − a ) x 2 f'(x)=6(x^3-a)x^2 f′(x)=6(x3−a)x2
故迭代格式为 x k + 1 = x k − ( x k 3 − a ) 2 6 ( x k 3 − a ) x k 2 = 5 6 x k + a 6 x k 2 x_{k+1}=x_k-\dfrac {(x_k^3-a)^2}{6(x_k^3-a)x_k^2}=\dfrac 56x_k+\dfrac a{6x_k^2} xk+1=xk−6(xk3−a)xk2(xk3−a)2=65xk+6xk2a
迭代函数 φ ( x ) = 2 3 x + a 3 x 2 \varphi(x)=\dfrac 23x+\dfrac a{3x^2} φ(x)=32x+3x2a , φ ′ ( x ) = 2 3 − 2 a 3 x 3 \varphi'(x)=\dfrac 23-\dfrac{2a}{3x^3} φ′(x)=32−3x32a ,又有 x ∗ = a 3 x^*=\sqrt[3]a x∗=3a
故 φ ′ ( a 3 ) = 0.5 < 1 ≠ 0 \varphi'(\sqrt[3]a)=0.5<1\ne0 φ′(3a)=0.5<1=0 ,故牛顿迭代法线性收敛
牛顿迭代法的修正
简化牛顿迭代法(平行弦法)
简化牛顿迭代法为 x k + 1 = x k − f ( x k ) c x_{k+1}=x_k-\dfrac {f(x_k)}c xk+1=xk−cf(xk) ,其中 c c c 为常数
c c c 一般取 c = f ′ ( x 0 ) c=f'(x_0) c=f′(x0)
牛顿下山法
牛顿下山法需要满足所选初值能使函数值单调下降,即下山条件
∣ f ( x k + 1 ) ∣ < ∣ f ( x k ) ∣ |f(x_{k+1})|<|f(x_k)| ∣f(xk+1)∣<∣f(xk)∣
加入权值 λ \lambda λ ,有迭代公式
x k + 1 = x k − λ f ( x k ) f ′ ( x k ) x_{k+1}=x_k-\lambda\dfrac {f(x_k)}{f'(x_k)} xk+1=xk−λf′(xk)f(xk)
其中 λ \lambda λ 为下山因子下山因子的选择是逐步探索进行的,从 λ = 1 \lambda=1 λ=1 开始反复将 λ \lambda λ 的值减半进行试算,一旦单调下降条件成立,则下山成功;反之,下山失败,需要**另选初值 ** x 0 x_0 x0 重算
牛顿下山法运算步骤
- 给出初值 x 0 x_0 x0 , ε λ \varepsilon_\lambda ελ
- 令 λ = 1 \lambda =1 λ=1
- 由 x 0 x_0 x0 计算 x 1 x_1 x1 , x 0 − λ f ( x 0 ) f ′ ( x 0 ) → x 1 x_0-\lambda\dfrac {f(x_0)}{f'(x_0)}\rightarrow x_1 x0−λf′(x0)f(x0)→x1
- 若 ∣ f ( x 1 ) ∣ < ∣ f ( x 0 ) ∣ |f(x_{1})|<|f(x_0)| ∣f(x1)∣<∣f(x0)∣ ,下山成功, x 1 → x 0 x_1\rightarrow x_0 x1→x0 转牛顿法
- 否则若 λ < ε λ \lambda<\varepsilon_\lambda λ<ελ ,下山失败,停止迭代,另选初值 x 0 x_0 x0
- λ 2 → λ \dfrac \lambda 2\rightarrow \lambda 2λ→λ ,返回步骤 3
重根时的修正(重根数已知)
当 x ∗ x^* x∗ 是 f ( x ) = 0 f(x)=0 f(x)=0 的 m ( m ≥ 2 ) m(m\ge2) m(m≥2) 重根时,牛顿法仅为线性收敛。改进牛顿法
x k + 1 = x k − m f ( x k ) f ′ ( x k ) x_{k+1}=x_k-m\dfrac {f(x_k)}{f'(x_k)} xk+1=xk−mf′(xk)f(xk)
是二阶收敛的方法
单点弦法
x k + 1 = x k − f ( x k ) f ( x k ) − f ( x 0 ) ( x k − x 0 ) , k = 1 , 2 , ⋯ x_{k+1}=x_k-\dfrac {f(x_k)}{f(x_k)-f(x_0)}(x_k-x_0)\ ,\ k=1,2,\cdots xk+1=xk−f(xk)−f(x0)f(xk)(xk−x0) , k=1,2,⋯
双点弦法(收敛速度低于牛顿迭代法,高于不动点迭代法)
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-\dfrac {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,⋯