Aitken加速收敛法和牛顿法

Aitken法基本思路:

x_{k+1}-x^*=\varphi (x_k)-\varphi (x^*)=\varphi ^{'}(\xi _k)(x_k-x^*)

x_{k+2}-x^*=\varphi (x_{k+1})-\varphi (x^*)=\varphi ^{'}(\xi _{k+1})(x_{k+1}-x^*)

x_{k+1}x_k相差不大时,\varphi^{'}(\xi _k)\approx \varphi^{'}(\xi _{k+1}),因此有比例式:

{\tfrac{x_{k+1}-x^*}{x_{k+2}-x^*}}\approx{\tfrac{x_k-x^*}{x_{k+1}-x^*}}

有:

x^*\approx {\tfrac{x_{k+2}x_k-x_{k+1}^2}{x_{k+2}+x_k-2x_{k+1}}} = x_k-{\tfrac{(x_{k+1}-x_k)^2}{x_{k+2}-2x_{k+1}+x_{k}}}

结合不动点迭代法,算法描述如下(Steffensen迭代法):

\begin{cases} y_k=\varphi(x_k) \\ z_k=\varphi(y_k) \\ x_{k+1}=x_k-\frac{(y_k-x_k)^2}{z_k-2y_k+x_k} \end{cases}

定理5:设x^*=\varphi(x^*)\varphi(x)在包含x^*的某开区间内具有二阶连续导数,并且\varphi'(x^*)\neq1,则Steffensen迭代法至少是二阶收敛的。

证明有相关文献支撑,此处不做讨论。

注:若x_{k+1}=\varphi(x_k)为线性收敛,则Steffensen法为平方收敛。


牛顿法及其改进:

牛顿法基本思想:

将非线性方程线性化,以线性方程的解逐步逼近非线性方程的解。

若取x_0f(x)=0的一个初始近似值,则f(x)x_0附近的泰勒展开为:

f(x)=f(x_0)+f'(x_0)(x-x_0)+\frac{f''(x_0)}{2!}(x-x_0)^2+\cdots,

f(x)\approx f(x_0)+f'(x_0)(x-x_0),

得:

x\approx x_0-\frac{f(x_0)}{f'(x_0)}

取:

x_1=x_0-\frac{f(x_0)}{f'(x_0)}

x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)},k=0,1,2,3,\cdots

按上式求方程f(x)=0近似解称为Newton法。其对应的迭代函数为:

\varphi(x)=x-\frac{f(x)}{f'(x)}

几何意义:

过点(x_0,f(x_0))作曲线y=f(x)的切线,切线方程为:

y=f(x_0)+f'(x_0)(x-x_0)

该切线与x轴的交点的横坐标即为新的近似值x_1,而x_2则是曲线上点(x_1,f(x_1))处的切线与x轴的交点。故牛顿法又称为切线法。

牛顿法局部收敛定理:

定理6:设x^*为方程f(x)=0的根,若在包含x^*的某个开区间内f''(x)连续且f'(x)\neq0,则存在x^*的一个邻域R=\lbrace x||x-x^*|\leqslant \delta \rbrace,使任意初值x_0\in R,牛顿法收敛于x^*,且满足:

\lim_{k\to \infty}\frac{x_{k+1}-x^*}{(x_k-x^*)^2}=\frac{f''(x^*)}{2f'(x^*)}

例题:用牛顿迭代法求方程x=e^{-x}x=0.5附近的根。

解答:将方程化为f(x)=x-e^{-x}=0,则牛顿迭代格式有:

x_{k+1}=x_k-\frac{x_k-e^{-x_k}}{1+e^{-x}}

取初值x_0=0.5,有:

x_1=0.566311,x_2=0.5671431,x_3=0.5671433

牛顿法优点:计算速度快。缺点:要计算导数值。

修正:找f'(x_k)的近似,对初值x_0要求高。

牛顿法的变形:

1.简化牛顿迭代法:x_{k+1}=x_k-\frac{f(x_k)}{M}

注:对M选取有要求,收敛速度1阶。

2.双点割线法:x_{k+1}=x_k-\frac{x_k-x_{k-1}}{f(x_k)-f(x_{k-1})}f(x_k)

注:需要两个初值点,收敛速度1.618阶。

3.单点割线法:x_{k+1}=x_k-\frac{x_k-x_0}{f(x_k)-f(x_0)}f(x_k)

注:需要两个初值点,收敛速度1阶。

4.牛顿下山法:

牛顿法收敛性依赖于初值x_0的选取,如果x_0偏离所求根x^*较远,则牛顿法可能发散,为防止迭代发散,额外要求:

|f(x_{k+1})|<|f(x_k)|

我们将牛顿法的计算结果\overline{x_{k+1}}=x_k-\frac{f(x_k)}{f'(x_k)}与前一步的结果x_k的适当加权平均作为新的改进值:

x_{k+1}=\lambda \overline{x_{k+1}}+(1-\lambda)x_k,(0<\lambda<1)

\lambda称为下山因子,从1开始逐次减半进行计算,直到满足下山条件为止。


计算重根的迭代法:

问题:在牛顿法的局部收敛定理中我们假设了在包含x^*的某个开区间内f'(x)\neq0,即设x^*为方程f(x)=0m重根,那么情况如何?

我们需要考虑该情况下的\varphi'(x^*)

\varphi'(x^*)=\lim_{x \to x^*}\varphi'(x)=\lim_{x \to x^*}\frac{f(x)f''(x)}{(f'(x))^2}

而:

f(x)=\frac{f^{(m)}(\xi _1)}{m!}(x-x^*)^m

f'(x)=\frac{f^{(m)}(\xi _2)}{(m-1)!}(x-x^*)^{m-1}

f''(x)=\frac{f^{(m)}(\xi _3)}{(m-2)!}(x-x^*)^{m-2}

因此:

\varphi'(x^*)=\lim_{x \to x^*}\frac{f(x)f''(x)}{(f'(x))^2}=\frac{((m-1)!)^2}{m!(m-2)!}=1-\frac{1}{m}

|\varphi'(x^*)|=1-\frac{1}{m}<1

因此,当x^*为方程f(x)=0m重根时,牛顿法依然收敛,但是只有1阶收敛速度,且重数m越大,收敛速度越慢。

改进1:化f(x)=0的重根为某方程的单根。

u(x)=\frac{f(x)}{f'(x)},则f(x)=0m重根为u(x)=0的单根。

对方程u(x)=0作用牛顿法,迭代算法为:

x_{k+1}=x_k-\frac{f(x_k)f'(x_k)}{(f'(x_k))^2-f(x_k)f''(x_k)}

2阶收敛,缺点:要计算f''(x),计算量变大。

改进2:x_{k+1}=x_k-\frac{mf(x_k)}{f'(x_k)}

注:可以证明它是求m重根x^*的具平方收敛的迭代格式。

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值