%joonis alglähendi leidmiseks
fplot(@(x)x.^3-8*x+2)
grid on
legend
title('Joonis alglähendite leidmiseks')
%Jooniselt näeme, et võrrandil on olemas 3 reaalarvulist lahendit.
%Lõikekohad x-teljega sobivadki meile alglähenditeks.
%Valime -3 ja 0.25 ja 2.7.

%kontrollime HIM koonduvust
%1) kui x=-3, kas sobib g1 või g2?
%x=-3;
%tuletis=3/8*x^2=3.375 ei sobi, sest väärtus >1
%tuletis=8/(3*nthroot((8*x-2)^2,3))=0.3038 SOBIB
%sobib g2.

%2) kui x=0.25, kas sobib g1 või g2?
%x=0.25;
%tuletis=3/8*x^2=0.0234 SOBIB
%sobib g1

%3) kui x=2.7, kas sobib g1 või g2?
%x=2.7;
%tuletis=3/8*x^2=2.7338 ei sobi
%tuletis=8/(3*nthroot((8*x-2)^2,3))=0.3668 SOBIB
%sobib g2

%Lahendame võrrandi x^3-8x+2=0 HIM kasutades
f=@(x)x^3-8*x+2;
ftuletis=@(x)3*x^2-8;

%esimene lahend (alglähendiks x=-3)
%HIM kasutamine
%NB! Teeme lähendite vektori, kus x(1)=-3 (alglähend jooniselt)
x(1)=-3; %alglähend
i=1; %vektori elementide arv
while abs(f(x(i)))>1e-5
    i=i+1;
    x(i)=nthroot(8*x(i-1)-2,3);
    end
lahend1HIM=x(i);
sammud1HIM=i-1; %esimene liige oli määratud
format long
lahendite_vektor=x
format short

%LM kasutamine
y(1)=x(1); %alglähend jooniselt
y(2)=x(2); %HIM abil leitud esimene lähend
k=2; %vektori y elementide arv
while abs(f(y(k)))>10^-5
    k=k+1;
    y(k)=y(k-1)-(y(k-1)-y(k-2))/(f(y(k-1))-f(y(k-2)))*f(y(k-1));
end
lahend1LM=y(k);
sammud1LM=k-2;

%NM kasutamine
x=-3;
j=0; %sammude loendur
while abs(f(x))>1e-5
x=x-f(x)/ftuletis(x);
j=j+1;
end
lahend1NM=x;
sammud1NM=j;

%MNM kasutamine
x=-3;
k=0;
while abs(f(x))>10^-5
x=x-f(x)/ftuletis(-3); %tuletis ainult x=-3 korral
k=k+1;
end
lahend1MNM=x;
sammud1MNM=k;

lahend1=[lahend1HIM, lahend1NM, lahend1MNM, lahend1LM]
sammud1=[sammud1HIM, sammud1NM, sammud1MNM, sammud1LM]

%teine lahend (alglähendiks x=0.25)
%HIM kasutamine
y(1)=0.25; %alglähend jooniselt
j=1; %vektori elementide arv
while abs(f(y(j)))>1e-5
    j=j+1;
    y(j)=1/8*(y(j-1)^3+2);
    
end
lahend2HIM=y(j);
sammud2HIM=j-1;

%LM kasutamine
z(1)=y(1); %alglähend jooniselt
z(2)=y(2); %HIM abil leitud teine lähend
i=2; %vektori z elementide arv
while abs(f(z(i)))>10^-5
    i=i+1;
    z(i)=z(i-1)-(z(i-1)-z(i-2))/(f(z(i-1))-f(z(i-2)))*f(z(i-1));
end
lahend2LM=z(i);
sammud2LM=i-2;

%NM kasutamine
x=0.25;
j=0; %sammude loendur
while abs(f(x))>1e-5
x=x-f(x)/ftuletis(x);
j=j+1;
end
lahend2NM=x;
sammud2NM=j;

%MNM kasutamine
x=0.25;
k=0;
while abs(f(x))>10^-5
x=x-f(x)/ftuletis(0.25); %tuletis ainult x=0.25 korral
k=k+1;
end
lahend2MNM=x;
sammud2MNM=k;

lahend2=[lahend2HIM, lahend2NM, lahend2MNM, lahend2LM]
sammud2=[sammud2HIM, sammud2NM, sammud2MNM, sammud2LM]

%kolmas lahend (alglähendiks on x=2.7)
%HIM
x(1)=2.7; %alglähend vektori esimese elemendina
i=1; %vektori elementide arv
while abs(f(x(i)))>1e-5
    i=i+1;
    x(i)=nthroot(8*x(i-1)-2,3);
end
lahend3HIM=x(i);
sammud3HIM=i-1;

%LM kasutamine
z(1)=x(1); %alglähend jooniselt
z(2)=x(2); %HIM abil leitud teine lähend
i=2; %vektori z elementide arv
while abs(f(z(i)))>10^-5
    i=i+1;
    z(i)=z(i-1)-(z(i-1)-z(i-2))/(f(z(i-1))-f(z(i-2)))*f(z(i-1));
end
lahend3LM=z(i);
sammud3LM=i-2;

%NM kasutamine
x=2.7;
j=0; %sammude loendur
while abs(f(x))>1e-5
x=x-f(x)/ftuletis(x);
j=j+1;
end
lahend3NM=x;
sammud3NM=j;

%MNM kasutamine
x=2.7;
k=0;
while abs(f(x))>10^-5
x=x-f(x)/ftuletis(2.7); %tuletis ainult x=2.7 korral
k=k+1;
end
lahend3MNM=x;
sammud3MNM=k;

lahend3=[lahend3HIM, lahend3NM, lahend3MNM, lahend3LM]
sammud3=[sammud3HIM, sammud3NM, sammud3MNM, sammud3LM]
