- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数值分析各类问题题解展示及程序
第二章 非线性方程求根 题目:分别用二分法、牛顿迭代法、割线法、斯蒂芬森迭代法求方程的根x=1,观察不同初始值下的收敛性,并给出你的结论。 解: 二分法函数: function [c,err,yc]=bisct(f,a,b,delta) %f是所要求解函数,a、b为有根区间左右端点 %delta是允许的误差界,c为所求近似解 %yc为f在c处的值,err为c的误差估计 if nargin4 delta=1e-5;end ya=feval(f,a); yb=feval(f,b); if yb==0,c=b,return,end if ya*yb0 disp( (a,b)不是有根区间 ); return,end max1=1+round((log(b-a)-log(delta))/log(2)); for k=1:max1 c=(a+b)/2; yc=feval(f,c); if yc==0 a=c; b=c; break, elseif yb*yc0 b=c; yb=yc; else a=c; ya=yc; end if(b-a)delta break,end end k,c=(a+b)/2,err=abs(b-a),yc=feval(f,c) 求解: bisct(f,0.5,1.5) (a,b)不是有根区间 bisct(f,0,1) c = 1 ans = 1 fun=@(x)(x^2+1)*(x-1)^6; fplot(fun,[0,2]) 因函数恒大于等于0,所以二分法不适用,只有在端点取值正好是根时得到结果。 牛顿法函数: function [p,err,k,y]=newton(f,def,p0,delta,max1) %f为非线性函数,df为f微商,p0为初始值,delta为误差限,max1为迭代最大次数 %p为牛顿法求得近似值,err为p0误差估计,k为迭代次数,y=f(p) p0 for k=1:max1 p=p0-feval(f,p0)/feval(def,p0); err=abs(p-p0); p0=p; p,err,k,y=feval(f,p) if(errdelta)|(y==0) break,end end 求解: 以0.1为初始值: newton(f,df,0.1,10^(-6),200) p = 1.0000 err = 9.4200e-007 k = 66 y = 2.1835e-032 以2为初始值: newton(f,df,2,10^(-6),20) p = 1.0000 err = 9.8840e-007 k = 68 y = 2.9137e-032 割线法函数: function [p,err,k,y]=secant(f,p0,p,delta,max1) p0,p,feval(f,p0),feval(f,p), for k=1:max1 p2=p-feval(f,p)*(p-p0)/(feval(f,p)-feval(f,p0)); err=abs(p2-p); p0=p; p=p2; p,err,k,y=feval(f,p) if(errdelta)|(y==0),break,end end 求解:分别将初始点取为1.5和2、0和0.5、0和2,,看三次结果情况。 f=inline((x^2+1)*(x-1)^6); secant(f,1.5,2,10^(-6),100) p = 1.0000 err = 9.1034e-007 k = 91 y = 1.9036e-031 secant(f,0,0.5,10^(-6),100) p = 1.0000 err = 9.7610e-007 k = 88 y = 2.8928e-031 secant(f,0,2,10^(-6),100) p = 1.0000 err = 8.9194e-007 k = 101 y = 1.6840e-031 斯蒂芬森迭代法程序: function [r,n]=stevenfun(f,x0,tol) %史蒂芬森迭代法求解非线性方程的函数,f为给定迭代函数 %x0为给定初始值,tol为给定精度,r为求得的根,n为迭代步数 if(nargin==2) tol=1e-4; end eps=1; r=x0;
文档评论(0)