%Joonis alglähendite leidmiseks
ezplot('x^2+2*y-8=0')
hold on
h=ezplot('x+y^2-y-3=0')
set(h,'color','r')
hold off
title('Alglähendite leidmine graafiliselt')
legend('x^2+2*y-8=0','x+y^2-y-3=0')
grid on
%Jooniselt on näha, et võrrandisüsteemil on 4 lahendit (joontel on 4
%lõikepunkti). Valime lõikepunktide koordinaadid alglähenditeks. Meile
%sobivad (-3.5,-2) ja (-1.5,2.5) ja (2.5,1.5) ja (3,-0.1).

%Kontrollime HIM koonduvust.
%1) Avaldasime esimesest võrrandist x x^2 liikmest ja teisest võrrandist y
%y^2 liikmest.
%Esimene lahend
%x=-3.5; %esimese lõikepunkti x koordinaat
%y=-2; %esimese lõikepunkti y koordinaat
%Gtuletis(1,1)=0;
%Gtuletis(1,2)=1/sqrt(8-2*y);
%Gtuletis(2,1)=1/(2*sqrt(3+y-x));
%Gtuletis(2,2)=1/(2*sqrt(3+y-x));
%tuletis=norm(Gtuletis,1)=0.5244 SOBIB , koonduv HIM olemas

%teine lahend
%x=-1.5; %teise lõikepunkti x koordinaat
%y=2.5; %teise lõikepunkti y koordinaat
%Gtuletis(1,1)=0;
%Gtuletis(1,2)=1/sqrt(8-2*y);
%Gtuletis(2,1)=1/(2*sqrt(3+y-x));
%Gtuletis(2,2)=1/(2*sqrt(3+y-x));
%tuletis=norm(Gtuletis,1))=0.7663 SOBIB, koonduv HIM on olemas

%kolmas lahend
%x=2.5; %kolmanda lõikepunkti x koordinaat
%y=1.5; %kolmanda lõikepunkti y koordinaat
%Gtuletis(1,1)=0;
%Gtuletis(1,2)=1/sqrt(8-2*y);
%Gtuletis(2,1)=1/(2*sqrt(3+y-x));
%Gtuletis(2,2)=1/(2*sqrt(3+y-x));
%tuletis=norm(Gtuletis,1)=0.8008 SOBIB, koonduv HIM olemas

%neljas lahend
x=3; %neljanda lõikepunkti x koordinaat
y=-0.1; %neljanda lõikepunkti y koordinaat
%Gtuletis(1,1)=0;
%Gtuletis(1,2)=1/sqrt(8-2*y);
%Gtuletis(2,1)=1/(2*sqrt(3+y-x));
%Gtuletis(2,2)=1/(2*sqrt(3+y-x));
%tuletis=norm(Gtuletis,1)=1.9304 EI SOBI
%avaldame esialgsest süsteemist teisest võrrandist y teisest liikmest
%Gtuletis(1,1)=0;
%Gtuletis(1,2)=1/sqrt(8-2*y);
%Gtuletis(2,1)=1;
%Gtuletis(2,2)=2*y;
%tuletis=norm(Gtuletis,1)=1 SOBIB TINGIMISI 

%Defineerime abifunktsioonidest (võrrandisüsteemi vasakud pooled)
%vektorfunktsiooni, 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]; %NB! Veeruvektor!!!

%Lahendame HIM abil
%Esimene lahend
z=[-3.5,-2]; %esimese lõikepunkti koordinaadid vektorina
i=0; %sammude loendur
while norm(F(z),1)>10^-5 %%10^-5 meie valitud täpsus
    z(1)=-sqrt(8-2*z(2));
    z(2)=-sqrt(3+z(2)-z(1));
    i=i+1;
end
lahend1HIM=z;
sammud1HIM=i;

%teine lahend
z(1)=-1.5;
z(2)=2.5; %teise lõikepunkti koordinaadid jooniselt
i=0; %sammude loendur
while norm(F(z),1)>10^-5 
    z(1)=-sqrt(8-2*z(2));
    z(2)=sqrt(3+z(2)-z(1));
    i=i+1;
end
lahend2HIM=z;
sammud2HIM=i;

%kolmas lahend
z=[2.5,1.5]; %lõikepunkti koordinaadid jooniselt
i=0; %sammude arv
while norm(F(z),1)>10^-5
    z(1)=sqrt(8-2*z(2));
    z(2)=sqrt(3+z(2)-z(1));
    i=i+1;
end
lahend3HIM=z;
sammud3HIM=i;

%neljas lahend
z=[3,-0.1]; %lõikepunkti koordinaadid jooniselt
i=0; %sammude arv
while norm(F(z),1)>10^-5
    z(1)=sqrt(8-2*z(2));
    z(2)=z(1)+z(2)^2-3;
    i=i+1;
end
lahend4HIM=z;
sammud4HIM=i;

%Newtoni meetodiga lahendamine

%teine lahend
z=[-1.5;2.5]; %NB! PEAB olema veeruvektor!
%teise lõikepunkti koordinaadid jooniselt
i=0; %sammude loendur
while norm(F(z),1)>10^-5
    %defineerime Jacobi maatriksi
    B(1,1)=2*z(1);
    B(1,2)=2;
    B(2,1)=1;
    B(2,2)=2*z(2)-1;
    z=z-inv(B)*F(z);
    i=i+1;
end
lahend2NM=z;
sammud2NM=i;

%kolmas lahend
z=[2.5;1.5]; %NB! PEAB olema veeruvektor!
%kolmanda lõikepunkti koordinaadid jooniselt
i=0; %sammude loendur
while norm(F(z),1)>10^-5
    %defineerime Jacobi maatriksi
    B(1,1)=2*z(1);
    B(1,2)=2;
    B(2,1)=1;
    B(2,2)=2*z(2)-1;
    z=z-inv(B)*F(z);
    i=i+1;
end
lahend3NM=z;
sammud3NM=i;

%neljas lahend
z=[3;-0.1]; %NB! PEAB olema veeruvektor!
%neljanda lõikepunkti koordinaadid jooniselt
i=0; %sammude loendur
while norm(F(z),1)>10^-5
    %defineerime Jacobi maatriksi
    B(1,1)=2*z(1);
    B(1,2)=2;
    B(2,1)=1;
    B(2,2)=2*z(2)-1;
    z=z-inv(B)*F(z);
    i=i+1;
end
lahend4NM=z;
sammud4NM=i;

format long
lahend1=[lahend1HIM, lahend1NM']
format short
sammud1=[sammud1HIM, sammud1NM]

lahend2=[lahend2HIM, lahend2NM']
sammud2=[sammud2HIM, sammud2NM]

lahend3=[lahend3HIM, lahend3NM']
sammud3=[sammud3HIM, sammud3NM]

lahend4=[lahend4HIM, lahend4NM']
sammud4=[sammud4HIM, sammud4NM]
