Guest User

Untitled

a guest
Feb 21st, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. function [r,rhistory,N,fError] = bisectE7(fHan,xL,xR,fTol,iterMax)
  2. r=[];
  3. rhistory=[];
  4. N=0;
  5. fError=0;
  6. r=0;
  7. if (fHan(xL)<0)&&(fHan(xR)<0)
  8. fError='Error';
  9. elseif (fHan(xL)>0)&&(fHan(xR)>0)
  10. fError='Error';
  11. elseif abs(fHan(xL))<=fTol
  12. r=xL;
  13. elseif abs(fHan(xR))<=fTol
  14. r=xR;
  15. elseif(abs(fHan((xR+xL)/2))>= fTol)
  16. rhistory=[];
  17. while (N < iterMax)
  18. if ((fHan((xR+xL)/2)>0)&&(fHan(xR)>0))
  19. xR=(xR+xL)/2;
  20. rhistory=[rhistory,((xR+xL)/2)];
  21. N=N+1;
  22. elseif (fHan((xR+xL)/2)>0)&&(fHan(xR)<0)
  23. xL=(xR+xL)/2;
  24. rhistory=[rhistory,((xR+xL)/2)];
  25. N=N+1;
  26. elseif (fHan((xR+xL)/2)<0)&&(fHan(xR)<0)
  27. xR=(xR+xL)/2;
  28. rhistory=[rhistory,((xR+xL)/2)];
  29. N=N+1;
  30. elseif (fHan((xR+xL)/2)<0)&&(fHan(xR)>0)
  31. xL=(xR+xL)/2;
  32. rhistory=[rhistory,((xR+xL)/2)];
  33. N=N+1;
  34. end
  35. if(abs(fHan((xR+xL)/2))<=fTol)
  36. r=(xR+xL)/2;
  37. break;
  38. end
  39. end
  40. fError=abs(fHan(r));
  41. elseif(abs(fHan((xR+xL)/2))== 0)
  42. r=(xR+xL)/2;
  43. fError=0;
  44. end
  45. end
Add Comment
Please, Sign In to add comment