% Harjutustund nr. 6, ülesanne 2
% alglähendid jooniselt
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.6,2.7), (2.2,1.5) ja (2.7,-0.2)
% koonduvuse uurimine
% a) alglähend (-3.5,-2)
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
% b) alglähend (-1.6,2.7)
x=-1.6;
y=2.7;
Gtuletis=[0,-1/sqrt(8-2*y);-1/(2*sqrt(y+3-x)),1/(2*sqrt(y+3-x))];
norm(Gtuletis,1) % sobib
% c) alglähend (2.2,1.5)
x=2.2;
y=1.5;
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ähend (2.7,-0.2)
x=2.7;
y=-0.2;
Gtuletis=[0,-1/sqrt(8-2*y);-1/(2*sqrt(y+3-x)),1/(2*sqrt(y+3-x))];
norm(Gtuletis,1) % ei sobi

% lahendame hariliku iteratsioonimeetodiga

% defineerime F-i
F=@(z) [z(1).^2+2*z(2)-8,z(1)+z(2).^2-z(2)-3];
% a) (-3.5,-2)
z=[-3.5,-2]; % alglähendi koordinaadid reavektori kujul
i=0;
% defineerime funktsiooni G
G=@(z) [-sqrt(8-2*z(2)),-sqrt(z(2)+3-z(1))];
while (norm(F(z)))>10^-3
    z=G(z);
    i=i+1;
end
lahend1har=z
sammud1har=i
% b) (-1.6,2.7)
z=[-1.6,2.7]; % alglähendi koordinaadid reavektori kujul
i=0;
% defineerime funktsiooni G
G=@(z) [-sqrt(8-2*z(2)),sqrt(z(2)+3-z(1))];
while (norm(F(z)))>10^-3
    z=G(z);
    i=i+1;
end
lahend2har=z
sammud2har=i
% c) (2.2,1.5)
z=[2.2,1.5]; % alglähendi koordinaadid reavektori kujul
i=0;
% defineerime funktsiooni G
G=@(z) [sqrt(8-2*z(2)),sqrt(z(2)+3-z(1))];
while (norm(F(z)))>10^-3
    z=G(z);
    i=i+1;
end
lahend3har=z
sammud3har=i

% alglähend (2.7,-0.2)
% koonduvuse uurimine
x=2.7;
y=-0.2;
Gtuletis=[0,-1/sqrt(8-2*y);1,2*y];
norm(Gtuletis,1)
% lahendame hariliku iter. meetodiga
z=[2.7,-0.2];
i=0;
G=@(z) [sqrt(8-2*z(2)),z(1)+z(2).^2-3];
while (norm(F(z)))>10^-3
    z=G(z);
    i=i+1;
end
lahend4har=z
sammud4har=i

% 2. lahendame Newtoni meetodiga
% F on defineeritud
F=@(z) [z(1).^2+2*z(2)-8;z(1)+z(2).^2-z(2)-3]; % ! veeruvektor!!!
% defineerime F-i tuletiste maatriksi ehk Jacobi maatriksi
Ftuletis=@(z) [2*z(1),2;1,2*z(2)-1];

% a) alglähend (-3.5,-2)
z=[-3.5;-2]; % !!! veeruvektor
i=0;
while (norm(F(z)))>10^-3
    z=z-inv(Ftuletis(z))*F(z);
    i=i+1;
end
lahend1newton=z
sammud1newton=i
% b) alglähend (-1.6,2.7)
z=[-1.6;2.7]; % !!! veeruvektor
i=0;
while (norm(F(z)))>10^-3
    z=z-inv(Ftuletis(z))*F(z);
    i=i+1;
end
lahend2newton=z
sammud2newton=i
% c) alglähend (2.2,1.5)
z=[2.2;1.5]; % !!! veeruvektor
i=0;
while (norm(F(z)))>10^-3
    z=z-inv(Ftuletis(z))*F(z);
    i=i+1;
end
lahend3newton=z
sammud3newton=i
% d) alglähend (2.7,-0.2)
z=[2.7;-0.2]; % !!! veeruvektor
i=0;
while (norm(F(z)))>10^-3
    z=z-inv(Ftuletis(z))*F(z);
    i=i+1;
end
lahend4newton=z
sammud4newton=i