数值分析—— 方程迭代求根

前言

​   有时候我们需要知道非线性方程在某个区间内是否存在根,存在的话有几个等问题,直接求解往往是困难,可以通过迭代的思想去逼近根,比如经典的二分法牛顿迭代法

   具体内容详见 《数值分析》 李庆扬、王能超、易大义(华中科大出版社)第六章



迭代过程及其收敛性分析

  • 设有待求根方程 f ( x ) f(x) f(x),将其写成隐式方程格式: x = ϕ ( x ) x=\phi(x) x=ϕ(x),给出根的某个猜想值 x 0 x_0 x0代入得到 x 1 = ϕ ( x 0 ) x_1=\phi(x_0) x1=ϕ(x0),重复这个过程, x k + 1 = ϕ ( x k ) , ( k = 0 , 1 , . . . , n ) x_{k+1}=\phi(x_k),(k=0,1,...,n) xk+1=ϕ(xk),(k=0,1,...,n) { x k } \{ x_k \} {xk}存在极限 x ∗ = lim ⁡ k → ∞ x k x^*=\lim_{k \rightarrow \infty} x_k x=limkxk,则称此迭代过程收敛, x ∗ x^* x即为方程的根。

  • 为了避免迭代过程发散,对迭代方程 x = ϕ ( x ) x=\phi(x) x=ϕ(x)作出以下约束:若存在定数 0 < L < 1 0< L <1 0<L<1,使对于任意 x ∈ [ a , b ] x \in [a,b] x[a,b]均有 ∣ ϕ ( x ) ′ ∣ ≤ L |\phi(x)^{'}| \leq L ϕ(x)L 则该迭代过程收敛,且存在唯一根

  1. 证明存在零点:

    由假设可知,对于 x ∈ [ a , b ] x \in [a,b] x[a,b],总有 ϕ ( x ) ∈ [ a , b ] \phi(x) \in [a,b] ϕ(x)[a,b],记 f ( x ) = ϕ ( x ) − x f(x)=\phi(x)-x f(x)=ϕ(x)x,有 f ( a ) = ϕ ( a ) − a ≥ 0 , f ( b ) = ϕ ( b ) − b ≤ 0 f(a)=\phi(a)-a \geq0, f(b)=\phi(b)-b \leq 0 f(a)=ϕ(a)a0,f(b)=ϕ(b)b0,即 f ( x ) f(x) f(x) [ a , b ] [a,b] [a,b]上有根。

  2. 证明零点唯一:

    设存在两个零点, x ∗ = ϕ ( x ∗ ) , x ˉ = ϕ ( x ˉ ) x^*=\phi(x^*), \bar{x}=\phi(\bar{x}) x=ϕ(x),xˉ=ϕ(xˉ) x ∗ − x ˉ = ϕ ( x ∗ ) − ϕ ( x ˉ ) = ϕ ′ ( ξ ) ( x ∗ − x ˉ ) x^*-\bar{x}=\phi(x^*)-\phi(\bar{x})=\phi^{'}(\xi)(x^*-\bar{x}) xxˉ=ϕ(x)ϕ(xˉ)=ϕ(ξ)(xxˉ),由于 ϕ ′ ( ξ ) ≤ 1 \phi^{'}(\xi) \leq 1 ϕ(ξ)1,则 ( x ∗ − x ˉ ) (x^*-\bar{x}) (xxˉ)只能为0,即只有一个零点。

  3. 证明收敛:

    ∣ x ∗ − x k ∣ = ∣ ϕ ( x ∗ ) − ϕ ( x k ) ∣ = ∣ ϕ ′ ( ξ ) ∣ ∣ x ∗ − x k ∣ ≤ L ∣ x ∗ − x k ∣ ≤ . . . ≤ L k ∣ x ∗ − x 0 ∣ |x^*-x_k|=|\phi(x^*)-\phi(x_k)|=|\phi^{'}(\xi)||x^*-x_k| \leq L|x^*-x_k| \leq ... \leq L^k |x^*-x_0| xxk=ϕ(x)ϕ(xk)=ϕ(ξ)xxkLxxk...Lkxx0,又 lim ⁡ k → ∞ L k = 0 \lim_{k \rightarrow \infty} L^k=0 limkLk=0,当k足够大时,迭代过程收敛。

  • 给出误差估计式:
    ∣ x k − x ∗ ∣ ≤ L k 1 − L ∣ x 1 − x 0 ∣ ∣ x k − x ∗ ∣ ≤ 1 1 − L ∣ x k + 1 − x k ∣ |x_k-x^*| \leq \frac{L^k}{1-L}|x_1-x_0|\\|x_k-x^*| \leq \frac{1}{1-L}|x_{k+1}-x_k| xkx1LLkx1x0xkx1L1xk+1xk

    即若两次迭代的结果相差足够小,就可以保证结果的精度。

迭代公式改进

  • x 0 x_0 x0是迭代初值,用迭代公式迭代一次得到: x 1 = ϕ ( x 0 ) x_1=\phi(x_0) x1=ϕ(x0),此时有微分中值定理: x 1 − x ∗ = ϕ ( x 0 ) − ϕ ( x ∗ ) = ϕ ′ ( ξ ) ( x 0 − x ∗ ) x_1-x^*=\phi(x_0)-\phi(x^*)=\phi^{'}(\xi)(x_0-x^*) x1x=ϕ(x0)ϕ(x)=ϕ(ξ)(x0x) ϕ ′ ( ξ ) \phi^{'}(\xi) ϕ(ξ)是一个小量,用L去近似代替,则有 x 1 − x ∗ ≈ L ( x 0 − x ∗ ) x_1-x^* \approx L(x_0-x^*) x1xL(x0x),得 x ∗ = 1 1 − L x 1 − L 1 − L x 0 x^*=\frac{1}{1-L}x_1-\frac{L}{1-L}x_0 x=1L1x11LLx0 x 2 = 1 1 − L x 1 − L 1 − L x 0 = x 1 + L 1 − L ( x 1 − x 0 ) x_2=\frac{1}{1-L}x_1-\frac{L}{1-L}x_0=x_1+\frac{L}{1-L}(x_1-x_0) x2=1L1x11LLx0=x1+1LL(x1x0)是比 x 1 x_1 x1更好的迭代值。

Aitken方法

  • 上面的改进格式中存在近似值L不好估计,若再通过迭代公式迭代一次即可联系消去L,设 x 1 = ϕ ( x 0 ) , x 2 = ϕ ( x 1 ) x_1=\phi(x_0),x_2=\phi(x_1) x1=ϕ(x0),x2=ϕ(x1),有 x 1 − x ∗ ≈ L ( x 0 − x ∗ ) x 2 − x ∗ ≈ L ( x 1 − x ∗ ) x_1-x^* \approx L(x_0-x^*)\\ x_2-x^* \approx L(x_1-x^*) x1xL(x0x)x2xL(x1x)
    联立可得, x 1 − x ∗ x 2 − x ∗ ≈ x 0 − x ∗ x 1 − x ∗ \frac{x_1-x^*}{x_2-x^*} \approx \frac{x_0-x^*}{x_1-x^*} x2xx1xx1xx0x
    解出 x ∗ x^* x x ∗ ≈ x 0 x 2 − x 1 2 x 0 − 2 x 1 + x 2 = x 2 − ( x 2 − x 1 ) 2 x 0 + 2 x 1 + x 2 x^* \approx \frac{x_0x_2-x_1^2}{x_0-2x_1+x_2}=x_2-\frac{(x_2-x_1)^2}{x_0+2x_1+x_2} xx02x1+x2x0x2x12=x2x0+2x1+x2(x2x1)2,同理, x 3 = x 2 − ( x 2 − x 1 ) 2 x 0 + 2 x 1 + x 2 x_3=x_2-\frac{(x_2-x_1)^2}{x_0+2x_1+x_2} x3=x2x0+2x1+x2(x2x1)2是更好的迭代值。

未完待续

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值