clear

%Joonis alglähendite leidmiseks
fplot(@(x)x.^3-6*x.^2+3*atan(x)+3,[-1,7])
hold on
grid on
fplot(0,[-1,7])
legend('x^3-5*x^2+3*atanx(x)+3')
hold off

%Jooniselt on näha, et võrrandil on kolm lahendit. Valime lõikekohtade
%x-koordinaadi alglähendiks. Seega meil -0.5 ja 1 ja 5.7.

%Defineerime abifunktsioonid
f=@(x)x^3-6*x^2+3*atan(x)+3;
ftuletis=@(x)3*x^2-12*x+3/(1+x^2);

%Kontrollime HIM koonduvust
%1) avaldasime x x^3 liikmest
%x=-0.5; %jooniselt leitud algväärtus
%tuletis=abs((12*x-3/(1+x^2))/(3*nthroot((6*x^2-3*atan(x)-3)^2,3)))=12.2665 EI SOBI
%x=1;
%tuletis=abs((12*x-3/(1+x^2))/(3*nthroot((6*x^2-3*atan(x)-3)^2,3)))=4.6942 EI SOBI
%x=5.7;
%tuletis=abs((12*x-3/(1+x^2))/(3*nthroot((6*x^2-3*atan(x)-3)^2,3)))=0.6945 SOBIB
%2) avaldasime x 6x^2 liikmest
%x=-0.5;
%tuletis=abs((x^2+1/(1+x^2))/(4*sqrt(1/6*(x^3+3*atan(x)+3))))=0.5278 SOBIB
%x=1;
%tuletis=abs((x^2+1/(1+x^2))/(4*sqrt(1/6*(x^3+3*atan(x)+3))))=0.3643 SOBIB

%Lahendame võrrandi
%1) HIM
%esimene lahend
x=5.7; %jooniselt leitud alglähend
i=0; %sammude arv lahendamisel
while abs(f(x))>10^-5 %10^-5 on meie valitud täpsus
    x=nthroot(6*x^2-3*atan(x)-3,3);
    i=i+1;
end
lahend1HIM=x;
sammud1HIM=i;
%kontroll1=f(lahend1HIM)

%teine lahend
x=-0.5; %jooniselt leitud alglähend
i=0;
while abs(f(x))>10^-5 
    x=-sqrt(1/6*(x^3+3*atan(x)+3)); %NB! -, sest otsime negatiivset lahendit
    i=i+1;
end
lahend2HIM=x;
sammud2HIM=i;

%kolmas lahend
x=1; %jooniselt leitud alglähend
i=0;
while abs(f(x))>10^-5 
    x=sqrt(1/6*(x^3+3*atan(x)+3)); %NB! +, sest otsime positiivset lahendit
    i=i+1;
end
lahend3HIM=x;
sammud3HIM=i;

%2) NM 
%esimene lahend
y=5.7; %alglähend jooniselt
j=0; %sammude arv
while abs(f(y))>10^-5
    y=y-f(y)/ftuletis(y);
    j=j+1;
end
lahend1NM=y;
sammud1NM=j;

%teine lahend
y=-0.5; %alglähend jooniselt
j=0;
while abs(f(y))>10^-5
    y=y-f(y)/ftuletis(y);
    j=j+1;
end
lahend2NM=y;
sammud2NM=j;

%kolmas lahend
y=1; %alglähend jooniselt
j=0; %sammude loendur
while abs(f(y))>10^-5
    y=y-f(y)/ftuletis(y);
    j=j+1;
end
lahend3NM=y;
sammud3NM=j;

%3) MNM (modifitseeritud Newtoni meetod)
%esimene lahend
y=5.7; %alglähend jooniselt
j=0; %sammude arv
while abs(f(y))>10^-5
    y=y-f(y)/ftuletis(5.7);
    j=j+1;
end
lahend1MNM=y;
sammud1MNM=j;

%teine lahend
y=-0.5; %alglähend jooniselt
j=0;
while abs(f(y))>10^-5
    y=y-f(y)/ftuletis(-0.5);
    j=j+1;
end
lahend2MNM=y;
sammud2MNM=j;

%kolmas lahend
y=1; %alglähend jooniselt
j=0; %sammude loendur
while abs(f(y))>10^-5
    y=y-f(y)/ftuletis(1);
    j=j+1;
end
lahend3MNM=y;
sammud3MNM=j;

lahendHIM=[lahend2HIM lahend3HIM lahend1HIM]
lahendNM=[lahend2NM lahend3NM lahend1NM]
lahendMNM=[lahend2MNM lahend3MNM lahend1MNM]
sammudHIM=[sammud2HIM sammud3HIM sammud1HIM]
sammudNM=[sammud2NM sammud3NM sammud1NM]
sammudMNM=[sammud2MNM sammud3MNM sammud1MNM]
