%Otsime jooniselt alglähendeid
ezplot('x^2+2*y-8=0')
hold on
grid 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')
%Jooniselt näeme, et joontel on 4 lõikepunkti => süsteemil on 4 lahendit.
%Valime alglähenditeks lõikepunktide koordinaadid. Meile sobivad
%(-3.5,-2) ja (-1.7,3) ja (2.2,1) ja (3,-0.1)

%defineerime võrrandite vasakutest pooltest vektorfunktsiooni, mille
%argumendiks on vektor z, kus z(1)=x ja z(2)=y
F=@(z)[z(1)^2+2*z(2)-8,z(1)+z(2)^2-z(2)-3];

%Kontrollime HIM koonduvust
%1) avaldasime esimesest võrrandist y ja teisest x, see ei sobi, kõik
%normid suuremad kui 1
%2) avaldame esimesest võrrandist x ja teisest y (ruuduga liikmest)
x=-3.5; %esimese lõikepunkti x-koordinaat
y=-2; %esimese lõikepunkti y-koordinaat
Gtuletis=[0 -1/sqrt(8-2*y)
    -1/(2*sqrt(3+y-x)) 1/(2*sqrt(3+y-x))];
tuletis1=norm(Gtuletis,1) %=0.5244<1 sobib

x=-1.7; %teise lõikepunkti x-koordinaat
y=3; %teise lõikepunkti y-koordinaat
Gtuletis=[0 -1/sqrt(8-2*y)
    -1/(2*sqrt(3+y-x)) 1/(2*sqrt(3+y-x))];
tuletis2=norm(Gtuletis,1) %=0.8873<1 sobib

x=2.2; %kolmanda lõikepunkti x-koordinaat
y=1; %kolmanda lõikepunkti y-koordinaat
Gtuletis=[0 -1/sqrt(8-2*y)
    -1/(2*sqrt(3+y-x)) 1/(2*sqrt(3+y-x))];
tuletis3=norm(Gtuletis,1) %=0.7809<1 sobib

%3) x avaldame esimesest ja y alumisest võrrandist (lineaarsest liikmest)
x=3; %neljanda lõikepunkti x-koordinaat
y=-0.1; %neljanda lõikepunkti y-koordinaat
Gtuletis=[0 -1/sqrt(8-2*y)
    1 2*y];
tuletis4=norm(Gtuletis,1) %=1 sobib

%Lahendame HIM kasutades
%esimene lahend
z(1)=-3.5; %esimese lõikepunkti x-koordinaat
z(2)=-2; %esimese lõikepunkti y-koordinaat
i=0; %sammude arv
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
lahend1HIM=z
sammud1HIM=i

%teine lahend
z=[-1.7,3]; %teise lõikepunkti koordinaadid vektorina
i=0; %sammude arv
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
lahend2HIM=z
sammud2HIM=i

%kolmas lahend
z(1)=2.2; %kolmanda lõikepunkti x-koordinaat
z(2)=1; %kolmanda lõikepunkti y-koordinaat
i=0; %sammude arv
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
lahend3HIM=z
sammud3HIM=i

%neljas lahend
z(1)=3; %esimese lõikepunkti x-koordinaat
z(2)=-0.1; %esimese lõikepunkti y-koordinaat
i=0; %sammude arv
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 sama süsteemi Newtoni meetodiga
z=[-3.5;-2]; %esimene alglähend VEERUVEKTORINA
i=0; %sammude arv
while norm(F(z),1)>10^-6
    Ftuletis=[2*z(1) 2
        1 2*z(2)-1]; %esialgse võrrandisüsteemi Jacobi maatriks
    z=z-inv(Ftuletis)*F(z)'; %NB! F peab olema veeruvektor!
    i=i+1;
end
lahend1NM=z'
sammud1NM=i
z=[-1.7;3]; %teine alglähend VEERUVEKTORINA
i=0; %sammude arv
while norm(F(z),1)>10^-6
    Ftuletis=[2*z(1) 2
        1 2*z(2)-1]; %esialgse võrrandisüsteemi Jacobi maatriks
    z=z-inv(Ftuletis)*F(z)'; %NB! F peab olema veeruvektor!
    i=i+1;
end
lahend2NM=z'
sammud2NM=i

z=[2.2;1]; %kolmas alglähend VEERUVEKTORINA
i=0; %sammude arv
while norm(F(z),1)>10^-6
    Ftuletis=[2*z(1) 2
        1 2*z(2)-1]; %esialgse võrrandisüsteemi Jacobi maatriks
    z=z-inv(Ftuletis)*F(z)'; %NB! F peab olema veeruvektor!
    i=i+1;
end
lahend3NM=z'
sammud3NM=i

z=[3;-0.1]; %neljas alglähend VEERUVEKTORINA
i=0; %sammude arv
while norm(F(z),1)>10^-6
    Ftuletis=[2*z(1) 2
        1 2*z(2)-1]; %esialgse võrrandisüsteemi Jacobi maatriks
    z=z-inv(Ftuletis)*F(z)'; %NB! F peab olema veeruvektor!
    i=i+1;
end
lahend4NM=z'
sammud4NM=i

