% Harjutustund 7, ülesanne 11
% võrrandisüsteemis olevad funktsioonid joonisele -> alglähendid
ezplot('x^2+2*y-8=0')
hold on
ezplot('x+y^2-y-3=0')
hold off
yline(0)
grid on
% alglähendid: (3.5,-2.1),(-1.6,2.7),(2.3,1.4) ja (2.8,-0.1)
% 1) lahendame võrrandisüsteemi hariliku it. meetodiga
% koondumise tingimuse uurimine
x=-3.5;
y=-2.1;
Gtuletis=[0 -1/sqrt(8-2*y)
    -1/(2*sqrt(y+3-x)) 1/(2*sqrt(y+3-x))];
norm(Gtuletis,1) % <1, sobib
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
x=2.3;
y=1.4;
Gtuletis=[0 -1/sqrt(8-2*y)
    -1/(2*sqrt(y+3-x)) 1/(2*sqrt(y+3-x))];
norm(Gtuletis,1) % sobib

x=2.8;
y=-0.1;
Gtuletis=[0 -1/sqrt(8-2*y)
    -1/(2*sqrt(y+3-x)) 1/(2*sqrt(y+3-x))];
norm(Gtuletis,1) % ei sobi, kuna >1

% kolme esimese alglähendi korral valitud g_1 ja g_2 sobisid
% leiame siis nendele alglähenditele vastavad lahendid
% defineerime vektorfunktsiooni F(z), z=(x,y), x=z(1) ja y=z(2)
F=@(z) [z(1)^2+2*z(2)-8,z(1)+z(2)^2-z(2)-3];

z=[-3.5,-2.1]; % alglähend vektorina
sammud=0;
while norm(F(z),1)>10^(-5)
  z(1)=-sqrt(8-2*z(2));   % z(1)=x, hariliku it. meetodi x-i eeskiri
  z(2)=-sqrt(z(2)+3-z(1));  % z(2)=y, hariliku it. meetodi y-i eeskiri
  sammud=sammud+1;
end
lahend1harilik=z
sammud1harilik=sammud

z=[-1.6,2.7]; % alglähend vektorina
sammud=0;
while norm(F(z),1)>10^(-5)
  z(1)=-sqrt(8-2*z(2));   % z(1)=x, hariliku it. meetodi x-i eeskiri
  z(2)=sqrt(z(2)+3-z(1));  % z(2)=y, hariliku it. meetodi y-i eeskiri
  sammud=sammud+1;
end
lahend2harilik=z
sammud2harilik=sammud

z=[2.3,1.4]; % alglähend vektorina
sammud=0;
while norm(F(z),1)>10^(-5)
  z(1)=sqrt(8-2*z(2));   % z(1)=x, hariliku it. meetodi x-i eeskiri
  z(2)=sqrt(z(2)+3-z(1));  % z(2)=y, hariliku it. meetodi y-i eeskiri
  sammud=sammud+1;
end
lahend3harilik=z
sammud3harilik=sammud

% leiame neljandale alglähendile (2.8,-0.1) vastava koonduva hariliku it.
% meetodi
x=2.8;
y=-0.1;
uusGtuletis=[0 -1/sqrt(8-2*y)
    1 2*y];  % tuletiste maatriks ehk jacobi maatriks
norm(uusGtuletis,1)

z=[2.8,-0.1]; % alglähend vektorina
sammud=0;
while norm(F(z),1)>10^(-5)
  z(1)=sqrt(8-2*z(2));   % z(1)=x, hariliku it. meetodi x-i eeskiri
  z(2)=z(1)+z(2)^2-3;  % z(2)=y, hariliku it. meetodi y-i eeskiri
  sammud=sammud+1;
end
lahend4harilik=z
sammud4harilik=sammud

% 2) lahendame vorrandisysteemi Newtoni meetodiga
Ftuletis=@(z) [2*z(1) 2
    1 2*z(2)-1]; % f1 ja f2 osatuletiste maatriks, nn Jacobi maatriks
z=[-3.5;-2.1]; % alglahend veeruvektorina
sammud=0;
while norm(F(z),1)>10^(-5)
  z=z-inv(Ftuletis(z))*F(z)'; % Newtoni meetodi eeskiri
  sammud=sammud+1;
end
lahend1newton=z
sammud1newton=sammud
[sammud1harilik sammud1newton]

z=[-1.6;2.7]; % alglahend veeruvektorina
sammud=0;
while norm(F(z),1)>10^(-5)
  z=z-inv(Ftuletis(z))*F(z)'; % Newtoni meetodi eeskiri
  sammud=sammud+1;
end
lahend2newton=z
sammud2newton=sammud
[sammud2harilik sammud2newton]

z=[2.3;1.4]; % alglahend veeruvektorina
sammud=0;
while norm(F(z),1)>10^(-5)
  z=z-inv(Ftuletis(z))*F(z)'; % Newtoni meetodi eeskiri
  sammud=sammud+1;
end
lahend3newton=z
sammud3newton=sammud
[sammud3harilik sammud3newton]

z=[2.8;-0.1]; % alglahend veeruvektorina
sammud=0;
while norm(F(z),1)>10^(-5)
  z=z-inv(Ftuletis(z))*F(z)'; % Newtoni meetodi eeskiri
  sammud=sammud+1;
end
lahend4newton=z
sammud4newton=sammud
[sammud4harilik sammud4newton]