% Harjutustund nr. 4, ülesanne 4

% defineerime funktsiooni f
f=@(x) x.^3-6*x.^2+3*atan(x)+3;
% joonis
fplot(f,[-2,7])
yline(0)
grid on
% alglähenditeks võime võtta -0.5, 1 ja 5.5

% 1. lahendame Newtoni meetodiga
ftuletis=@(x) 3*x.^2-12*x+3./(1+x.^2);
x=-0.5;
i=0;
while (abs(f(x)))>10^-3
    x=x-f(x)/ftuletis(x);
    i=i+1;
end 
lahend1newton=x
sammud1newton=i

x=1.1;
i=0;
while (abs(f(x)))>10^-3
    x=x-f(x)/ftuletis(x);
    i=i+1;
end 
lahend2newton=x
sammud2newton=i

x=5.5;
i=0;
while (abs(f(x)))>10^-3
    x=x-f(x)/ftuletis(x);
    i=i+1;
end 
lahend3newton=x
sammud3newton=i

% 2. lahendame modifitseeritud Newtoni meetodiga
x=-0.5;
i=0;
while (abs(f(x)))>10^-3
    x=x-f(x)/ftuletis(-0.5);
    i=i+1;
end 
lahend1newtonmod=x
sammud1newtonmod=i

x=1;
i=0;
while (abs(f(x)))>10^-3
    x=x-f(x)/ftuletis(1);
    i=i+1;
end 
lahend2newtonmod=x
sammud2newtonmod=i

x=5.5;
i=0;
while (abs(f(x)))>10^-3
    x=x-f(x)/ftuletis(5.5);
    i=i+1;
end 
lahend3newtonmod=x
sammud3newtonmod=i

% 3.lahendame hariliku iteratsioonimeetodiga
g=@(x) nthroot(6*x.^2-3*atan(x)-3,3);
gtuletis=@(x) 1/3*(6*x.^2-3*atan(x)-3)^(-2/3)*(12*x-3./(1+x.^2));
% uurime koondumist, |g'(x)|<1
abs(gtuletis(-0.5)) % ei sobi
abs(gtuletis(1)) % ei sobi
abs(gtuletis(5.5)) % sobib

% lahendame hariliku it. meetodiga alglähendi 5.5 korral
x=5.5;
i=0;
while (abs(f(x)))>10^-3
    x=g(x);
    i=i+1;
end
lahend3harilik=x
sammud3harilik=i

% valime uue g(x)
uusg=@(x) sqrt(1/6*(x.^3+3*atan(x)+3));
uusgtuletis=@(x) 1./(2*sqrt(1/6*(x.^3+3*atan(x)+3)))*1/6*(3*x.^2+3./(1+x.^2));

% koondumise tingimuse uurimine
abs(uusgtuletis(-0.5)) % sobib
abs(uusgtuletis(1)) % sobib

% lahendame hariliku iteratsioonimeetodiga alglähendite -0.5 ja 1 korral
x=-0.5;
i=0;
while (abs(f(x)))>10^-3
    x=-uusg(x);
    i=i+1;
end
lahend1harilik=x
sammud1harilik=i

x=1;
i=0;
while (abs(f(x)))>10^-3
    x=uusg(x);
    i=i+1;
end
lahend2harilik=x
sammud2harilik=i

% võrdleme tulemusi, esitame lahendid eri meetoditega 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]