format long xl=0.5; xu=2; tolerance=0.0001; rel_err=3; fprintf(' xl xu xr rel_error fxl.fxr change\n') fprintf('-------- -------- -------- -------- -------- ------\n') xr=(xl+xu)/2; while (rel_err>tolerance) %check whether xr in upper or lower interval fxl=xl^3+4*xl^2-10; fxr=xr^3+4*xr^2-10; if (fxl*fxr<0) %root in lower interval %change upper bracket oldxu=xu; oldxl=xl; xu=xr; change="xu"; else %root in upper interval %change lower bracket oldxl=xl; oldxu=xu; xl=xr; change="xl"; end fprintf('%8.6f %8.6f %8.6f %8.6f %4.2f %4s\n',oldxl,oldxu,xr,rel_err,(fxl*fxr),change) oldxr=xr; xr=(xl+xu)/2; rel_err=abs((xr-oldxr)/xr)*100; end root=xr