数值分析实验报告——方程求根_第1页
数值分析实验报告——方程求根_第2页
数值分析实验报告——方程求根_第3页
数值分析实验报告——方程求根_第4页
数值分析实验报告——方程求根_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上数值分析实验报告班级 信科1501 学号 姓名 梁恩昊 日期 2017.10.3 学 院数学科学学院专 业信息与计算科学课程名称数值分析成 绩实验一 方程求根 一、 实验目的: 掌握二分法、Newton法、不动点迭代法、弦截法求方程的根的各种计算方法、并实施程序调试和运行,学习应用这些算法于实际问题。二、 实验内容: 二分法、Newton法、不动点迭代法、弦截法求方程的根、程序的调试和运行,给出实例的计算结果。观察初值对收敛性的影响。三、 实验步骤: 、二分法:定义:对于区间a,b上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f

2、(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。实现方法:首先我们设一方程400*(x4)-300*(x3)+200*(x2)-10*x-1=0,并求其在区间0.1,1上的根,误差限为e=10-4。PS:本方法应用的软件为matlab。disp('二分法') a=0.1;b=1; tol=0.0001; n0=100; fa=400*(a.4)-300*(a.3)+200*(a.2)-10*a-1; for i=1:n0 p=(a+b)/2;fp=400*(p.4)-300*(p.3)+200*(p.2)-10*p-1; if f

3、p=0|(abs(b-a)/2)<tol) disp('用二分法求得方程的根p=') disp(p) disp('二分迭代次数为:') disp(i) break; end; if fa*fp>0 a=p; else b=p; end;end; if i=n0&&(fp=0|(abs(b-a)/2)<tol) disp(n0)disp('次二分迭代后没有求出方程的根') end;程序调试:运行结果:用二分法求得方程的根p= 0.1108二分迭代次数为: 14 Newton法定义:取定初值x0,找到函数对应的点,然

4、后通过该点作函数切线,交x轴,得到新的横坐标值,然后找函数对应的点,做切线,得到新的横坐标值,重复上述步骤,多次迭代,直到收敛到需要的精度。实现方法:我们与二分法一样,先设一方程400*(x4)-300*(x3)+200*(x2)-10*x-1=0,并求其在区间0.1,1上的根。PS:本方法应用的软件为matlab。syms x;diff(400*(x.4)-300*(x.3)+200*(x.2)-10*x-1) %求导方程函数文件:function Newton=fun(a)Newton=400*(a.4)-300*(a.3)+200*(a.2)-10*a-1;endfunction New

5、ton2=dfun(b)Newton2=1600*b3-900*b2+400*b-10; %fun函数的导数end 主程序:x0=1;while 1x1=x0-fun(x0)/dfun(x0);if abs(x1-x0)<1e-8 | abs(fun(x1)<1e-10break;endx0=x1;enddisp('用牛顿法求得的方程的根为:x=')disp(x1)程序调试:运行结果:用牛顿法求得的方程的根为: x=0.1108 、不动点迭代法:采用不动点迭代法计算x3+4x2-10=0,在区间1,2上的一个根。PS:本方法应用的软件为matlab。不动点迭代法程序

6、:函数文件:function y,n=BDD(x,eps)if nargin=1eps=1.0e-6;elseif nargin<1errorreturnendx1=gg(x);n=1;while (norm(x1-x)>=1e-6)&&(n<=10000)x=x1;x1=gg(x);n=n+1;endy=x;M函数:function f=gg(x)f(1)=sqrt(2.5-(x3)/4);结果如下:>> BDD(1)n =21ans =1.3652 、弦截法:定义:弦截法是求非线性方程近似根的一种线性近似方法。它是以与曲线弧AB对应的弦AB与x

7、轴的交点横坐标作为曲线弧AB与x轴的交点横坐标的近似值来求出方程的近似解。该方法一般通过计算机编程来实现。弦截法的原理是以直代曲即用弦(直线)代替曲线求方程的近似解,也就是利用对应的弦 与 轴的交点横坐标来作为曲线弧 与 轴的交点横坐标 的近似值。实现方法:我们与二分法一样,先设一方程400*(x4)-300*(x3)+200*(x2)-10*x-1=0,并求其在区间0.1,1上的根。PS:本方法应用的软件为matlab。函数文件:functionp1,err,k,y=secant(f,p0,p1,delta,max1)% f是非线性函数 %p0,p1是初始值 %delta是给定允许误差 %m

8、ax1是迭代次数的上限 %p1是所求得的方程的近似解 %err是p1-p0的误差估计 %k是所需要的迭代次数 %y=f(p1) K=0,p0,p1,feval('f',p0),feval('f',p1) for k=1:max1p2=p1-feval('f',p1)*(p1-p0)/(feval('f',p1)-feval('f',p0);err=abs(p2-p1); p0=p1; p1=p2; k,p1,err,y=feval('f',p1) if(err<delta)|(y=0), break,endendendM文件:secant('400*(x4)-300*(x3)+200*(x2)-10*x-1=0',0,1,1.0e-4,100);disp('用弦截法求得的方程的根为:x=')disp(p1)运行结果:用弦截法求得的方程的根为: x=0.1108四、 实验中遇到的问题及解决方法:MATLAB运用不熟练,于是翻开以前的课本与ppt,并结合网上查阅的资料,才又掌握了一些基础的运用方法。一开始

温馨提示

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

评论

0/150

提交评论