%esercizio 1 04/05/2021
clear all
close all
clc

alpha=linspace(-1,0.5);
f=@(alpha) detLU(alpha);

I=linspace(-1,0.5);
Nmax=100;
toll=sqrt(eps);
[c]=REGULAFALSI(f,I,Nmax,toll);
[l] = METODODELLESECANTI(f,I,Nmax,toll); %converge prima

sprintf('Il determinante si annulla per a=%d',c)
function [d] = detLU(a)
%funzione che svolge fattorizzazione secondo LU(doolittle)
    A=[-2*sin(a) -1 0 0.5 1; 1 -4 1 -10*a.^3 2; -2 0 -0.5 0 4; 0.5 0 10 4 6; 5 0 10 4 6];
    n=length(A);
    L=eye(n);
    U(1,:)=A(1,:);

    for k=1:n
        U(k,k:n)=A(k,k:n) -L(k,1:k-1)*U(1:k-1,k:n);
        L(k+1:n,k)= (A(k+1:n,k) - L(k+1:n,1:k-1)*U(1:k-1,k))/U(k,k);
    end
    d=1;
    for i=1:n
        d=d*U(i,i);
    end
end

function [x0] = REGULAFALSI(f,I,Nmax,toll)
m=I(1);
M=I(end);
x0= m- f(m)/((f(M)-f(m))*(M-m));
k=1;
e(k)=abs(f(x0));

while k<Nmax && e(k)>toll
    if f(m)*f(x0)<0
        M=x0;
    elseif f(m)*f(x0)>x0
        m=x0;
    else
        e(k)=f(x0);
        return
    end
    r=(f(M)-f(m))/(M-m);
    x0 = x0 -f(x0)/r;
    k=k+1;
    e(k)=abs(f(x0));
end
end


function [l] = METODODELLESECANTI(f,I,Nmax,toll)

x=I(1);
x1=I(end);
k=1;
e(k)=abs(f(x));

while k<Nmax && e(k)>toll
   r=(f(x)-f(x1))/(x-x1);
   x1=x;
   x=x-f(x)/r;
   k=k+1;
   e(k)=abs(f(x));
end
l=x;
end

