收藏 分享(赏)

数值分析4.doc

上传人:hwpkd79526 文档编号:7406277 上传时间:2019-05-16 格式:DOC 页数:6 大小:142.50KB
下载 相关 举报
数值分析4.doc_第1页
第1页 / 共6页
数值分析4.doc_第2页
第2页 / 共6页
数值分析4.doc_第3页
第3页 / 共6页
数值分析4.doc_第4页
第4页 / 共6页
数值分析4.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、 yxO x* x1 x0关于牛顿迭代法的课程设计实验指导非线性方程(或方程组)问题可以描述为求 x 使得 f(x) = 0。在求解非线性方程的方法中,牛顿迭代法是求非线性方程(非线性方程组)数值解的一种重要的方法。牛顿是微积分创立者之一,微积分理论本质上是立足于对世界的这种认识:很多物理规律在微观上是线性的。近几百年来,这种局部线性化方法取得了辉煌成功,大到行星轨道计算,小到机械部件设计。牛顿迭代法正是将局部线性化的方法用于求解方程。一、牛顿迭代法及其收敛速度牛顿迭代法又称为牛顿-拉夫逊方法( Newton-Raphson method) ,是一种在实数域和复数域上通过迭代计算求出非线性方程

2、的数值解方法。方法的基本思路是利用一个根的猜测值 x0 做初始近似值,使用函数 f(x)在 x0 处的泰勒级数展式的前两项做为函数 f(x)的近似表达式。由于该表达式是一个线性函数,通过线性表达式替代方程 f(x) = 0 中的 f(x)求得近似解x 1。即将方程 f(x) = 0 在 x0 处局部线性化计算出近似解 x1,重复这一过程,将方程 f(x) = 0 在 x1 处局部线性化计算出 x2,求得近似解x2,。详细叙述如下:假设方程的解 x*在 x0 附近(x 0 是方程解 x*的近似) ,函数 f(x)在点 x0 处的局部线化表达式为 )()(ff由此得一次方程 00xfxf求解,得

3、)(001fx如图 1 所示,x 1 比 x0 更接近于 x*。该方法的几何意义是:用曲线上某点(x 0,y 0)的切线代替曲线,以该切线与 x 轴的交点( x1,0)作为曲线与 x 轴的交点(x *,0)的近似(所以牛顿迭代法又称为切线法) 。设 xn 是方程解 x*的近似,迭代格式( n = 0,1,2,)(1nf就是著名的牛顿迭代公式,通过迭代计算实现逐次逼近方程的解。牛顿迭代法的最大优点是收敛速度快,具有二阶收敛。以著名的平方根算法为例,说明二阶收敛速度的意义。例 1已知 ,求 等价于求方程 f(x) = x2 2 = 0 的解。由于 。4.22 xf2)(应用牛顿迭代法,得迭代计算格

4、式, (n = 0,1,2,)/(1nnx取 x0= 1.4 为初值,迭代计算 3 次的数据列表如下表 1 牛顿迭代法数值实验图 1 牛顿迭代法示意图迭代次数 近似值 15 位有效数 误差0 1.4 1.41421356237310 -1.42e-0021 1.41428571428571 1.41421356237310 7.21e-0052 1.41421356421356 1.41421356237310 1.84e-0093 1.41421356237309 1.41421356237310 -2.22e-016其中,第三栏 15 位有效数是利用 MATLAB 的命令 sqrt(2)计

5、算结果。观察表中数据,第一次迭代数据准确到小数点后四位,第二次迭代数据准确到小数点后八位,。二阶收敛速度可解释为,每迭代一次,近似值的有效数位以二倍速度递增。对于计算任意正数 C 的平方根,牛顿迭代法计算同样具有快速逼近的性质。二、牛顿迭代法的收敛性牛顿迭代法在使用受条件限制,这个限制就是通常所说的牛顿迭代法的局部收敛性。定理 假设 f(x)在 x*的某邻域内具有连续的二阶导数,且设 f(x*)=0, ,0)(*f则对充分靠近 x*的初始值 x0,牛顿迭代法产生的序列 xn收敛于 x*。下面例子是牛顿迭代法不收敛的反例。反例说明,牛顿迭代法局部收敛性要求初始点要取得合适,否则导致错误结果。例

6、2 用牛顿迭代法解方程 f(x) = x3 x 3 = 0。分析:利用 MATLAB 求多项式零点命令 roots(p),计算得三次方程的三个根如下表表 2 三次方程的三个根r1 r2 r31.6717 -0.8358 - 1.0469i -0.8358 + 1.0469i显然,三次方程有一个实根 r1。为了使用牛顿迭代法计算,对于 f(x) = x3 x 3 ,首先求导数,得 。13)(xf取 x0 = 0 和 x0 = 1 取分别用牛顿迭代法计算,得表 3 不同初始值的迭代计算结果x0 0 1x1 -3.0000 2.5000x2 -1.9615 1.9296x3 -1.1472 1.70

7、79x4 -0.0066 1.6726x5 -3.0004 1.6717x6 -1.9618 1.6717 对于迭代初值取 x0=0,迭代数列中的第四项又回到初始点 x0 = 0 附近,算法将陷入死循环。 x0 y x1 x2 x3 y=x3 x 3 x 图 2 牛顿迭代法初值不收敛示意图而迭代初值取 x0=1,可以使牛顿迭代法得到收敛。三、特殊代数方程的牛顿迭代法收敛区域将牛顿迭代法用于求解高阶代数方程时,首先回顾一个代数基本定理,即“一个 n 阶多项式在复数域内有 n 个根” 。根据牛顿迭代法的局部收敛性质,任意取一个数据做为牛顿迭代的初值,可能导致迭代不收敛,即使这一个初值可以使迭代法收

8、敛,下一个有趣的问题是“迭代序列将收敛于哪一个根” ,其规律如何?例 3 牛顿迭代法的收敛区域问题:Newton 迭代法可以用于求解复数方程 z3 1 = 0,该方程在复平面上三个根分别是, ,1zi232iz231选择中心位于坐标原点,边长为 4 的正方形内的任意点作初始值,进行迭代,将不收敛的点定义为第一类,给它们标一种颜色;再把收敛到三个根的初值分为三类,并分别标上不同颜色。对充分多的初始点进行实验,绘出牛顿迭代法对该方程的收敛域彩色图。图 3 牛顿迭代法收敛区域色图问题分析:记 f(z) = z3 1,则 ,所以牛顿迭代公式为2)(zf 3/)1(21nnz由于牛顿迭代法的二阶收敛速度

9、,对于一个取定的初值 z0,如果 z0 是一个可以导致迭代收敛的初值,则迭代 10 次已经达到足够精度,故可以取迭代次数为 10。考虑以坐标原点为中心的正方形区域 2,2|),( yxyx取步长 h=0.02,在区域内取离散网格点,( j,k = 0,1,200)hyxkj2由此可以构造出规则的复数zjk = xj + i yk,( j,k =0,1,200)对于这些点,逐一用牛顿迭代法取初值进行迭代实验,判断是否收敛?如果收敛,到底以该点为初值的迭代序列收敛到哪方程的一个根?为了记录实验结果,构造四个阶数均为 201201 矩阵:Z 0、Z 1、Z 2、Z 3,开始时这四个矩阵都设为全零矩阵

10、。如果以 zjk 为初值的迭代实验结果是不收敛,则将 Z0 的第 j 行第k 列的元素改写为 1;如果以 zjk 为初值的迭代实验结果是收敛到第一个根,则将 Z1 的第 j行第 k 列的元素改写为 1;如果以 zjk 为初值的迭代实验结果是收敛到第二个根,则将 Z2的第 j 行第 k 列的元素改写为 1;如果以 zjk 为初值的迭代实验结果是收敛到第三个根,则将 Z3 的第 j 行第 k 列的元素改写为 1。首先分析矩阵 Z0 的数据,由于该矩阵在开始时刻为全零矩阵,而在迭代实验结束后,不收敛的点对应元素被改写为“1” 。所以,矩阵的元素只可能是“0”或“1” ,根据该矩阵的全部的非零元素所在

11、的位置可以使用 MATLAB 的图形绘制命令 spy()或 pcolor()等显示出一个特殊的图形。根据 Z0 数据绘的图形如下所示图 4 牛顿迭代法不收敛区域色图导致牛顿迭代法不收敛的初始点所形成的平面点集是一个著名的集合,称为茹莉亚集(为纪念法国女数学家茹莉亚而命名) 。为了得到全局的收敛或不收敛情况,需要对四个矩阵进行叠加。如果直接相加将导致一个全“1”矩阵,不可能得出希望的结果。故,对矩阵做如下组合处理,令Z = Z0 + 2Z1 + 3Z2 + 4Z3则矩阵 Z 的元素由 “1”、 “2”、 “3”、 “4”这四个元素组成。该矩阵的某一位置上数据为“1”,说明这一位置上的复数做初值导

12、致牛顿迭代法不收敛;位置上数据为“2” ,说明这一位置上的复数做初值导致牛顿迭代法收敛到第一个根;位置上数据为“3” ,说明这一位置上的复数做初值导致牛顿迭代法收敛到第二个根;位置上数据为“4” ,说明这一位置上的复数做初值导致牛顿迭代法收敛到第三个根。所以该矩阵包含了矩阵区域内离散点集合做为牛顿迭代法收敛实验结果的全部信息。将这一矩阵用 MATLAB 作图命令 pcolor()作用,将绘出图 3 所示的收敛区域色图。导致牛顿迭代法收敛到第一个根的初始点所形成的平面点集,可以根据 Z1 数据绘图形四、关于实验的注记1MATLAB 相关命令介绍(1)求多项式零点命令 roots()该命令用于求多

13、项式 P(x) = a1xn + a2 xn-1 + + anx + an+1 的全部零点。例如 z3 1 = 0 的三个零点,只需用命令:roots(1 0 0 -1),可得ans =-0.5000 + 0.8660i-0.5000 - 0.8660i1.0000 (2)绘伪彩色图命令 pcolor()该命令主要用于绘制矩阵色图,根据矩阵中元素数据的大小不同绘不同颜色。常常与命令 shading interp 结合使用效果会更好。在 MATLAB 命令窗口中键入 help pcolor,可获得英文帮助信息。2 例题 3 所用 MATLAB 程序及注释:X=roots(1,0,0,-1); %

14、利用 MATLAB 命令求三次方程的根r1=X(1);r2=X(2);r3=X(3);h=0.02;N=1+4/h; %确定网格步长及网格点规模z0(N,N)=0;z1=z0;z2=z0;z3=z0; %定义四个大矩阵为全零矩阵t=(-2:h:2)+eps;x,y=meshgrid(t); %确定网格点坐标z=x+y*i;for j=1:Nfor k=1:Np=z(j,k); %提取迭代初始点for n=1:10p=p-(p-1/p2)/3; %牛顿迭代操作endif abs(p-r1)0.01 z1(j,k)=1; %确定收敛到第一个根的初始点elseif abs(p-r2)0.01z2(j

15、,k)=1; %确定收敛到第二个根的初始点elseif abs(p-r3)0.01z3(j,k)=1; %确定收敛到第三个根的初始点elsez0(j,k)=1; %确定不收敛的初始点endendendZ=z0+2*z1+3*z2+4*z3;figure(1)pcolor(x,y,Z),shading interp %绘牛顿迭代法收敛域figure(2)pcolor(x,y,z0),shading interp %绘牛顿迭代法不收敛域课程设计实验题目1牛顿迭代法解复方程 z n + 1 = 0 的收敛域问题。实验目的:了解 Newton 迭代法解复方程 z n + 1 = 0(n3) 时收敛域的

16、结构。实验原理:Newton 迭代法可以用于求解复数方程 z n + 1 = 0,例如对 z6 + 1 = 0,该方程在复平面上六个根分别是, , ,iz231i2i3, ,iz4i2135iz2136选择中心位于坐标原点,边长为 4 的正方形(或半径为 4 的圆)内的任意点作初始值进行迭代,将不收敛的初值点归为第一类,再把收敛到六个根的初值归为另外六类,分别以不同颜色做图。对充分多的初始点进行实验,绘出牛顿迭代法对该方程的收敛域彩色图。2牛顿迭代法计算隐函数值实验实验目的:了解隐函数存大定理与牛顿迭代法之间的联系。实验原理:隐函数存在定理叙述为:如果 f(x,y )及 皆在(x 0,y 0)

17、附近连续,而且),(fyf(x0,y 0) = 0, 0则在(x 0,y 0)的附近,方程 f(x,y) = 0 恰有一个连续解 y =y(x)。隐函数存在定理具有局部性,这种局部性与牛顿迭代法的局部收敛性有相通之处。在邻域(x0,y 0) =(x0)(y0)=(x,y) | |x x0| ,| y y0| 内计算隐函数的值。取 x1 (x0)=x | |x x0| ,存在 y1 (y0)=y | |y y0| ,使得 y1 =y(x1)满足 f(x1,y 1) = 0。由此导出关于函数值 y 的一元非线性方程g(y) = f(x1,y) = 0由于 f(x,y) 及 皆在 (x0,y 0)连

18、续,故 ,且 y1y 0。应用牛顿迭,y ),1代法,得迭代计算格式y (k+1)= y (k) f(x1,y (k) )/fy(x1,y (k)迭代初值取为:y (0) = y0。由牛顿迭代法的局部收敛性可知,迭代计算可求得隐函数的高精度函数值。将这一过程进行下去可计算出一系列的函数值并制做出函数表。例如对于二元多项式函数 G(x,y ) = 3x7 + 2y2 x3 + y 3,方程 G(x,y )=0 定义了隐函数 y =y(x)。当 x=0 时,有 y=0。应用牛顿迭代法,从 x= 0 开始,以 0.1 为步长依次进行到 x=4 为止。3牛顿迭代法计算矩阵近似逆。实验目的:了解矩阵近似逆的迭代计算过程。实验原理:设 A 为主对角严格占优矩阵,求 A-1 的牛顿迭代公式为: Xn+1 = Xn(2I AXn ),迭代计算的收敛要求为初值满足条件:| I A X 0 | 1。附:牛顿迭代法课程设计实验报告格式实验名称:姓名(学号):一、问题叙述二、问题分析三、实验程序及注释四、实验数据结果及分析

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报