1、佛山科学技术学院实 验 报 告课程名称 数值分析 实验项目 用 Newton法和 steffensen加速法计算方程的根 专业班级 姓名 学号 指导教师 成 绩 日 期 一. 实验目的1、 在计算机上用迭代法求非线性方程 的根。()0fx二. 实验要求1、按照题目要求完成实验内容;2、写出相应的 Matlab 程序;3、给出实验结果(可以用表格展示实验结果 );4、分析和讨论实验结果并提出可能的优化实验。5、写出实验报告。三. 实验步骤1、 用 Matlab 编写 Newton 法和 Steffensen 加速法程序2、用 Newton 法求解书本 P229 例题 4,Steffensen 加
2、速法计算 P255 例题 1。3、用调试好的程序解决如下问题求 的根,其中控制精度 ,最大迭代次数 。02sin35xex 10eps40M编制计算函数值的程序:四. 实验结果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)|= it
3、_max) 。% it - 迭代次数。if nargin = it_max) 。% it - 迭代次数。if nargin 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) NewtonMethod(x0,h) #这表示在计算机已经完成了函数 Newto
4、nMethod(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(2)*ln(2*ln(2)*ln(-2*ln
5、(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 #其中前半部分是没有处理的精确值,最后是浮点数表示的结果 2.53492。观察以上程序,显然比较简单,可以直接计算出函数精确值,这也为我们提供了另外一种方法实现 Newton 迭代。同理,我们一样可以在该软件实现 Steffensen 迭代法,在这就不展开了。综合以上有关 z-z 操作内容是我最近在学的一个软件,虽然学得还不是很好,但有关的程序可以在不同软件实现,我觉得可以多去操作,不同的数学软件可以解决不同的数学问题,但很多还是有共性,所以这有待我进一步学习。