% harjutustund nr. 6, ülesanne 2
% joonis, alglähendid
ezplot('x^2+2*y-8=0')
hold on
ezplot('x+y^2-y-3=0')
hold off 
grid on
% alglähendid (-3.5,-2),(-1.8,2.9),(2.1,1.8) ja (2.9,-0.1)
% uurime koondumise tingimust alglähendite korral
% a) alglähendi (-3.5,-2) korral 
x=-3.5;
y=-2;
Gtuletis=[0 -1/sqrt(8-2*y)
    -1/(2*sqrt(y+3-x)) 1/(2*sqrt(y+3-x))];
norm(Gtuletis,1) % sobib, kuna 0.5244<1
% b) alglähendi (-1.8,2.9) korral 
x=-1.8;
y=2.9;
Gtuletis=[0 -1/sqrt(8-2*y)
    -1/(2*sqrt(y+3-x)) 1/(2*sqrt(y+3-x))];
norm(Gtuletis,1) % sobib, kuna 0.8544<1
% c) alglähendi (2.1,1.8) korral 
x=2.1;
y=1.8;
Gtuletis=[0 -1/sqrt(8-2*y)
    -1/(2*sqrt(y+3-x)) 1/(2*sqrt(y+3-x))];
norm(Gtuletis,1) % sobib

% d) alglähendi (2.6,0.3) korral 
x=2.6;
y=0.3;
Gtuletis=[0 -1/sqrt(8-2*y)
    -1/(2*sqrt(y+3-x)) 1/(2*sqrt(y+3-x))];
norm(Gtuletis,1) % sobib
% muutsime alglähendit (2.9,-0.1), võtsime selle asemel (2.6,0.3)

% lahendame hariliku iteratsioonimeetodiga

% defineerime F, x=z(1), y=z(2)
F=@(z) [z(1).^2+2*z(2)-8,z(1)+z(2).^2-z(2)-3];

% a) alglähend (-3.5,-2)
z=[-3.5,-2];
% vektorfunktsioon G
G=@(z) [-sqrt(8-2*z(2)),-sqrt(z(2)+3-z(1))];
i=0;
while (norm(F(z),1))>10^-6
      z=G(z);
      i=i+1;
end
lahend1=z
sammud1=i
% b) alglähend (-1.8,2.9)
z=[-1.8,2.9];
G=@(z) [-sqrt(8-2*z(2)),sqrt(z(2)+3-z(1))];
i=0;
while (norm(F(z),1))>10^-6
      z=G(z);
      i=i+1;
end
lahend2=z
sammud2=i
% c) alglähend (2.1,1.8)
z=[2.1,1.8];
G=@(z) [sqrt(8-2*z(2)),sqrt(z(2)+3-z(1))];
i=0;
while (norm(F(z),1))>10^-6
      z=G(z);
      i=i+1;
end
lahend3=z
sammud3=i
% d) alglähend (2.6,0.3)
z=[2.6,0.3];
G=@(z) [sqrt(8-2*z(2)),sqrt(z(2)+3-z(1))];
i=0;
while (norm(F(z),1))>10^-6
      z=G(z);
      i=i+1;
end
lahend4=z
sammud4=i

% leiame 4ndale alglähendile uue sobiva g_1 ja g_2
% alglähend (2.9,-0.1)
% koonduvus
x=2.9;
y=-0.1;
uusGtuletis=[0,-1/sqrt(8-2*y);1,2*y];
norm(uusGtuletis,1)
% lahendame hariliku iteratsioonimeetodiga
z=[2.9,-0.1];
G=@(z) [sqrt(8-2*z(2)),z(1)+z(2).^2-3];
i=0;
while (norm(F(z),1))>10^-6
      z=G(z);
      i=i+1;
end
lahend4uus=z
sammud4uus=i

% lahendame võrrandisüsteemi Newtoni meetodiga
% defineerime vektorfunktsiooni F(z)=(f_(z),f_2(z)),
% z=(x,y) ja x=z(1), y=z(2)
F=@(z) [z(1).^2+2*z(2)-8;z(1)+z(2).^2-z(2)-3]; % ! veeruvektor!!!
% leiame F-i tuletiste maatriksi ehk Jacobi maatriksi
Ftuletis=@(z) [2*z(1),2;1,2*z(2)-1];
% leiame alglähendile (-3.5,-2) vastava lahendi Newtoni meetodiga
z=[-3.5;-2]; ! veeruvektor
i=0;
while (norm(F(z),1))>10^-6
    z=z-inv(Ftuletis(z))*F(z);
    i=i+1;
end
lahend1newton=z
sammud1newton=i
% vordleme kahte meetodit
lahendv1=[lahend1,lahend1newton']
sammudv1=[sammud1,sammud1newton]

% leiame alglähendile (-1.8,2.9) vastava lahendi Newtoni meetodiga
z=[-1.8;2.9]; ! veeruvektor
i=0;
while (norm(F(z),1))>10^-6
    z=z-inv(Ftuletis(z))*F(z);
    i=i+1;
end
lahend2newton=z
sammud2newton=i
% vordleme kahte meetodit
lahendv2=[lahend2,lahend2newton']
sammudv2=[sammud2,sammud2newton]

% leiame alglähendile (2.1,1.8) vastava lahendi Newtoni meetodiga
z=[2.1;1.8]; ! veeruvektor
i=0;
while (norm(F(z),1))>10^-6
    z=z-inv(Ftuletis(z))*F(z);
    i=i+1;
end
lahend3newton=z
sammud3newton=i
% vordleme kahte meetodit
lahendv3=[lahend3,lahend3newton']
sammudv3=[sammud3,sammud3newton]

% leiame alglähendile (2.9,-0.1) vastava lahendi Newtoni meetodiga
z=[2.9;-0.1]; ! veeruvektor
i=0;
while (norm(F(z),1))>10^-6
    z=z-inv(Ftuletis(z))*F(z);
    i=i+1;
end
lahend4newton=z
sammud4newton=i
