数值分析matlab完整版实验报告.doc_第1页
数值分析matlab完整版实验报告.doc_第2页
数值分析matlab完整版实验报告.doc_第3页
数值分析matlab完整版实验报告.doc_第4页
数值分析matlab完整版实验报告.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

数值分析报告数值分析报告运用Matlab求解非线性方程的根学 院: 专 业: 班 级: 姓 名: 学 号:1. 目的掌握非线性方程求根的方法,并选取实例运用MATLAB软件进行算法的实现,分别用牛顿法、弦截法和抛物线法求非线性方程的根。2. 报告选题报告选取数值分析(第四版)290页习题7作为研究对象,即求在附近的根。根的准确值,要求结果准确到四位有效数字。(1) 用牛顿法;(2) 用弦截法,取,;(3) 用抛物线法,取,。3. 理论基础(1) 牛顿迭代法牛顿迭代法是一种特殊的不动点迭代法,其计算公式为 其迭代函数为 牛顿迭代法的收敛速度,当时,容易证明,,牛顿迭代法是平方收敛的,且 。 (2)弦截法 将牛顿迭代法中的用在,处的一阶差商来代替,即可得弦截法 。 (3)抛物线法弦截法可以理解为用过两点的直线方程的根近似替的根。若已知的三个近似根,用过的抛物线方程的根近似代替的根,所得的迭代法称为抛物线法,也称密勒(Muller)法。4. MATLAB实现根据牛顿法、弦截法和抛物线法求非线性方程根的理论基础,为实现计算在MATLAB中编写了以下M文件:(1) f.m,题目中的函数ffunction y=f(x)y=x3-3*x-1;(2) d.m,函数f的导数 function y=d(x)y=3*x2-3;(3) newton.m,牛顿法function newton(f,d,x0,e,max)%f 是要求根的方程(f(x)=0);%d 是f(x)的导数;%x0是所给初值,位于x*附近;%e是给定允许误差;%max是迭代的最大次数;%x1是newton法求得的方程的近似解;%err是误差估计;%k是迭代次数;%y是f(x)值;k=0; y=feval(f,x0);fprintf(k=%.0f x%d=%.8f y%d=%.6en,k,k,x0,k,y)for k=1:max x1=x0-feval(f,x0)/feval(d,x0); err=abs(x1-1.87938524); x0=x1; y=feval(f,x0); fprintf(k=%.0f x%d=%.8f e%d=%.6e y%d=%.6en,k,k,x0,k,err,k,y) if (erre)|(y=0)|(k=max) break; endend(4) xjmethod.m弦截法function xjmethod(f,x0,x1,e,max)%f 是要求根的方程(f(x)=0);%x0,x1是所给初值,位于x*附近;%e是给定允许误差;%max是迭代的最大次数;%x1是弦截法求得的方程的近似解;%err是误差估计;%k是迭代次数;%y是f(x)值;fprintf(k=%.0f x%d=%.8f y%d=%.8en,0,0,x0,0,feval(f,x0)fprintf(k=%.0f x%d=%.8f y%d=%.8en,1,1,x1,1,feval(f,x1)for k=2:max x2=x1-(feval(f,x1)*(x1-x0)/(feval(f,x1)-feval(f,x0); err=abs(x2-1.87938524); x0=x1; x1=x2; y=feval(f,x1); fprintf(k=%.0f x%d=%.8f e%d=%.6e y%d=%.8en,k,k,x1,k,err,k,y) if (erre)|(y=0)|(k=max) break; endend(5) pwxmethod.m抛物线法function pwxmethod(f,x0,x1,x2,e,max)%f 是要求根的方程(f(x)=0);%x0,x1,x2是所给初值,位于x*附近;%e是给定允许误差;%max是迭代的最大次数;%x3是弦截法求得的方程的近似解;%err是误差估计;%k是迭代次数;%y是f(x)值fprintf(k=%.0f x%d=%.8f y%d=%.8en,0,0,x0,0,feval(f,x0)fprintf(k=%.0f x%d=%.8f y%d=%.8en,1,1,x1,1,feval(f,x1)fprintf(k=%.0f x%d=%.8f y%d=%.8en,2,2,x2,2,feval(f,x2)for k=3:max f0=feval(f,x0); f1=feval(f,x1); f2=feval(f,x2); a=(f0-f2)/(x0-x2); b=(f1-f2)/(x1-x2); c=(a-b)/(x0-x1); w=b+c*(x2-x1); if w0 x3=x2-(2*f2/(w+sqrt(w2-4*c*f2); end err=abs(x3-1.87938524); x0=x1; x1=x2; x2=x3; y=feval(f,x2); fprintf(k=%.0f x%d=%.8f e%d=%.6e y%d=%.8en,k,k,x2,k,err,k,y) if (erre)|(y=0)|(k=max) break; endend5. 运行结果图1 运行结果界面(1)牛顿法计算结果 k02.000000001.000000e+00011.888888899.503649e-0037.270233e-00221.879451576.632695e-0055.038501e-004即,误差为6.632695e-005。(2)弦截法计算结果k02.000000001.000000e+00011.90000000 1.59000000e-00121.881093941.708696e-0031.29961633e-00231.879411062.582017e-0051.96128714e-004即,误差为2.582017e-005。 (3) 抛物线法计算结果k01.00000000-3.00000000e+00013.00000000 1.70000000e+00122.000000001.00000000e+00031.893149821.376458e-0021.05630272e-00141.879135262.499828e-004-1.89859581e-00351.879385305.621918e-0084.15115927e-007即,误差为5.621918e-008。6. 小结迭代法是解非线性方程的主要方法,牛顿法就是最有效的迭代法之一,它在单根附近具有较高阶的收敛速度。而弦截法用差商代替导数,对于较复杂的函数运算变的方便。抛物线法也是超线性收敛的,适用于求多项式的实根和复根。

温馨提示

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

评论

0/150

提交评论