- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)