% Tund nr 6, ülesanne 2
% lahendame võrrandisüsteemi hariliku iteratsioonimeetodiga
% huvitab, millised on alglähendid
% teeme joonise alglähendite määramiseks
ezplot('x^2+2*y-8=0',[-4,4,-3,4])
hold on
grid on
m=ezplot('x+y^2-y-3=0',[-4,4,-3,4])
set(m,'color','r')
hold off
% jooniselt on näha, et alglähenditeks võime võtta 
% (-3.5;-2) ja (-1.5;2.6) ja (2.2;1.5) ja (3;0)
% lahendame hariliku iteratsioonimeetodiga (HIM)
% valime G ja leiame siis G'(x)-i
% 1) esimese alglähendi korral
x=-3.5;
y=-2;
G=[-x,0;0,1-2*y];
norm(G,1) % ei sobi
% 2) teise alglähendi korral
x=-1.5;
y=2.6;
G=[-x,0;0,1-2*y];
norm(G,1) % ei sobi
% 3) kolmanda alglähendi korral
x=2.2;
y=1.5;
G=[-x,0;0,1-2*y];
norm(G,1) % ei sobi
% 4) neljanda alglähendi korral
x=3;
y=0;
G=[-x,0;0,1-2*y];
norm(G,1) % ei sobi
% valime uue G, kuna eelmine ei sobi ühegi alglähendi korral
% 1) esimese alglähendi korral
x=-3.5;
y=-2;
G=[0,-1/sqrt(8-2*y);1,2*y];
norm(G,1) % ei sobi
% 2) teise alglähendi korral
x=-1.5;
y=2.6;
G=[0,-1/sqrt(8-2*y);1,2*y];
norm(G,1) % ei sobi
% 3) kolmanda alglähendi korral
x=2.2;
y=1.5;
G=[0,-1/sqrt(8-2*y);1,2*y];
norm(G,1) 
% 4) neljanda alglähendi korral
x=3;
y=0;
G=[0,-1/sqrt(8-2*y);1,2*y];
norm(G,1) % on ligikaudu < 1
% defineerime kõigepealt võrrandisüsteemile vastava 
% vektorfunktsiooni F, x=z(1) ja y=z(2)
F=@(z) [z(1)^2+2*z(2)-8,z(1)+z(2)^2-z(2)-3];
i=0;
while norm(F(z),1)>10^-6
    z(1)=sqrt(8-2*z(2));
    z(2)=z(1)+z(2)^2-3;
    i=i+1;
end
lahend1h=z
sammud1h=i
kontroll1h=F(lahend1h)

% valime uue G esimese kolme alglähendi jaoks
% uurime koondumise piisavat tingimust
% 1) esimese alglähendi korral
x=-3.5;
y=-2;
uusG=[0,-1/sqrt(8-2*y);-1/(2*sqrt(3+y-x)),1/(2*sqrt(3+y-x))];
norm(uusG,1) % sobib, kuna norm G'(x) < 1
% 2) teise alglähendi korral
x=-1.5;
y=2.6;
uusG=[0,-1/sqrt(8-2*y);-1/(2*sqrt(3+y-x)),1/(2*sqrt(3+y-x))];
norm(uusG,1) % sobib, kuna norm G'(x) < 1
% 3) kolmanda alglähendi korral
x=2.2;
y=1.5;
uusG=[0,-1/sqrt(8-2*y);-1/(2*sqrt(3+y-x)),1/(2*sqrt(3+y-x))];
norm(uusG,1) % sobib, kuna norm G'(x) < 1
% 1) esimese alglähendi korral HIM
z=[-3.5,-2];
i=0;
while norm(F(z),1)>10^-6
    z(1)=-sqrt(8-2*z(2));
    z(2)=-sqrt(3+z(2)-z(1));
    i=i+1;
end
lahend1h=z
sammud1h=i
kontroll1h=F(lahend1h)
% 2) teise alglähendi korral HIM
z=[-1.5,2.6];
i=0;
while norm(F(z),1)>10^-6
    z(1)=-sqrt(8-2*z(2));
    z(2)=sqrt(3+z(2)-z(1));
    i=i+1;
end
lahend2h=z
sammud2h=i
kontroll2h=F(lahend2h)
% 3) kolmanda alglähendi korral HIM
z=[2.2,1.5];
i=0;
while norm(F(z),1)>10^-6
    z(1)=sqrt(8-2*z(2));
    z(2)=sqrt(3+z(2)-z(1));
    i=i+1;
end
lahend3h=z
sammud3h=i
kontroll3h=F(lahend3h)

% lahendame võrrandisüsteemi Newtoni meetodiga
% defineerime F(x)-i, kus x=z(1) ja y=z(2)
F=@(z) [z(1)^2+2*z(2)-8;z(1)+z(2)^2-z(2)-3]; % veeruvektor !!!
% 1) lahendame Newtoni meetodiga esimese alglähendi korral
z=[-3.5;-2]; % veeruvektor !!!
i=0;
while norm(F(z),1)>10^-6
    Ftuletis=[2*z(1),2;1,2*z(2)-1];
    z=z-inv(Ftuletis)*F(z);
    i=i+1;
end
lahend1n=z
sammud1n=i