实验五-用Newton法计算方程的根(共6页)_第1页
实验五-用Newton法计算方程的根(共6页)_第2页
实验五-用Newton法计算方程的根(共6页)_第3页
实验五-用Newton法计算方程的根(共6页)_第4页
实验五-用Newton法计算方程的根(共6页)_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、佛山科学技术学院实 验 报 告课程名称 数值分析 实验项目 用Newton法和steffensen加速法计算方程的根 专业班级 姓名 学号 指导教师 成 绩 日 期 一. 实验目的1、 在计算机上用迭代法求非线性方程的根。二. 实验要求1、按照题目要求完成实验内容;2、写出相应的Matlab 程序;3、给出实验结果(可以用表格展示实验结果);4、分析和讨论实验结果并提出可能的优化实验。5、写出实验报告。三. 实验步骤1、 用Matlab编写Newton法和Steffensen加速法程序2、用Newton法求解书本P229例题4,Steffensen加速法计算P255例题1。3、用调试好的程序解

2、决如下问题求的根,其中控制精度,最大迭代次数。编制计算函数值的程序:四. 实验结果1、用Matlab编写Newton法和Steffensen加速法程序;利用Newton法求方程的根:function x_star, index, it=Newton(fun, x, ep, it_max)% 求解非线性方程的Newton法,其中% fun(x) - 需要求根的函数,% 第一个分量是函数值,第二个分量是导数值% x - 初始点。% ep - 精度,当|(x(k)-x(k-1)|<ep时,终止计算。省缺为1e-5% it_max - 最大迭代次数,省缺为100% x_star - 当迭代成功时

3、,输出方程的根,% 当迭代失败时,输出最后的迭代值。% index - 当index=1时,表明迭代成功,% 当index=0时,表明迭代失败(迭代次数 >= it_max)。% it - 迭代次数。if nargin <4 it_max=100; endif nargin <3 ep=1e-5; endindex=0; k=1;while k<=it_max x1=x; f=feval(fun, x); if abs(f(2)<ep break; end x=x-f(1)/f(2); if abs(x-x1)<ep index=1; break; end

4、k=k+1;endx_star=x; it=k;利用steffensen加速迭代方法:function x_star, index, it=steffensen(phi, x, ep, it_max)% Steffensen 加速方法% phi(x) - 迭代函数% x - 初始点。% ep - 精度,当|(x(k)-x(k-1)|<ep时,终止计算。省缺为1e-5% it_max - 最大迭代次数,省缺为100% x_star - 当迭代成功时,输出方程的根,% 当迭代失败时,输出最后的迭代值。% index - 当index=1时,表明迭代成功,% 当index=0时,表明迭代失败(

5、迭代次数 >= it_max)。% it - 迭代次数。if nargin <4 it_max=100; endif nargin <3 ep=1e-5; endindex=0; k=1;while k<=it_max x1=x; y=feval(phi,x); z=feval(phi,y); x=x-(y-x)2/(z-2*y+x); if abs(x-x1)<ep index=1; break; end k=k+1;endx_star=x; it=k;2、用Newton法求解书本P229例题4,Steffensen加速法计算P255例题1。用Newton法计算

6、书本P229例题4。(求方程f(x)=x3-x-1=0在区间1,2内的根)fun=inline('x3-x-1,3*x2-1');x_star,index,it=Newton(fun,1.5)书本P255例题1:求x=x3-1在x0=1.5附近解。phi=inline('x3-1');x_star,index,it=steffensen(phi,1.5)3、用调试好的程序解决如下问题求的根,其中控制精度,最大迭代次数。编制计算函数值的程序:由上面利用Newton法求方程的根的程序知:% ep - 精度,当|(x(k)-x(k-1)|<ep时,终止计算。省缺

7、为1e-5% it_max - 最大迭代次数,省缺为100if nargin <4 it_max=100; endif nargin <3 ep=1e-5; end我们只需改动:it_max=40; ep=1e-10, 其余不变 。利用以上程序,我们只需输入:fun=inline('exp(5*x)-sin(x)+(x)3-20,5*exp(5*x)-cos(x)+3*(x)2');x_star,index,it=Newton(fun,0.5),可得:x_star = 0.602596203566521index = 1it = 6 同理,在steffensen加速

8、迭代方法的程序中,我们只需改动:it_max=40; ep=1e-10, 其余不变 。利用以上程序,我们只需输入: phi=inline('exp(5*x)-sin(x)+(x)3-20');x_star,index,it=steffensen(phi,0.5)可得:x_star = 0.637246094753909index = 0it = 41五. 讨论分析当初始值选取离零点较远时将导致算法无法使用,例如第三题,将初始值改为2就无法计算出结果了,显示如下例如求的根,其中控制精度,最大迭代次数,在steffensen加速迭代方法的程序中,我们只需改动:it_max=40;

9、ep=1e-10, 其余不变 。利用以上程序,我们只需输入: phi=inline('exp(5*x)-sin(x)+(x)3-20');x_star,index,it=steffensen(phi,0.5)可得:x_star = 0.637246094753909index = 0it = 41观察上述结果,index = 0,it = 41表明迭代失败,所以使用以上方法估计的时候,应该尽量估计出解的范围,偏离不应过大,距离增加迭代次数增加,也有可能迭代失败六. 改进实验建议根据上述分析,我认为,应该先对函数作一个简图,方便知道解的大概位置,然后我们才将这个大概值代入Newt

10、on法或者Steffensen中进行求解。当然,我们可以用其他数学软件实现Newton迭代法,我们可以用z-z超级画板,其操作流程为:牛顿迭代法的公式是:xn+1=xn-f(xn)/f'(xn)。下面我们就用牛顿迭代法设计程序求方程f(x)=ln(x)+2*x-6的近似解。(一)观察方程f(x)=0的零点位置 (1)显示坐标系的坐标刻度。 (2)作出函数y=ln(x)+2*x-6的图像,如下图所示: 可以观察到方程的根在区间2,3上,我们可以设定近似解的初始值为2。(二)设计求方程近似解的程序 (1)在程序工作区中输入:f(x)ln(x)+2*x-6;执行后,返回结果为:>>

11、; f(x) #这表示在计算机已经完成了函数f(x)的定义。(2)定义f(x)的导函数g(x),在程序工作区中输入:Diff(f(x),x);执行后,返回结果为:>> 2+1/x #得到了f(x)的导函数。继续输入:g(x)2+1/x;这表示在计算机已经完成了函数g(x)的定义。 (3)在下面输入:NewtonMethod(x0,h) x=x0-f(x0)/g(x0); if(abs(x-x0)<=h)return x; elseNewtonMethod(x,h); 执行后,返回结果为:>> NewtonMethod(x0,h) #这表示在计算机已经完成了函数Ne

12、wtonMethod(x0,h)的定义。(三)设定初值为2、要求误差不大于0.001的近似解 (1)在下面输入: Float(1); 执行后,返回结果为:>> 计算结果显示浮点数 # (2)在下方继续输入: NewtonMethod(2,0.001); 执行命令最后的返回结果是: >>(-2*ln(2)*ln(-2*ln(2)+14)/(5)*ln(2*ln(2)*ln(-2*ln(2)+14)/(5)-14*ln(2)-14*ln(-2*ln(2)+14)/(5)+98)/(-4*ln(2)+33)+14*ln(2)*ln(-2*ln(2)+14)/(5)+14*ln

13、(2)*ln(2*ln(2)*ln(-2*ln(2)+14)/(5)-14*ln(2)-14*ln(-2*ln(2)+14)/(5)+98)/(-4*ln(2)+33)-98*ln(2)+14*ln(-2*ln(2)+14)/(5)*ln(2*ln(2)*ln(-2*ln(2)+14)/(5)-14*ln(2)-14*ln(-2*ln(2)+14)/(5)+98)/(-4*ln(2)+33)-98*ln(-2*ln(2)+14)/(5)-98*ln(2*ln(2)*ln(-2*ln(2)+14)/(5)-14*ln(2)-14*ln(-2*ln(2)+14)/(5)+98)/(-4*ln(2)+33)+686)/(4*ln(2)*ln(-2*ln(2)+14)/(5)-32*ln(2)-28*ln(-2*ln(2)+14)/(5)+229)=2.53492 # 其中前半部分是没有处理的精确值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论