% Tund nr. 5, ülesanne 2
f=@(x) x^3-6*x^2+3*atan(x)+3;
fplot(f,[-1,6])
yline(0)
grid on
% alglähenditeks võime võtta -0.5, 1 ja 5.8
x=-0.5;
gtuletis=(1/3)*(6*x^2-3*atan(x)-3)^(-2/3)*(12*x-3/(1+x^2));
abs(gtuletis) % ei sobi
x=1;
gtuletis=(1/3)*(6*x^2-3*atan(x)-3)^(-2/3)*(12*x-3/(1+x^2));
abs(gtuletis) % ei sobi
x=5.8;
gtuletis=(1/3)*(6*x^2-3*atan(x)-3)^(-2/3)*(12*x-3/(1+x^2));
abs(gtuletis) % sobib

% valime uue g(x)-i, koondumist
x=-0.5;
gtuletis=1/(2*sqrt((1/6)*(x^3+3*atan(x)+3)))*(1/6)*(3*x^2+3/(1+x^2))
abs(gtuletis) % sobib
x=1;
gtuletis=1/(2*sqrt((1/6)*(x^3+3*atan(x)+3)))*(1/6)*(3*x^2+3/(1+x^2))
abs(gtuletis) % sobib

% leiame alglähenditele vastavad lahendid
% hariliku iteratsioonimeetodiga
x=5.8;
i=0;
while abs(f(x))>10^(-12)
  x=nthroot(6*x^2-3*atan(x)-3,3);
  i=i+1;
end
lahend3harilik=x
sammud3harilik=i

x=-0.5;
i=0;
while abs(f(x))>10^(-12)
  x=-sqrt((1/6)*(x^3+3*atan(x)+3));
  i=i+1;
end
lahend1harilik=x
sammud1harilik=i

x=1;
i=0;
while abs(f(x))>10^(-12)
  x=sqrt((1/6)*(x^3+3*atan(x)+3));
  i=i+1;
end
lahend2harilik=x
sammud2harilik=i

% Newtoni meetodiga
ftuletis=@(x) 3*x^2-12*x+3/(1+x^2);

x=-0.5;
i=0;
while abs(f(x))>10^(-12)
  x=x-f(x)/ftuletis(x); 
  i=i+1;
end
lahend1newton=x
sammud1newton=i

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

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

% lahendame modifitseeritud Newtoni meetodiga
% st f'(x_(n-1)) korral on kogu aeg f'(alglähend)
x=-0.5;
i=0;
while abs(f(x))>10^(-12)
  x=x-f(x)/ftuletis(-0.5); 
  i=i+1;
end
lahend1newtonmod=x
sammud1newtonmod=i

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

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

sammud1=[sammud1harilik,sammud1newton,sammud1newtonmod]
sammud2=[sammud2harilik,sammud2newton,sammud2newtonmod]
sammud3=[sammud3harilik,sammud3newton,sammud3newtonmod]