本质是通过不断进行区间压缩来获取函数零点。
二分法的终止条件:区间长度小于等于精度要求。
流程:
文章来源:https://www.toymoban.com/news/detail-744966.html
x=linspace(0,15);
y=(x-1).*(x-3).*(x-9).*(x-12);
plot(x,y);%画函数图像
%将坐标轴平移到原点
ax = gca;
ax.XAxisLocation = 'origin';
ax.YAxisLocation = 'origin';
%将坐标轴平移到原点
xlabel('x');
ylabel('y');
syms X Y;
Y=@(X) (X-1).*(X-3).*(X-9).*(X-12);
a=2;b=6;e=0.01;%确定区间及收敛精度
sign=1;%循环进行标志
tic
while(sign==1)
c=(a+b)/2;
if(Y(c)==0)%零点即为c
fprintf('零点精确解为%f\n',c);
else
if(Y(a)*Y(c)<0)%零点在[a,c]之间
b=c;
else %零点在[c,b]之间
a=c;
end
end
if(abs(b-a)<=e|Y(c)==0)
sign=0;
fprintf('二分法求得零点解为%f\n',c);
else
sign=1;
end
end
toc
零点精确解为3.000000
二分法求得零点解为3.000000
时间已过 0.005635 秒。
如下图所示:
文章来源地址https://www.toymoban.com/news/detail-744966.html
到了这里,关于二分法MATLAB代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!