Newton-Raphson on Matlab

  1. In MATLAB, I want to use the Newton-Raphson method with absolute tolerance 1e-1, other tolerances zero, and an initial estimate x0 = 4 to find a zero of the function

    f(x) = tan-1 (x-1) - 0.5

    And then repeat the process for a better estimate with absolute tolerance 10-9. So here is my code so far:

    Code (Text):
    format long
    x=4;
    ind=0;
    k=1;
    f=@(x)(atan(x-1)-0.5);
    fp=@(x)(1/((x - 1)^2 + 1));
    N=30;
    tola=1e-1;
    tolr=0;
    tolf=0;
     
    while ind == 0 & k <= N,
        fp_value=feval(fp,x);
        if fp_value ~= 0,
            f_value=feval(f,x);
            if abs(f_value)>tolf,
                x_new=x - f_value/fp_value;
                if abs(x_new - x)<= tola + tolr * abs(x),
                    ind=2;
                end
                x=x_new;
            else
                ind=1;
            end
        else
            ind=3;
        end
        k=k+1;
    end
     
    if ind==0,
        ind=4;
    end
     
    x
    But we get:

    Code (Text):
    x =
     
       -2.742845125833007e+211
     
    So why is it that we don't get a single number instead of all 30 iterations? :confused:

    Also when I changed the value of the absolute tolerance to 10^-9, there was no change in the output. Why is that? I'm new to Matlab, so any help is greatly appreciated.
     
  2. jcsd
Know someone interested in this topic? Share a link to this question via email, Google+, Twitter, or Facebook

Have something to add?

0
Draft saved Draft deleted