非线性方程求解:弦截法和抛物线法

非线性方程求解:弦截法和抛物线法

牛顿迭代法虽然具有收敛速度快的优点,但每迭代一次都要计算函数导数,
而有些函数的导数计算十分麻烦。
弦截法和抛物线法便是为了避免上述不便而提出的方法.

一、弦截法:

牛 顿 迭 代 公 式 : 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=xkf(xk)f(xk)

替换牛顿公式中的f’(x),便得到迭代公式:
x k + 1 = x k − f ( x k ) ( x k − x k − 1 ) f ( x k ) − f ( x k − 1 ) 这 就 是 弦 截 迭 代 公 式 . x_{k+1}=x_k-\frac{f(x_k)(x_k-x_{k-1})}{f(x_k)-f(x_{k-1})}\\ 这就是弦截迭代公式. xk+1=xkf(xk)f(xk1)f(xk)(xkxk1).

算法流程:

在这里插入图片描述

注意,弦截迭代发要用到前两步的结果:

x k 和 x k − 1 . x_{k}和x_{k-1}. xkxk1.

二、抛物线法

根据牛顿多项式插值公式:
N n ( x ) = a 0 + a 1 ( x − x 0 ) + a 2 ( x − x 0 ) ( x − x 1 ) + . . . + a n ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n − 1 ) N_n(x)=a_0+a_1(x-x_0)+a_2(x-x_0)(x-x_1)+...+a_n(x-x_0)(x-x_1)\cdots(x-x_{n-1}) Nn(x)=a0+a1(xx0)+a2(xx0)(xx1)+...+an(xx0)(xx1)(xxn1)
取三次牛顿插值公式得:
N 2 ( x ) = f ( x k ) + f [ x k , x k − 1 ] ( x − x k ) + f [ x k , x k − 1 , x k − 2 ] ( x − x k ) ( x − x k − 1 ) N_2(x)=f(x_k)+f[x_k,x_{k-1}](x-x_k)+f[x_k,x_{k-1},x_{k-2}](x-x_k)(x-x_{k-1}) N2(x)=f(xk)+f[xk,xk1](xxk)+f[xk,xk1,xk2](xxk)(xxk1)
令上式等于0,得到:
x k + 1 = x k − 2 f ( x k ) ω ± ω − 4 f ( x k ) f [ x k , x k − 1 , x k − 2 ] 式 中 : x_{k+1}=x_k-\frac{2f(x_k)}{\omega±\sqrt{\omega-4f(x_k)f[x_k,x_{k-1},x_{k-2}]}}\\ 式中:\\ xk+1=xkω±ω4f(xk)f[xk,xk1,xk2] 2f(xk)

{ f [ x k , x k − 1 ] = f ( x k ) − f ( x k − 1 ) x k − x k − 1 f [ x k , x k − 1 , x k − 2 ] ( x k − x k − 1 ) = f [ x k , x k − 1 ] − f [ x k − 2 , x k − 2 ] x k − x k − 2 ω = f [ x k , x k − 1 ] + f [ x k , x k − 1 , x k − 2 ] ( x k − x k − 1 ) \begin{cases} f[x_k,x_{k-1}]=\frac{f(x_k)-f(x_{k-1})}{x_k-x_{k-1}} \\ \\ f[x_k,x_{k-1},x_{k-2}](x_k-x_{k-1})= \frac{f[x_k,x_{k-1}]-f[x_{k-2},x_{k-2}]}{x_k-x_{k-2}}\\ \\ \omega=f[x_k,x_{k-1}]+f[x_k,x_{k-1},x_{k-2}](x_k-x_{k-1})\\ \end{cases} f[xk,xk1]=xkxk1f(xk)f(xk1)f[xk,xk1,xk2](xkxk1)=xkxk2f[xk,xk1]f[xk2,xk2]ω=f[xk,xk1]+f[xk,xk1,xk2](xkxk1)

上式计算可以得到两个值,选择解得时候应该选择离xk更接近的解.

弦截法和抛物线法只是对迭代公式进行了更改,并不影响算法的流程,可以参考链接中的代码进行算法仿真.

链接非线性方程求解 :二分迭代法和牛顿迭代法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值