最近学习matlab及其相关的数学内容,正好老师留了用二分法进行求根,在寻找过程中,代码均需要记录循环k次,每一次的结果,我问了些人,最后求出结果,将代码及其结果呈现如下,由于二分法原理很简单,故而这里就不进行赘述,有问题随时交流哦
一:先呈现出代码运行后的结果
代码运行结果:一共运行了20次
function y=myfunction(t)
% y=0.25t4+5*t2-20t+3
y=t.^3+10*t-20;
end
function
[iterations,y]=dichotomyRoot(a,b,e,k)
x=(a+b)/2;
f3=myfunction(x);
f1=myfunction(a);
if(f1*f3<0)
m=x-a;
if(m>e)
b=x;
k=k+1;
disp('结果为 ') ,disp([k,a,b]);
[k,y]=dichotomyRoot(a,b,e,k);
else
z=x;
end
else
m=b-x;
if(m>e)
a=x;
k=k+1;
disp(‘结果为:’) ,disp([k,a,b]);
[k,y]=dichotomyRoot(a,b,e,k);
else
y=x;
end
end
iterations=k;
end
clc;
clear;
a=input(‘请输入求根的下限,a=’);
b=input(‘请输入求根的上限,b=’);
e=input(‘请输入求根的精度,e=’);
iterations=0;
ya=myfunction(a);yb=myfunction(b);%程序中调用的myfunction.m为函数
if yayb>0
disp('注意:yayb>0,请重新调整区间端点a和b.’),return;
else
[iterations,y]=dichotomyRoot(a,b,e,iterations);
end
disp(‘k=’),disp([iterations]);
disp(‘Root=’),disp(y);
Y=myfunction(y);