clear %vahemälu puhtaks
%Joonis alglähendite saamiseks
fplot(@(x)x.^3-6*x.^2+3*atan(x)+3,[-2,7])
grid on
legend()
title('Joonis alglähendite leidmiseks')
%Jooniselt on näha, et võrrandil on kolm lahendit.Valime alglähenditeks
%-0.5 ja 1 ja 5.7.

%Defineerime võrrandi vasaku poole funktsioonina ja selle tuletise ka
f=@(x)x^3-6*x^2+3*atan(x)+3;
ftuletis=@(x)3*x^2-12*x+3/(1+x^2); %vajalik Newtoni meetodi jaoks

%Kontrollime HIM jaoks koonduvust
%Kui x avaldada x^3 juurest, siis
%g'(x)=(12*x-3/(1+x^2))/(3*nthroot((6*x^2-3*atan(x)-3)^2,3))
x=-0.5; %esimene alglähend
tuletis1=abs((12*x-3/(1+x^2))/(3*nthroot((6*x^2-3*atan(x)-3)^2,3)))%=12.26>1 ei sobi
x=1; %teine alglähend
tuletis2=abs((12*x-3/(1+x^2))/(3*nthroot((6*x^2-3*atan(x)-3)^2,3)))%=4.694>1 ei sobi
x=5.7; %kolmas alglähend
tuletis3=abs((12*x-3/(1+x^2))/(3*nthroot((6*x^2-3*atan(x)-3)^2,3)))%=0.6945<1 sobib

%Kui x avaldada x^2 juurest, siis
%g'(x)=(1/6*(3*x^2+3/(1+x^2)))/(2*sqrt(1/6*(x^3+3*atan(x)+3)))
x=-0.5; %esimene alglähend
tuletis1=abs((1/6*(3*x^2+3/(1+x^2)))/(2*sqrt(1/6*(x^3+3*atan(x)+3))))%=0.5278>1 sobib
x=1; %teine alglähend
tuletis2=abs((1/6*(3*x^2+3/(1+x^2)))/(2*sqrt(1/6*(x^3+3*atan(x)+3))))%=0.3643>1 sobib

%HIM lahendamine
x=-0.5; %alglähend jooniselt
i=0; %sammude arv
while abs(f(x))>10^-6
    x=-sqrt(1/6*(x^3+3*atan(x)+3)); %otsime negatiivset lahendit, sestap -
    i=i+1;
end
lahend1HIM=x
sammud1HIM=i

x=1; %alglähend jooniselt
i=0; %sammude arv
while abs(f(x))>10^-6
    x=sqrt(1/6*(x^3+3*atan(x)+3));%otsime positiivset lahendit
    i=i+1;
end
lahend2HIM=x
sammud2HIM=i

x=5.7; %kolmas alglähend
i=0; %sammude arv
while abs(f(x))>10^-6
    x=nthroot(6*x^2-3*atan(x)-3,3);
    i=i+1;
end
lahend3HIM=x
sammud3HIM=i

%Lahendame Newtoni meetodiga
x=-0.5; %alglähend
i=0; %sammude arv
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(x);
    i=i+1;
end
lahend1NM=x
sammud1NM=i

x=1; %alglähend
i=0; %sammude arv
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(x);
    i=i+1;
end
lahend2NM=x
sammud2NM=i

x=5.7; %alglähend
i=0; %sammude arv
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(x);
    i=i+1;
end
lahend3NM=x
sammud3NM=i

lahend1=[lahend1HIM lahend1NM sammud1HIM sammud1NM]
lahend2=[lahend2HIM lahend2NM sammud2HIM sammud2NM]
lahend3=[lahend3HIM lahend3NM sammud3HIM sammud3NM]