东南大学_数值分析_第二章_牛顿迭代法.doc

上传人:hs****ma 文档编号:551685039 上传时间:2023-06-04 格式:DOC 页数:5 大小:144KB
返回 下载 相关 举报
东南大学_数值分析_第二章_牛顿迭代法.doc_第1页
第1页 / 共5页
东南大学_数值分析_第二章_牛顿迭代法.doc_第2页
第2页 / 共5页
东南大学_数值分析_第二章_牛顿迭代法.doc_第3页
第3页 / 共5页
东南大学_数值分析_第二章_牛顿迭代法.doc_第4页
第4页 / 共5页
东南大学_数值分析_第二章_牛顿迭代法.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《东南大学_数值分析_第二章_牛顿迭代法.doc》由会员分享,可在线阅读,更多相关《东南大学_数值分析_第二章_牛顿迭代法.doc(5页珍藏版)》请在金锄头文库上搜索。

1、东南大学数值分析上机练习算法与程序设计实验报告第二章 非线性方程的解法牛顿迭代法*(学号) *(姓名)算法与程序题目见教材P56 上机题目20。一、算法原理根据题目的要求,是关于用牛顿迭代法法求解方程的通用算法。该法是一种通过斜率迭代的算法,其速度比二分法和简单迭代法都要快。其简单原理如下:设则存在一个数使得由如下定义的迭代序列收敛到:(1)对于函数,则其递推规则是(2)定义序列,则序列收敛到,也可表示为。现简要证明:对于,写出牛顿迭代公式(3)该公式可化简为(4)二、流程图题目要求于用牛顿迭代法法求解方程的通用算法。其计算过程主要用到迭代,图流程图1所示。输入各参数k=1迭代计算各误差误差在

2、允许范围之内TFbreakk=k+1 kmaxN输出图1 题1关于牛顿迭代法的算法流程图三、计算代码核心代码1) p1=;2) if (errdelta)|(relerrdelta)|(abs(y)epsilon),break;3) if kmaxN ,go to 1完整代码程序1:Newton.m% Description : 牛顿迭代法% Author : panyunqiang% Versoin : 1.0% Date : 2012-9-21%function p0, err, k, y=Newton(p0, delta, epsilon, maxN) % input - p0 is t

3、he initial approximation to a zero of f% - delta is the tolerance for p0% - epsilon is the tolerance for the function values y% - maxN is the maxium number of iterations%output - p0 is the Newton approximation to a zero% - err is the error estimate for p0% - k is the number of iterations% - y is the

4、 function value f(p0)for k=1:maxN %递归 p1=2*p03/(3*p02-3); %计算误差 err=abs(p1-p0); relerr=2*err/(abs(p1)+delta); p0=p1; %当前求出的根的函数值 y=p03/3-p0; %判断 if (errdelta)|(relerrdelta)|(abs(y)epsilon) break; endend程序2:Newton_Step.m% Description : 寻找题目中关于牛顿迭代法收敛的尽可能大的delta% 搜索步进为step=10(-6),即精确到小数点后六位% Author :

5、panyunqiang% Versoin : 1.0% Date : 2012-9-21%format longstep=10(-6);delta=10-8;epsilon=10-8;maxN=1000;ps=0.6;p0, err, k, y=Newton(ps, delta, epsilon, maxN);while(abs(p0) p0=newton(-2,10(-12),10(-12),1000)p0 = -1.732050807568877%收敛到根2、输入时 p0=newton(-0.85,10(-12),10(-12),1000)p0 = 1.732050807568877%收敛

6、到根3、输入时 p0=newton(-0.001,10(-12),10(-12),1000)p0 = -1.975314567913087e-028%收敛到根4、输入时 p0=newton(0.85,10(-12),10(-12),1000)p0 = -1.732050807568877%收敛到根5、输入时 p0=newton(2,10(-12),10(-12),1000)p0 = 1.732050807568877%收敛到根从上面的结果可知,牛顿迭代法具有非常高的收敛速度(程序newton.m运行迭代次数k很小),进一步还会发现每次迭代后的精确位数大致都会翻倍,即具有二阶收敛性。同时,可以看

7、出,当时,程序会收敛到所属区间的那个根;而当,则不会收敛到所属区间的那个根。可以画出函数图像观察迭代过程,如图2所示。其中,为初始值,经过一次迭代后得到x1,三次迭代后就接近准确值了。事实上,我们通过matlab仿真观察每次迭代的结果,如下表所示,也能看出Newton迭代法收敛迅速,且与图2所示的切线基本符合一致。表1 Newton迭代收敛情况迭代次数012345-0.8551.5491561.7705251.7332701.7320521.732051图2 Newton法迭代过程五、结论此次题目主要涉及牛顿迭代法。通过题目,我们可以看出,牛顿迭代法的效率是很高的。但该法的其中一个苛刻条件是二阶可导且一阶导数不能为0。有以下几个缺陷:1,有可能所得的序列左右来回飘移,不会收敛。2,序列会趋于重复或基本重复,造成循环。3,还有可能发生离散振荡序列。当根的阶数大于1时,迭代的速度会变慢,此时有一种更好的方法求解,即牛顿-拉夫森迭代的加速收敛法。而哈利法则是其另一种途径。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号