二分法非线性方程求解.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二分法非线性方程求解.doc

1、编程实现以下科学计算算法,并举一例应用之(参考书籍《精通MATLAB科学计算》,王正林等编著,电子工业出版社,2009年) “二分法非线性方程求解” 二分法的具体求解步骤如下。 (1)计算函数f(x)在区间[a,b]中点的函数值f((a+b)/2),并作下面的判断: 如果,转到(2); 如果,令 ,转到(1); 如果 ,则 为一个跟。 (2)如果 (为预先给定的精度),则为一个根,否则令,转到(1)。 在MATLAB中编程实现的二分法函数为:HalfInterval。 功能:用二分法求函数在某个区间上的一个零点。 调用格式:root=HalfInterval(f,a,b,eps). 其中,f函数名; a为区间左端点; b为区间右端点; eps为根的精度; root为求出的函数零点。 二分法的MATLAB程序代码如下: function root=HalfInterval(f,a,b,eps) %二分法求函数f在区间[a,b]上的一个零点 %函数名:f %区间左端点:a %区间右端点:b %根的精度:eps %求出的函数零点:root if(nargin==3) eps=1.0e-4; end f1=subs(sym(f),findsym(sym(f)),a); %两端点的函数值 f2=subs(sym(f),findsym(sym(f)),b); if(f1==0) root=a; end if(f2==0) root=b; end if(f1*f20) disp(两端点函数值乘积大于0!); return; else root=FindRoots(f,a,b,eps); %调用求解子程序 end function r=FindRoots(f,a,b,eps) f_1=subs(sym(f),findsym(sym(f)),a); f_2=subs(sym(f),findsym(sym(f)),b); mf=subs(sym(f),findsym(sym(f)),(a+b)/2); %中点函数值 if(f-1*mf0) t=(a+b)/2; r=FindRoots(f,t,b,eps); %右递归 else if(f_1*mf==o) r=(a+b)/2; else if(abs(b-a)=eps) r=(b+3*a)/4; %输出根 else s=(a+b)/2; r=FindRooots(f,a,b,eps); %左递归 end end end 流程图: 实例应用: 采用二分法求方程在区间[0,1]上的一个根。 解: 流程图: 在MATLAB命令窗口中输入: r=HalfInterval(x^3-3*x+1,0,1) 运行结果: 2、编程以解决以下科学计算问题。 试验6 现有一平面上的封闭曲线,取一点建立坐标系,每隔弧度测一点,数据如下表: i 0和18 1 2 3 4 5 6 7 8 Xi 100 134 164 180 198 195 186 160 136 Yi 503 525 514.3 451.0 326.5 188.6 92.2 59.6 62.2 i 9 10 11 12 13 14 15 16 17 Xi 100 66 35 15 0 5 17 32 63 yi 102.7 147.1 191.6 236.0 280.5 324.9 324.9 413.8 458.3 用周期样条求曲线轮廓并作图。 分析: 将周期样条分成两部分来求,最后画在一个图上。用spline进行拟合。 流程图: 源程序: x1=[0 5 17 32 63 100 134 164 180 198]; y1=[280.5 324.9 369.4 413.8 458.3 503 525 514.3 451 326.5]; x11=[0:1:198]; y11=spline(x1,y1,x11); plot(x11,y11,*-,x1,y1,-.rd) hold on x2=[198 195 186 160 136 100 66 35 15 0 ]; y2=[326.5 188.6 92.2 59.6 62.2 102.7 147.1 191.6 236.0 280.5]; x22=[198:-1:0]; y22=spline(x2,y2,x22); plot(x22,y22,*-,x2,y2,-.rd) lege

文档评论(0)

zhangningclb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档