% Harjutustund nr. 4, ülesanne 4
f=@(x) x.^3-6*x.^2+3*atan(x)+3;
fplot(f,[-2,7])
yline(0)
grid on
% alglähenditeks võime võtta -0.5, 1.1 ja 5.8
ftuletis=@(x) 3*x.^2-12*x+3/(1+x.^2);
% lahendame Newtoniga
% a)alglähendi -0.5 korral
x=-0.5;
i=0;
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(x);  
    i=i+1;
end
lahend1newton=x
sammud1newton=i
% b)alglähendi 1.1 korral
x=1.1;
i=0;
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(x);  
    i=i+1;
end
lahend2newton=x
sammud2newton=i
% c)alglähendi 5.8 korral
x=5.8;
i=0;
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(x);  
    i=i+1;
end
lahend3newton=x
sammud3newton=i

% lahendame modifitseeritud Newtoni meetodiga
% a)alglähendi -0.5 korral
x=-0.5;
i=0;
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(-0.5);  
    i=i+1;
end
lahend1newtonmod=x
sammud1newtonmod=i
% b)alglähendi 1.1 korral
x=1.1;
i=0;
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(1.1);  
    i=i+1;
end
lahend2newtonmod=x
sammud2newtonmod=i
% c)alglähendi 5.8 korral
x=5.8;
i=0;
while abs(f(x))>10^-6
    x=x-f(x)/ftuletis(5.8);  
    i=i+1;
end
lahend3newtonmod=x
sammud3newtonmod=i

% 3. harilik iteratsioonimeetod
gtuletis=@(x) (1/(12*sqrt(1/6*(x^3+3*atan(x)+3))))*(3*x^2+3/(1+x^2));
% uurime koondumise tingimust |g'(x)|<1
abs(gtuletis(-0.5)) % sobib
abs(gtuletis(1.1)) % sobib
abs(gtuletis(5.8)) % ei sobi

% a) leiame lahendi hariliku iteratsioonimeetodiga, kui alglähend on -0.5
x=-0.5;
i=0;
while (abs(f(x)))>10^-6
    x=-sqrt(1/6*(x^3+3*atan(x)+3));
    i=i+1;
end
lahend1harilik=x
sammud1harilik=i
% b) leiame lahendi hariliku iteratsioonimeetodiga, kui alglähend on 1.1
x=1.1;
i=0;
while (abs(f(x)))>10^-6
    x=sqrt(1/6*(x^3+3*atan(x)+3));
    i=i+1;
end
lahend2harilik=x
sammud2harilik=i

% valime uue g ja uurime koondumise tingimust
gtuletis=@(x) 1/3*(6*x^2-3*atan(x)-3)^(-2/3)*(12*x-3/(1+x^2));
abs(gtuletis(5.8)) % sobib

% c) leiame lahendi hariliku iteratsioonimeetodiga, kui alglähend on 5.8
x=5.8;
i=0;
while (abs(f(x)))>10^-6
    x=nthroot(6*x^2-3*atan(x)-3,3);
    i=i+1;
end
lahend3harilik=x
sammud3harilik=i

% esitame erinevate meetodite lahendid nö kompaktselt
lahend1=[lahend1newton,lahend1newtonmod,lahend1harilik]
sammud1=[sammud1newton,sammud1newtonmod,sammud1harilik]
lahend2=[lahend2newton,lahend2newtonmod,lahend2harilik]
sammud2=[sammud2newton,sammud2newtonmod,sammud2harilik]
lahend3=[lahend3newton,lahend3newtonmod,lahend3harilik]
sammud3=[sammud3newton,sammud3newtonmod,sammud3harilik]