function[c,err,yc]=bisect(f,a,b,delta) ya=feval(f,a); yb=feval(f,b); if ya*yb>0,return,end max1=1+round((log(b-a)-log(delta))/log(2)); for k=1:max1 c=(a+b)/2; yc=feval(f,c); if yc==0 a=c; b=c; elseif yc*yb>0 b=c; yb=yc; else a=c; ya=yc; end if abs(b-a)<delta,break,end end c=(a+b)/2; err=abs(b-a); yc=feval(f,c);
时间: 2024-02-01 22:04:07 浏览: 121
Python查找函数f(x)=0根的解决方法
这是一个 MATLAB 的二分法求函数 f 在区间 [a,b] 上的零点的函数,其中 delta 是精度要求。函数 f 在 a 和 b 处的函数值分别为 ya 和 yb。max1 是迭代的最大次数,根据区间长度和精度要求计算。在 for 循环中,每次将区间 [a,b] 折半,得到中点 c,计算函数在 c 处的函数值 yc。如果 yc 等于 0,说明找到了函数的零点,直接返回 c。如果 yc 与 yb 的符号相同,说明零点在区间 [c,b] 中,将 a 赋值为 c,yb 赋值为 yc。如果 yc 与 ya 的符号相同,说明零点在区间 [a,c] 中,将 b 赋值为 c,ya 赋值为 yc。如果区间长度小于精度要求 delta,跳出循环,最终返回区间中点 c、区间长度 err 和函数在 c 处的函数值 yc。
阅读全文