% Harjutustund 4, ülesanne 4
y=@(x) x^3-6*x^2+3*atan(x)+3;
ytuletis=@(x) 3*x^2-12*x+3*1/(1+x^2);
fplot(y,[-1,7])
yline(0)
% alglähendid -0.5, 1.1 ja 5.7
grid on
% 1) Newtoni meetod
x=-0.5;
sammud=0;
while abs(y(x))>10^(-6)
 x=x-y(x)/ytuletis(x);
 sammud=sammud+1;
end
lahend1newton=x
sammud1newton=sammud

x=1.1;
sammud=0;
while abs(y(x))>10^(-6)
 x=x-y(x)/ytuletis(x);
 sammud=sammud+1;
end
lahend2newton=x
sammud2newton=sammud

x=5.7;
sammud=0;
while abs(y(x))>10^(-6)
 x=x-y(x)/ytuletis(x);
 sammud=sammud+1;
end
lahend3newton=x
sammud3newton=sammud
% 2) modifitseeritud Newtoni meetod
x=-0.5;
sammud=0;
while abs(y(x))>10^(-6)
 x=x-y(x)/ytuletis(-0.5); % mod. Newtoni meetod
 sammud=sammud+1;
end
lahend1newtonmod=x
sammud1newtonmod=sammud

x=1.1;
sammud=0;
while abs(y(x))>10^(-6)
 x=x-y(x)/ytuletis(1.1); % mod. Newtoni meetod
 sammud=sammud+1;
end
lahend2newtonmod=x
sammud2newtonmod=sammud

x=5.7;
sammud=0;
while abs(y(x))>10^(-6)
 x=x-y(x)/ytuletis(5.7);
 sammud=sammud+1;
end
lahend3newtonmod=x
sammud3newtonmod=sammud
% võrdlus
[sammud1newton,sammud2newton,sammud3newton]
[sammud1newtonmod,sammud2newtonmod,sammud3newtonmod]
% 3) harilik iteratsioonimeetod
g=@(x) nthroot(6*x^2-3*atan(x)-3,3);
gtuletis=@(x) 1/(3*nthroot((6*x^2-3*atan(x)-3)^2,3))*(12*x-3/(1+x^2));
abs(gtuletis(-0.5)) % >1, ei sobi. Alglähendi -0.5 jaoks tuleb leida
% uus g(x) - mis koonduks
abs(gtuletis(1.1)) % >1, ei sobi. Tuleb ka valida uus g(x), mis koonduks
abs(gtuletis(5.7)) %<1, sobib. Alglähendi 5.7 korral harilik it. meetod koondub

x=5.7;
sammud=0;
while abs(y(x))>10^(-6)
 x=g(x);  % hariliku it. meetodi eeskiri
 sammud=sammud+1;
end
lahend3harilik=x
sammud3harilik=sammud

% leiame alglähendite -0.5 ja 1.1 jaoks uue g(x)-i
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));
abs(uusgtuletis(-0.5)) % <1, sobib
abs(uusgtuletis(1.1)) % <1, sobib

x=-0.5;
sammud=0;
while abs(y(x))>10^(-6)
 x=-uusg(x);  % uus hariliku it. meetodi kuju. Lahend - märgiga, ees -
 sammud=sammud+1;
end
lahend1harilik=x
sammud1harilik=sammud

x=1.1;
sammud=0;
while abs(y(x))>10^(-6)
 x=uusg(x);  % uus hariliku it. meetodi kuju. Lahend + märgiga
 sammud=sammud+1;
end
lahend2harilik=x
sammud2harilik=sammud
[sammud1harilik,sammud2harilik,sammud3harilik]
[sammud1newton,sammud2newton,sammud3newton]
[sammud1newtonmod,sammud2newtonmod,sammud3newtonmod]
