《实验五__牛顿迭代法.ppt》由会员分享,可在线阅读,更多相关《实验五__牛顿迭代法.ppt(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 实验五实验五 牛顿迭代法牛顿迭代法【实验目的实验目的】1.了解牛顿迭代法的基本概念.2.了解牛顿迭代法的收敛性和收敛速度。3.学习、掌握MATLAB软件有关的命令。【实验内容实验内容】用牛顿迭代法求解方程 的近似根,误差不超过10-3。【实验准备实验准备】1.牛顿迭代法原理牛顿迭代法原理 设已知方程 的近似根 ,则在 附近 可用一阶泰勒多项式 近似代替。因此,方程 可近似表示为 。用 近似表示 根差异不大。设 ,由于 满足 ,解得 重复这以过程,得到迭代格式 这就是著名得牛顿迭代公式,它相应的不动点方程为牛顿迭代法2.牛顿迭代法的几何解析牛顿迭代法的几何解析 在 处做曲线的切线,切线方程为令
2、 可得切线与 轴的交点坐标 ,这就是牛顿迭代法的迭代公式。因此,牛顿法又称“切线法”。3.牛顿迭代法的收敛性牛顿迭代法的收敛性 计算可得 ,设 是 的单根,有 ,则故在 附近,有 。根据不动点原理知牛顿迭代法收敛。4.牛顿迭代法的收敛速度牛顿迭代法的收敛速度定理(牛顿法收敛定理)设 在区间 上有二 阶连续导数,且满足 ,在 上不变号,在a,b上不等于0,令有 ,则对任意 ,牛顿迭代格式收敛于在 中的唯一实根 ,且 ,牛顿迭代法为二阶收敛。对不动点方程 ,它导出的迭代过程有可能发散,也可能收敛得非常缓慢。这时,我们有没有办法改进不动点方程,让迭代过程收敛得快一些呢?迭代过程的加速迭代过程的加速(
3、1)一个简单办法)一个简单办法 注意到 和 都是不动点方程,它们的加权平均也是不动点方程,而且 和 有完全相同的不动点。适当选取 的值,可以使发散的迭代过程变得收敛,使收敛慢的迭代过程变得收敛迅速。(2)加速的原因)加速的原因 在下面的实验中我们可以看到,在不动点 附近的导数值在很大程度上决定了迭代过程的收敛性。的绝对值越小,收敛性越好。因此,选择 使得 。计算得到理想的 值为 ,相应可计算出 (1)一个简单办法)一个简单办法 注意到 和 都是不动点方程,它们的加权平均也是不动点方程,而且 和 有完全相同的不动点。适当选取 的值,可以使发散的迭代过程变得收敛,使收敛慢的迭代过程变得收敛迅速。(
4、2)加速的原因)加速的原因 在下面的实验中我们可以看到,在不动点 附近的导数值在很大程度上决定了迭代过程的收敛性。的绝对值越小,收敛性越好。因此,选择 使得 。计算得到理想的 值为 ,相应可计算出 (3)的选取的选取 由于理想的 值为 ,当 变化不大时,可以取 近似计算 。(4)回到牛顿迭代法的讨论)回到牛顿迭代法的讨论 为求解方程 ,可以使用不动点方程 ,相应的迭代函数为 对 进行加速所以,牛顿迭代法是对基本迭代格式进行加速的结果。5.5.迭代的迭代的MATLABMATLAB命令命令 MATLAB中主要用for,while等控制流命令实现迭代。练习练习 1 用牛顿迭代法求方程 在 附近的近似
5、根,误差不超过10-3。牛顿迭代法的迭代函数为:相应的matlab代码为:(运行)clear;x=0.5;for i=1:3 x=x-(x3+x2+x-1)/(3*x2+2x+1)end可算得迭代数列的前三项0.5455,0.5437,0.5437。经三次迭代就大大超了精度练习练习2 用牛顿迭代法求方程 的近似正实根,由此建立一种求平方根的计算方法。由计算可知,迭代格式为 ,在实验12的练习4中已经进行了讨论。练习练习3 用牛顿迭代法求方程 的正根。牛顿迭代法的迭代函数为如果取初值为 ,相应的MATLAB代码为(运行)clearx=0;for i=1:6 x=x-(x*exp(x)-1)/(x
6、+1)*exp(x)end 可得迭代数列前6项为1.0000,0.6839,0.5775 0.5672,0.5671,0.5671,说明迭代实收敛的。如果取初值为10,相应的MATLAB代码为clear;x=10.0;for i=1:20 x=x-(x*exp(x)-1)/(x+1)*exp(x)y(i)=x;End(运行)可算得迭代数列的前20项为9.0909,8.1900 7.2989 ,6.4194 ,5.5544 ,4.7076,3.8844 ,3.0933 ,2.3487 1.6759 ,1.1195,0.7453,0.5902 0.5676 ,0.5671 ,0.5671,0.56
7、71,0.5671,0.5671 ,0.5671,说明迭代是收敛的。如果取初值 或 ,可算得迭代数列是发散的,根据函数图形分析原因。练习练习4 求方程 在 附近的根,精确到10-5先直接使用 的迭代格式,相应的MATLAB代码为n=0;esp=1.05e-5;x=0.5;while abs(x-exp(-x)esp x=exp(-x);n=n+1;endx,n(运行)结果为x=0.5671,n=17,说明迭代17次后达到精度要求。可算得迭代数列的前20项为9.0909,8.1900 7.2989 ,6.4194 ,5.5544 ,4.7076,3.8844 ,3.0933 ,2.3487 1.
8、6759 ,1.1195,0.7453,0.5902 0.5676 ,0.5671 ,0.5671,0.5671,0.5671,0.5671 ,0.5671,说明迭代是收敛的。如果取初值 或 ,可算得迭代数列是发散的,根据函数图形分析原因。练习练习4 求方程 在 附近的根,精确到10-5先直接使用 的迭代格式,相应的MATLAB代码为n=0;esp=1.05e-5;x=0.5;while abs(x-exp(-x)esp x=exp(-x);n=n+1;endx,n(运行)结果为x=0.5671,n=17,说明迭代17次后达到精度要求。为加快收敛速度,用 构造迭代格式,由实验的预备知识中可知,
9、取相应的MATLAB代码为n=0;eps=1.0e-5;x=0.5;while abs(x-0.625*exp(-x)-0.375*x)eps x=0.625*exp(-x)+0.375*x;n=n+1;endx,n 结果为0.5671,n=3,说明迭代三次后达到精度要求。练习练习5 对练习中方程 ,用加快后的迭代格式 求x=0.5附近的根,精确到10-5 计算 可得 ,相应的MATLAB代码为n=0;eps=1.0e-5;x=0.5;while abs(x-(x+1)*exp(-x)/(1+exp(-x)eps x=(x+1)*exp(-x)/(1+exp(-x);n=n+1;endx,n结果为x=0.5671,n=2,说明迭代2次后达到精度要求。【实验作业实验作业】1.用牛顿迭代法求方程 的近似根。2.为求出方程 的根,在区间1,2内使用迭代函数进行迭代,记录迭代数据,问迭代是否收敛?对迭代进行加速,对比加速前的数据,比较加速效果。3.使用在不动点 的泰勒公式,证明牛顿迭代法收敛定理。