Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function [r,rhistory,N,fError] = bisectE7(fHan,xL,xR,fTol,iterMax)
- r=[];
- rhistory=[];
- N=0;
- fError=0;
- r=0;
- if (fHan(xL)<0)&&(fHan(xR)<0)
- fError='Error';
- elseif (fHan(xL)>0)&&(fHan(xR)>0)
- fError='Error';
- elseif abs(fHan(xL))<=fTol
- r=xL;
- elseif abs(fHan(xR))<=fTol
- r=xR;
- elseif(abs(fHan((xR+xL)/2))>= fTol)
- rhistory=[];
- while (N < iterMax)
- if ((fHan((xR+xL)/2)>0)&&(fHan(xR)>0))
- xR=(xR+xL)/2;
- rhistory=[rhistory,((xR+xL)/2)];
- N=N+1;
- elseif (fHan((xR+xL)/2)>0)&&(fHan(xR)<0)
- xL=(xR+xL)/2;
- rhistory=[rhistory,((xR+xL)/2)];
- N=N+1;
- elseif (fHan((xR+xL)/2)<0)&&(fHan(xR)<0)
- xR=(xR+xL)/2;
- rhistory=[rhistory,((xR+xL)/2)];
- N=N+1;
- elseif (fHan((xR+xL)/2)<0)&&(fHan(xR)>0)
- xL=(xR+xL)/2;
- rhistory=[rhistory,((xR+xL)/2)];
- N=N+1;
- end
- if(abs(fHan((xR+xL)/2))<=fTol)
- r=(xR+xL)/2;
- break;
- end
- end
- fError=abs(fHan(r));
- elseif(abs(fHan((xR+xL)/2))== 0)
- r=(xR+xL)/2;
- fError=0;
- end
- end
Add Comment
Please, Sign In to add comment