1 / 5
文档名称:

用区间二分法求方程的根.doc

格式:doc   大小:32KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

用区间二分法求方程的根.doc

上传人:雾里看花 2019/3/21 文件大小:32 KB

下载得到文件列表

用区间二分法求方程的根.doc

文档介绍

文档介绍:用区间二分法求方程的根一、。。。二、参数说明functionroot=HalfInterval(f,a,b,eps)方程表达式:f区间左端点:a区间右端点:b根的精度:eps求得的根:①计算函数f(x)在区间[a,b]中点的函数值f((a+b)/2),并做下面的判断:如果f(a)f((a+b)/2)<0,转到②;如果f(a)f((a+b)/2)>0,令a=(a+b)/2,转到①;如果f(a)f((a+b)/2)=0,则x=(a+b)/2为一个根。②如果|a-(a+b)/2|<p(预先给定的精度),则x=(b+3a)/4为一个根,否则令b=(a+b)/2,转到①。=HalfInterval('x^3-x-1',1,)r=、源程序及流程图源程序:functionroot=HalfInterval(f,a,b,eps)%方程表达式:f%区间左端点:a%区间右端点:b%根的精度:eps%求得的根:rootif(nargin==3)eps=-4;endf1=subs(sym(f),findsym(sym(f)),a);%两端点的函数值f2=subs(sym(f),findsym(sym(f)),b);if(f1==0)root=a;endif(f2==0)root=b;endif(f1*f2>0)disp('两端点函数值乘积大于0!');return;elseroot=FindRoots(f,a,b,eps);%调用求解子程序endfunctionr=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*mf>0)t=(a+b)/2;r=FindRoots(f,t,b,eps);%右递归elseif(f_1*mf==0)r=(a+b)/2;elseif(abs(b-a)<=eps)r=(b+3*a)/4;%输出根elses=(a+b)/2;r=FindRoots(f,a,s,eps);%左递归endendend流程图:开始t=(a+b)/2t=(a+t)/2YNf(a)f(t)>0f(a)f(t)<0NYNx=(a+t)/2t=(a+t)/2|a-t|<Yx=(a+t)/2结束五、程序调试情况最终得出的结果是一个有效数字为四位的实根。六、结论本算法的优点:可以通过调节精确度来使最终得值更精确,是有效位数更多。复杂度: 本算法流程明确简单,通俗易懂。算法精度: 最终结果有四位有效数字,通过调节精确度是最终结果更精确。误差分析:由于有效数字取位不同,导致结果有不同程度误差,但总体上进一