0

I have a code for finding the bisection (and it finally works!), but I need to include 3 more things:

  • output- Root History a vector containing the sequence of midpoints obtained by the algorithm
  • output- the absolute value of the function
  • f(x) at r, i.e., fRoot = f(r) input- max iterations

    function [R, E] = myBisection(f, a, b, tol)
        m = (a + b)/2;
        R = m;
        E = abs(f(m));
        while E(end) > tol
            if sign(f(a)) == sign(f(m))
                a = m;
            else
                b = m;
            end
            m = (a + b)/2;
            R = [R, m];
            E = [E, abs(f(m))];
        end
    

how do I do this? thanks!!

Barney Szabolcs
  • 11,846
  • 12
  • 66
  • 91
Ajay Kejriwal
  • 41
  • 1
  • 3
  • 7

1 Answers1

0

I have corrected indents an you can see that you've left out end from the end of the function. (it is optional but best not to leave those things out so you know you did not mean to write couple lines to the end but you forgot it.)

R and E should be returned now, if you call myBisection apropriately, that is

[R, E] = myBisection(f, a, b, tol);

If you just call

myBisection(f, a, b, tol)

it will only return R.

To add a limit on the number of iterations, you change while's condition like so:

iter=0;
while (E(end) > tol) && (iter<max_iter)
    iter = iter+1;
    % ...

end

or it is better to do it in a for loop, with an if plus break:

for iter=1:max_iter
    if(E(end) <= tol), break, end;
    % ...
end
Barney Szabolcs
  • 11,846
  • 12
  • 66
  • 91
  • Just one remark: The `end` keyword for functions is optional in MATLAB. (As far as I know, the `endfunction` in Octave is not optional, though) – Thilo Nov 19 '12 at 19:27
  • @Thilo it is just `end`, just checked, my Matlab does not accept `endfunction` or `end function`. Nonetheless I think we agree that it is better not to leave out `end`'s though, and to use correct indents. – Barney Szabolcs Nov 19 '12 at 19:33
  • 1
    `endfunction` is the Octave keyword, not MATLAB, and it should be required in Octave. Correct indentation is crucial, yes, we agree on that ;) – Thilo Nov 19 '12 at 19:39