% Harjutustund nr. 6, ülesanne 2
% lahendame mittelineaarse võrrandisüsteemi
% teeme joonise alglähendite leidmiseks
ezplot('x^2+2*y-8=0')
hold on
ezplot('x+y^2-y-3=0')
hold on
grid on
% alglähendid (-3.5,-2.2), (-1.6,2.5), (2.2,1.1) ja (2.8,0)

% a) alglähendi (-3.5,-2.2) koondumise kontroll
x=-3.5;
y=-2.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ähendi (-1.6,2.5) koondumise kontroll
x=-1.6;
y=2.5;
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ähendi (2.2,1.1) koondumise kontroll
x=2.2;
y=1.1;
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.8,0) koondumise kontroll
x=2.8;
y=0;
Gtuletis=[0,-1/sqrt(8-2*y);-1/(2*sqrt(y+3-x)),1/(2*sqrt(y+3-x))];
norm(Gtuletis,1) % sobib

% defineerime funktsiooni F
F=@(z) [z(1).^2+2*z(2)-8,z(1)+z(2).^2-z(2)-3];
% a) esimese alglähendi (-3.5,-2.2)  korral 
z=[-3.5,-2.2];
i=0;
% defineerime G vektorkujul G=[g_1,g_2]
G=@(z) [-sqrt(8-2*z(2)),-sqrt(z(2)+3-z(1))];
while (norm(F(z),1))>10^-6
     z=G(z);
     i=i+1;
end
lahend1h=z
sammud1=i
% b) teise alglähendi (-1.6,2.5)  korral 
z=[-1.6,2.5];
i=0;
% defineerime G vektorkujul G=[g_1,g_2]
G=@(z) [-sqrt(8-2*z(2)),sqrt(z(2)+3-z(1))];
while (norm(F(z),1))>10^-6
     z=G(z);
     i=i+1;
end
lahend2h=z
sammud2=i
% c) teise alglähendi (2.2,1.1)  korral 
z=[2.2,1.1];
i=0;
% defineerime G vektorkujul G=[g_1,g_2]
G=@(z) [sqrt(8-2*z(2)),sqrt(z(2)+3-z(1))];
while (norm(F(z),1))>10^-6
     z=G(z);
     i=i+1;
end
lahend3h=z
sammud3=i

% uurime koondumist neljanda alglähendi korral
% valisime uue g_1 ja g_2
x=2.8;
y=0;
uusGtuletis=[0,-1/sqrt(8-2*y);1,2*y];
norm(uusGtuletis,1) % ~1 loeme sobivaks

% leiame neljanda alglähendi korral lahendi hariliku it. meetodiga
z=[2.8,0];
i=0;
% defineerime G vektorkujul G=[g_1,g_2]
G=@(z) [sqrt(8-2*z(2)),z(1)+z(2).^2-3];
while (norm(F(z),1))>10^-6
     z=G(z);
     i=i+1;
end
lahend4h=z
sammud4=i

% lahendame Newtoni meetodiga
% a) alglähendi (-3.5,-2.2) korral
z=[-3.5;-2.2]; % ! veeruvektor
i=0;
% defineerime tuletise maatriksi
Ftuletis=@(z) [2*z(1),2;1,2*z(2)-1];
while (norm(F(z),1))>10^-6
    z=z-inv(Ftuletis(z))*F(z)'; % transponeerisime F(z), kuna siin peab olema 
    % veeruvektor !!!
    i=i+1;
end
lahend1n=z
sammud1n=i
% b) alglähendi (-1.6,2.5) korral
z=[-1.6;2.5]; % ! veeruvektor
i=0;
while (norm(F(z),1))>10^-6
    z=z-inv(Ftuletis(z))*F(z)'; % transponeerisime F(z), kuna siin peab olema 
    % veeruvektor !!!
    i=i+1;
end
lahend2n=z
sammud2n=i
% c) alglähendi (2.2,1.1) korral
z=[2.2;1.1]; % ! veeruvektor
i=0;
while (norm(F(z),1))>10^-6
    z=z-inv(Ftuletis(z))*F(z)'; % transponeerisime F(z), kuna siin peab olema 
    % veeruvektor !!!
    i=i+1;
end
lahend3n=z
sammud3n=i
% d) alglähendi (2.8,0) korral
z=[2.8;0]; % ! veeruvektor
i=0;
while (norm(F(z),1))>10^-6
    z=z-inv(Ftuletis(z))*F(z)'; % transponeerisime F(z), kuna siin peab olema 
    % veeruvektor !!!
    i=i+1;
end
lahend4n=z
sammud4n=i