实验一 非线性方程求根

更新时间:2024-02-03 16:33:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算方法课程实验报告

实验名称 非线性方程求根

班级 教师 动创新13 姓名 封敏丽 赵美玲 地点 学号 201302400104 数学实验中心 序号 评分 一、 实验目的 ① 掌握二分法、牛顿迭代法等常用的非线性方程迭代算法; ② 了解迭代算法的设计原理及初值对收敛性的影响。 二、用文字或图表记录实验过程和结果 题目 求方程f(x)?x3?x2?3x?3?0在1.5 附近的根.(误差限为??1e?6,??1e?9) (1)编程实现二分法,并求解上述非线性方程的根(有根区间自己确定)。 (2)设计弦截法,计算原方程的根。 参考答案 原方程的根为x?1.732051 (1)有根区间取[1.5 2]; 用Matlab进行运算,先编写程序如下: f=input('输入函数f(x)='); qujian=input('输入区间='); err=input('输入误差='); a=qujian(1); b=qujian(2); yc=1; k=0;%计二分法的次数 while((b-a)>err&yc~=0); c=(a+b)/2; x=a; ya=eval(f); x=b; yb=eval(f); x=c; yc=eval(f); if ya*yc<0 b=c; else a=c; end x0=c;k=k+1; end 将以上程序保存为文件erfenfa.m。 调用erfenfa得到如下结果: 这个时候将在Workspace区域得到x0和k的值如下: 如上图所示,用二分法得到方程的近似根约为1.732051,二分次数为19. 二分法流程图如下: 开始 输入a,b,c X0=1/2(a+b) F(a)=x*x*x+x*x-3x-3 F(x0)=x0*x0*x0+x0* x0-3x0-3 Y F(x0)=0 N F(a)F(x0))<0 N Y b=x0 a=x0 N │a-b│10^(-6); %收敛判据 t1=t2; t2=y; else break end i=i+1; end fprintf('\\n%s%.6f\\t\\t%s%d%','待求根x=',y,'迭代次数i=',i) ;%输出结果 最后将在工作区显示结果如下: 所以得到方程的近似根约为1.732051,迭代次数为4. 弦截法流程图如下: 开始 │ 定义f(x),g(x)以及 输入x0,e1,e2,N k=k+1 Y f(x0)

三、练习与思考题分析解答 ① 比较二分法和牛顿法在非线性方程求根中的优缺点和收敛速度。 参考:二分法简单易行,但只有线性收敛速度; 牛顿法计算简单,对于单根情形具有二阶局部收敛速度,但对初值的选择比较困难,牛顿法每次迭代要计算f'(x),增加了计算量,对于重根情形仅线性收敛。 对二分法分析; 二分法是利用中点函数值判断,这样就会不断的接近零点,通过每次把f(x)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫做二分法,从它的运算性质来说,每次运算后,区间长度减少一半,是一种线性收敛,另外,二分法不能计算复根和重根。 对于牛顿法分析: 解非线性方程f(x)=0的牛顿法是把非线性方程线性化的一种近似方法。把f(x)在x0点附近展开泰勒级数取其线性部分,作为非线性方程f(x)=0的近似方程,即泰勒展开的前两项,从而得到一个牛顿法的一个迭代序列。记{X(n)}。此时,当n趋于无穷大,X(n)就会逐渐逼近f(x)=0的根。 综上所述: 牛顿迭代法是一种特殊的迭代法,用于求非线性方程单根时具有二阶收敛速度,但是,牛顿法也有自己的缺点,它对初值的要求苛刻,而且还要求函数的导数,如果导数太过复杂,牛顿法并不十分简便。但是二分法虽然运算相对简便,但是从上述例题的求解我们可以看出二分法运算的次数很多,也就是说二分法收敛速度比牛顿法要慢的多。 ② 改进牛顿迭代法,使其对于重根也具有较高的收敛阶,试写出你所能想到的改进思路及其迭代格式,并简单分析收敛速度。 改进思路; ' 对于经典牛顿法根据它的几何意义我们可以对此进行修正,如上图所示,经典牛顿法是从?xk,f?xk??出发,按f?xk?方向寻找下一个迭代点,即左边图的zk?1点。而提出修正方法是按左边图上中点x?zkk?12点的导数的方向寻找下一个迭代点,也就是左图中的xk?1点,从图中看可以发现xk?1zk?1点更快的收敛到根。 迭代格式: f?xk???P:zk?1?xk?'?f?xk?? ?f?xk??C:xk?1?xk??zk?1?'??xk?f?2?????? 收敛速度简单分析: 收敛阶数的定义设序列?x?收敛于极限xk*,如存在常数P?1和C?0使limk??xk?1?xx?xk**P?C,其中P是收敛阶数,P越大,收敛速度越快。 对于迭代序列的效率指数有如下定义:设迭代序列?x?收敛阶数P?1,每次迭代的计算量为kw,则称e?lnP为迭代序列的指数。 w根据以上的定义,对于中点牛顿迭代法,计算量w=3n,其收敛阶P?3。 所以对于新的修正牛顿迭代法,它的收敛阶P?3,比经典的牛顿迭代法快。 四、本次实验的重点难点分析 本次上机中,更加熟悉了二分法、牛顿迭代法等常用的非线性方程迭代算法,同时也了解迭代算法的设计原理及初值对收敛性的影响。 在实验中,对于matlab软件不是很熟练,同时对于代码的编写也感觉到很吃力,通过反复的看计算原理以及不断的上机调试,最终得到了结果。

本文来源:https://www.bwwdw.com/article/vj5w.html

Top