非线性方程几种数值解法与MATLAB 程序.docVIP

非线性方程几种数值解法与MATLAB 程序.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
. .    本文档下载自 HYPERLINK / 文库下载网,内容可能不完整,您可以点击以下网址继续阅读或下载:  HYPERLINK /doc/1acb024c767f5acfa1c7cdda.html /doc/1acb024c767f5acfa1c7cdda.html 非线性方程几种数值解法的MATLAB程序 无 第1期2008年1月 岳阳职业技术学院学报JOURNALOFYUEYANGVOCATIONALTECHNICAL COLLEGE No.1Jan.2008 非线性方程几种数值解法的MATLAB程序 卢翼飞 (岳阳职业技术学院公共课部,湖南 摘 岳阳 414000) 要:研究非线性方程数值解,给出了二分法、简单迭代法、牛顿迭代法在MATLAB的程序,并进 行了近似计算,可知牛顿迭代法收敛最快。 关键词:非线性方程;MATLAB程序;二分???;迭代法中图分类号:O241.7 文献标识码:A 文章编号:1672-738X(2008)01-0090-04 1引言 在科学研究和科学计算中常常碰到非线性方程求解问题。非线性方程的解一般不能解析求出。所以数值解法显得非常重要,而数值解法在实际中的实现则更为重要,下面将介绍几种数值解法在Matlab里的实现程序。 2二分法 设f(x)在[a,b]连续,假定f(a)<0,f(b)>0,取中点x0=a+b,检查f(x0)符号。若f(x0)=0,则x0就是一个 根;若f(x0)>0,记a为a1,x0为b1,则得有根区间[a1,b1];若f(x0)<0,记x0为a1,b为b1,则得有根区间[a1,b1]。后两种情况都得到有根区间[a1,b1],它的长度为原区间的一半。对[a1,b1],令x0=a+b,再施以同样的方 法,可得新的有根区间[a2,b2],它的长度为[a1,b1]的一半,如此反复进行下去,其中每一个区间是前一区间的一半。有 这就是方程的根。而xn=a+b即为方程的近似根,且有估计误差 b-a xn-x≤2 * (2.1)(2.2) 下面用二分法求f(x)=x3+4x2-10 在区间[1,2]上的根:因为二分法只能求单根,首先我们可以/doc/1acb024c767f5acfa1c7cdda.html搜索函数(2.2)在区间[1,2]的根的情况。在MATLAB命令窗中输入:[2] x=1:0.01:2;y=x.^3+4*x.^2-10;plot(x,y) 收稿日期:2007-08-15 作者简介:卢翼飞(1967-),女,湖南岳阳人,岳阳职业技术学院公共课部数学讲师。研究方向:经济数学。 总第69期卢翼飞:非线性方程几种数值解法的MATLAB程序 91 图1 f(x)在区间[1,2]的图像从图1中可以看出式(2.2)在区间[1,2]间有惟一的一个大于1.35而小于1.4的单根. ?MATLAB实现先建立erfen.m functiony=erfen(fun,a,b,esp) ifnargin<4esp=1e-4;end iffeval (fun,a)*feval (fun,b)<0 n=1; c=(a+b)/2;whilec>esp iffeval(fun,a)*feval(fun,c)<0b=c;c=(a+b)/2; elseiffeval(fun,c)*feval(fun,b)<0a=c;c=(a+b)/2; elsey=c;esp=10000; endn=n+1;endformatlong y=c; elseiffeval(fun,a)==0y=a; elseiffeval(fun,b)==0 y=b; elsedisp('maynotbearoot');endn 再建立fc.m函数文件 functiony=fc(x);y=x^3+4*x^2-10; 最后在MATLAB命令窗中输入: erfen('fc',1,2,0.0001)n=50ans=/doc/1acb024c767f5acfa1c7cdda.html 1.36523001341410 即迭代50次计算结果为1.36523001341410。精度已经非常之高。 如果希望精度达到,只需要迭代13次,结果是 1.365173390。 二分法优点是计算简单,收敛性有保证。缺点是收敛不快,不能求复根及重根。 3简单迭代法 将函数f(x)=0非线性方程变为同解方程:x=!(x),其中函数!(x)为连续函数。然后构造迭代格式 xk+1=!(xk) (3.1) 并选取初值x0。根据初值x0及迭代格式(3.1)可产生迭代序列{xk}.[3] 下面用简单迭代法计算式(2.2).由式(2.2)可以得到下列等价方程: x=!1(x)=x-f(x)=x-x3-4x2+101x=!2(x)=(10-4x) 1x=!3(x

文档评论(0)

bhyq + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档