用MATLAB实现二分法解一元方程
1、新建m文件Erfenfa.m,输入如下的程序,并保存:
clear
jd=0.000001; %计算精度
i=0; %i是为了防止嵌套调用次数超出堆栈空间
a=200;%[a,b]为迭代范围
b=550; %可以先用画函数图的方法把迭代范围找到,以尽量缩小迭代范围
ErfenfaFun(a,b,jd,i); %调用函数ErfenfaFun解方程
2、新建m文件ErfenfaFun.m,输入如下程序,并保存:
function out=ErfenfaFun(a,b,jd,i)
%函数的调用形式 ErfenfaFun(a,b,jd,i)
%用二分法解出方程pfun的数值解,求解范围为[a,b],精度为jd,i是为了防止嵌套调用次数超出堆栈空间
if(i==499||pfun(a)*pfun(b)>0) %防止函数嵌套调用次数超出堆栈空间
disp('给出的范围无法迭代出结果')
return
end
c=(a+b)/2;
if(pfun(c)==0)
disp('方程的解为:')
disp(c)
return
elseif(pfun(a)*pfun(c)<0)
b=c;
elseif(pfun(c)*pfun(b)<0)
a=c;
end
if(abs(a-b)<jd)
disp('方程的解为:')
disp(a)
return
else
i=i+1;
ErfenfaFun(a,b,jd,i);
end
end
3、新建m文件pfun.m,输入如下程序,并保存:
function y=pfun(v)
%在这个函数程序中输入要解的函数体,可根据自己的需要输入相应的式子
z =0.78;
v0 = 1300;
t = 0.001;
y = (v0/v-1)*z/t-v0*log(v0/v);
end
4、运行Erfenfa.m文件,可在命令行窗口中看到方程的解。