用MATLAB实现二分法解一元方程

2025-10-22 17:39:32

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文件,可在命令行窗口中看到方程的解。

用MATLAB实现二分法解一元方程

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢