%joonis alglähendite leidmiseks
fplot(@(x)x.^3-8*x+2)
grid on
title('Joonis alglähendite leidmiseks')
legend()

%Jooniselt on näha, et võrrandil on 3 reaalset lahendit. Valime 
%alglähenditeks -3 ja 0.2 ja 2.7.

%Leiame HIM jaoks sobiva kuju. 
%Kas lahendamiseks sobib g(x)=(8*x-2)^(1/3)? 
%Siit g'(x)=8/3*(8*x-2)^(-2/3)
x=-3;
tuletis1=8/(3*nthroot((8*x-2)^2,3)) %sobib
%Kas sobib ka 0.2 lahendi jaoks see kuju?
x=0.2;
tuletis2=8/(3*nthroot((8*x-2)^2,3)) %ei sobi
%Kas sobib 2.7 juures oleva lahendi täpsustamiseks?
x=2.7;
tuletis3=8/(3*nthroot((8*x-2)^2,3)) %sobib

%Kontrollime 0.2 lahendi jaoks g2(x)=1/8'(x^3+2). Siit
%g2'(x)=1/8*3x^2. Kui x=0.2, siis
x=0.2;
tuletis2=3/8*x^2 %sobib

%Iteratsioonimeetodid
%1) HIM
%defineerime funktsiooni f(x) ja f'(x)
f=@(x)x^3-8*x+2;
ftuletis=@(x)3*x^2-8;

%esimene lahend
x=-3; %alglähend jooniselt
sammudHIM=0; %sammude lugeja
while abs(f(x))>10^-6 %10^-6 meie valitud täpsus
    x=nthroot(8*x-2,3);
    sammudHIM=sammudHIM+1;
end
lahendHIM=x
sammudHIM

%NM
x=-3; %alglähend jooniselt
sammudNM=0;
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(x);
    sammudNM=sammudNM+1;
end
lahendNM=x
sammudNM

%MNM
x=-3; %alglähend jooniselt
sammudMNM=0;
while abs(f(x))>10^-6 
    x=x-f(x)/ftuletis(-3); %tuletis kohal alglähend
    sammudMNM=sammudMNM+1;
end
lahendMNM=x
sammudMNM
lahend1=[lahendHIM, lahendNM, lahendMNM]
sammud1=[sammudHIM, sammudNM, sammudMNM]


%teine lahend
x=0.2; %alglähend jooniselt
sammudHIM=0; %sammude lugeja
while abs(f(x))>10^-6 %10^-6 meie valitud täpsus
    x=1/8*(x^3+2);
    sammudHIM=sammudHIM+1;
end
lahendHIM=x;
sammudHIM;

%NM
x=0.2; %alglähend jooniselt
sammudNM=0;
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(x);
    sammudNM=sammudNM+1;
end
lahendNM=x;
sammudNM;

%MNM
x=0.2; %alglähend jooniselt
sammudMNM=0;
while abs(f(x))>10^-6 
    x=x-f(x)/ftuletis(0.2); %tuletis kohal alglähend
    sammudMNM=sammudMNM+1;
end
lahendMNM=x;
sammudMNM;
lahend2=[lahendHIM, lahendNM, lahendMNM]
sammud2=[sammudHIM, sammudNM, sammudMNM]

%kolmas lahend
x=2.7; %alglähend jooniselt
sammudHIM=0; %sammude lugeja
while abs(f(x))>10^-6 %10^-6 meie valitud täpsus
    x=nthroot(8*x-2,3);
    sammudHIM=sammudHIM+1;
end
lahendHIM=x;
sammudHIM;

%NM
x=2.7; %alglähend jooniselt
sammudNM=0;
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(x);
    sammudNM=sammudNM+1;
end
lahendNM=x;
sammudNM;

%MNM
x=2.7; %alglähend jooniselt
sammudMNM=0;
while abs(f(x))>10^-6 
    x=x-f(x)/ftuletis(2.7); %tuletis kohal alglähend
    sammudMNM=sammudMNM+1;
end
lahendMNM=x;
sammudMNM;
lahend3=[lahendHIM, lahendNM, lahendMNM]
sammud3=[sammudHIM, sammudNM, sammudMNM]