%Lahendame 4. ülesande harilikku iteratsionimeetodit (HIM) kasutades. Teeme
%joonise alglähendite leidmiseks
fplot(@(x)[x.^3-8*x+2,0])
legend('x^3-8x+2','y=0')
grid on
title('Joonis alglähendite leidmiseks')

%Jooniselt on näha, et võrrandil on 3 lahendit. Valime alglähenditeks
%x0=-3, teiseks x0=0.25 ja viimaseks x0=2.6.

%Kontrollime HIM koonduvust meie võrrandi jaoks.
%1) esimene lahend
x=-3;
tuletis1=abs(3*x^2/8) %ei sobi, peab olema väiksem kui 1
tuletis2=abs(8/(3*nthroot((8*x-2)^2,3))) %sobib

%2) teine lahend
x=0.25;
tuletis1=abs(3*x^2/8) %sobib
tuletis2=abs(8/(3*nthroot((8*x-2)^2,3))) %ei sobi

%3) kolmas lahend
x=2.6;
tuletis1=abs(3*x^2/8) %ei sobi, peab olema väiksem kui 1
tuletis2=abs(8/(3*nthroot((8*x-2)^2,3))) %sobib

%Defineerime võrrandi vasaku poole funktsioonina
f=@(x)x.^3-8*x+2

%lahendame HIMiga
%1) Esimene lahend
x=-3; %alglähend jooniselt
i=0; %sammude loendur
while abs(f(x))>10^-6 %10^-6 on meie valitud täpsus
    x=nthroot(8*x-2,3); %kasutame arvutamiseks g2(x), sest see oli koonduv kuju
    i=i+1; %suurendame sammude arvu
end
vastus1=x
sammudearv1=i

%2) Esimene lahend
x=0.25; %alglähend jooniselt
i=0; %sammude loendur
while abs(f(x))>10^-6 %10^-6 on meie valitud täpsus
    x=(x^3+2)/8; %kasutame arvutamiseks g1(x), sest see oli koonduv kuju
    i=i+1; %suurendame sammude arvu
end
vastus2=x
sammudearv2=i

%3) Kolmas lahend
x=2.6; %alglähend jooniselt
i=0; %sammude loendur
while abs(f(x))>10^-6 %10^-6 on meie valitud täpsus
    x=nthroot(8*x-2,3); %kasutame arvutamiseks g2(x), sest see oli koonduv kuju
    i=i+1; %suurendame sammude arvu
end
vastus3=x
sammudearv3=i

%Lahendame Newtoni meetodiga
ftuletis=@(x)3*x.^2-8; %esialgse võrrandi vasaku poole tuletis
% Esimene lahend
x=-3; %alglähend jooniselt
j=0; %ammude loendur
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(x);
    j=j+1;
end
vastus1NM=x
sammud1NM=j

% Teine lahend
x=0.25;
j=0;
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(x);
    j=j+1;
end
vastus2NM=x
sammud2NM=j

% Kolmas lahend
x=2.6;
j=0;
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(x);
    j=j+1;
end
vastus3NM=x
sammud3NM=j