Enter password:
%% Solving Example 1 from the texbook p651
% initial guess
x = [0.1,0.1,-0.1]';
% Tolerance and maximum iterations
TOL = 1e-6;
N = 7;
% Broyden's method
A = J(x);
v = F(x);
A = inv(A);
s = - A*v;
x = x + s;
k = 2;
success = 0;
while k <= N
    w = v;
    v = F(x);
    y = v - w;
    
    z = -A*y;
    
    p = - s' * z;
    
    u = s' * A;
    
    tmp = (s + z) * u;
    A = A + 1/p * tmp;
    
    s = - A*v;
    
    x = x + s;
    
    if norm(s) < TOL
        success = 1;
        break
    end
    k = k + 1;
end
if success == 1
    fprintf("The procedure was successful.\n")
else
    fprintf("The procedure was unsuccessful.\n")
end
x
function val = F(x)
    val1 = 3 * x(1) - cos(x(2)*x(3)) - 1/2;
    val2 = x(1)^2 - 81 * (x(2)+0.1)^2 + sin(x(3)) + 1.06;
    val3 = exp(-x(1)*x(2)) + 20*x(3) + (10*pi - 3)/3;
    val = [val1, val2, val3]';
end
function val = J(x)
    val = [3                    , x(3) * sin(x(2)*x(3))    , x(2) * sin(x(2)*x(3));
           2*x(1)               , -162 * (x(2) + 0.1)      , cos(x(3));
           -x(2)*exp(-x(1)*x(2)), -x(1) * exp(-x(1)*x(2))  , 20];
end