clear
%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')
title('Joonis alglähendite leidmiseks')
legend('x^2+2*y-8=0','x+y^2-y-3=0')
grid on
hold off
%Jooniselt on näha, et süsteemil on 4 lahendit (4 lõikepunkti). Loeme
%ligikaudsed koordinaadid alglähenditeks. Meile sobivad:
%(-3.75,-2) ja (-1.75,2.5) ja (2.3,3.5) ja (3,-0.2).

%Kontrollime HIM koonduvust.
%1) Esimene lahend
x=-3.75; %esimese lõikepunkti koordinaadid
y=-2;
G=[0 -1/(2*sqrt(8-2*y)); -1/(2*sqrt(3-x+y)) 1/(2*sqrt(3-x+y))];
%tuletis=norm(G,1)=0.3738 SOBIB

%2) Teine lahend
x=-1.75;
y=2.5; %teise lõikepunkti koordinaadid
G=[0 -1/(2*sqrt(8-2*y)); -1/(2*sqrt(3-x+y)) 1/(2*sqrt(3-x+y))];
%tuletis=norm(G,1)=0.4744 SOBIB

%3) Kolmas lahend
x=2.3;
y=1.5; %kolmanda lõikepunkti koordinaadid
G=[0 -1/(2*sqrt(8-2*y)); -1/(2*sqrt(3-x+y)) 1/(2*sqrt(3-x+y))];
%tuletis=norm(G,1)=0.744 SOBIB

%4) Neljas lahend
x=3;
y=-0.2; %neljanda lõikepunkti koordinaadid
G=[0 -1/(2*sqrt(8-2*y)); 1 2*y];
%tuletis=norm(G,1) tinglikult sobib

%Defineerime abifunktsiooni F, mille argumendiks on vektor z
F=@(z)[z(1)^2+2*z(2)-8;z(1)+z(2)^2-z(2)-3]; %NB! NM jaoks on oluline, et veeruvektor!
%siin x=z(1) ja y=z(2)

%Lahendame süsteemi HIM kasutades
z=[-3.75,-2]; %jooniselt lõikepunkti koordinaadid
i=0;
while norm(F(z),1)>10^-6
    z(1)=-sqrt(8-2*z(2));
    z(2)=-sqrt(3-z(1)+z(2));
    i=i+1;
end
lahend1HIM=z;
sammud1HIM=i;

%Lahendame süsteemi NM kasutades
z=[-3.75;-2]; %jooniselt lõikepunkti koordinaadid, esitame veeruvektorina
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
lahend1NM=z;
sammud1NM=i;

lahend1=[lahend1HIM lahend1NM']
sammud1=[sammud1HIM sammud1NM]

%Lahendame HIM
z=[-1.75,2.5]; %jooniselt lõikepunkti koordinaadid
i=0;
while norm(F(z),1)>10^-6
    z(1)=-sqrt(8-2*z(2));
    z(2)=sqrt(3-z(1)+z(2));
    i=i+1;
end
lahend2HIM=z;
sammud2HIM=i;

%Lahendame süsteemi NM kasutades
z=[-1.75;2.5]; %jooniselt lõikepunkti koordinaadid, esitame veeruvektorina
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
lahend2NM=z;
sammud2NM=i;

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

%Lahendame HIM kasutades
z=[2.3,1.5]; %jooniselt lõikepunkti koordinaadid
i=0;
while norm(F(z),1)>10^-6
    z(1)=sqrt(8-2*z(2));
    z(2)=sqrt(3-z(1)+z(2));
    i=i+1;
end
lahend3HIM=z;
sammud3HIM=i;

%Lahendame süsteemi NM kasutades
z=[2.3;1.5]; %jooniselt lõikepunkti koordinaadid, esitame veeruvektorina
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
lahend3NM=z;
sammud3NM=i;

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

%Lahendame HIM kasutades
z=[3,-0.2]; %jooniselt lõikepunkti koordinaadid
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
lahend4HIM=z;
sammud4HIM=i;

%Lahendame süsteemi NM kasutades
z=[3;-0.2]; %jooniselt lõikepunkti koordinaadid, esitame veeruvektorina
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
lahend4NM=z;
sammud4NM=i;

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