% Harjutustund 3, ülesanne 3
% lahendame võrrandi hariliku iteratsioonimeetodiga
% x^3-8*x+2=0
y=@(x) x^3-8*x+2;
fplot(y)
yline(0) 
grid on
% jooniselt on näha, et alglähenditeks võime võtta -3, 0 ja 2.5

% 1) avaldame võrrandist x^3-8*x+2=0 suuruse x
% saame hariliku iteratsioonimeetodi kuju x=g(x) 
g=@(x) 1/8*(x^3+2);
% vaatleme harilikku it. meetodit alglähendi -3 korral 
esimenel2hend=g(-3)
teinel2hend=g(esimenel2hend)
kolmasl2hend=g(teinel2hend)
[esimenel2hend,teinel2hend,kolmasl2hend]
% antud g(x) ei sobi alglähendi -3 jaoks, kuna iga järgnev lähend läheb
% -3st
% eemale, st hajub
% tuleb valida uus g(x) alglähendi -3 jaoks

% uurime koondumise tingimust |g'(x)|<1
gtuletis=@(x) 3/8*x^2;
abs(gtuletis(-3)) % ei sobi, kuna 3.3750>1
abs(gtuletis(0)) % sobib, kuna 0<1
abs(gtuletis(2.5)) % ei sobi, kuna 2.3438>1

% leiame alglähendile 0 vastava lahendi hariliku iteratsioonimeetodiga
% võtame näiteks täpsuseks 10^(-3)
x=0;
sammud=0;
while abs(y(x))>10^(-3)
  x=g(x); % eeskiri
  sammud=sammud+1;
end
lahend2=x
sammud2=sammud

% alglähendite -3 ja 2.5 jaoks tuleb valida uus g(x)
uusg=@(x) nthroot(8*x-2,3);
uusgtuletis=@(x) 8/(3*nthroot((8*x-2)^2,3));
% uurime koondumise tingimust
abs(uusgtuletis(-3)) % <1, sobib
abs(uusgtuletis(2.5)) % <1, sobib   

x=-3;
sammud=0;
while abs(y(x))>10^(-3)
  x=uusg(x); % eeskiri
  sammud=sammud+1;
end
lahend1=x
sammud1=sammud

x=2.5;
sammud=0;
while abs(y(x))>10^(-3)
  x=uusg(x); % eeskiri
  sammud=sammud+1;
end
lahend3=x
sammud3=sammud

