clear %vahemälu puhtaks
%Joonis alglähendite leidmiseks
ezplot('x=y^2-1')
hold on
grid on
h=ezplot('y=x^2')
set(h,'color','r')
hold off
legend('x=^2-1','y=x^2')
%Jooniselt on näha 2 lõikepunkti => süsteemil on 2 lahendit. Valime
%lõikepunktide koordinaadid alglähenditeks. Meile sobivad (-0.5,0.5) ja
%(1.2,1.5).

%Defineerime süsteemist vektorfunktsiooni, mille argumendiks on vektor z,
%kus z(1)=x ja z(2)=y.
F=@(z)[z(1)-z(2)^2+1;z(2)-z(1)^2]; %NB! Newtoni meetodi jaoks veeruvektor

%Kontrollime koonduvust.
%Avaldasime esimesest võrrandist x ja teisest y
x=-0.5;
y=0.5; %esimese lõikepunkti koordinaadid
Gtuletis(1,1)=0;
Gtuletis(1,2)=2*y;
Gtuletis(2,1)=2*x;
Gtuletis(2,2)=0;
%hindamiseks kasutame 1-normi
tuletis=norm(Gtuletis,1) %piiripealne tulemus

%kontrollime teist lahendit
x=1.2;
y=1.5; %teise lõikepunkti koordinaadid
Gtuletis(1,1)=0;
Gtuletis(1,2)=2*y;
Gtuletis(2,1)=2*x;
Gtuletis(2,2)=0;
tuletis=norm(Gtuletis,1)%=3>1 ei sobi

%kontrollime koonduvust, kui esimesest võrrandist avaldasime y ja teisest x
x=-0.5;
y=0.5; %esimese lõikepunkti koordinaadid
Gtuletis=[1/(2*sqrt(x+1)) 0
    0 1/(2*sqrt(y))];
tuletis=norm(Gtuletis,1)%=0.7071<1 sobib

x=1.2;
y=1.5; %teise lõikepunkti koordinaadid
Gtuletis=[1/(2*sqrt(x+1)) 0
    0 1/(2*sqrt(y))];
tuletis=norm(Gtuletis,1)%=0.4082<1 sobib

%Lahendame HIM kasutades
z=[-0.5,0.5]; %esimene alglähend vektorina
i=0; %sammude arv
while norm(F(z),1)>10^-6
    z(1)=-sqrt(z(2));
    z(2)=sqrt(z(1)+1);
    i=i+1;
end
lahend1HIM=z
sammud1HIM=i

z=[1.2,1.5]; %teise alglähend vektorina
i=0; %sammude arv
while norm(F(z),1)>10^-6
    z(1)=sqrt(z(2));
    z(2)=sqrt(z(1)+1);
    i=i+1;
end
lahend2HIM=z
sammud2HIM=i

%Lahendame Newtoni meetodi abil
%võib sisestada nii
%z(1)=-0.5;
%z(2)=0.5; aga lihtsam on sisestada veeruvektorina
z=[-0.5;0.5];
i=0; %sammude arv
while norm(F(z),1)>10^-6
    Ftuletis(1,1)=1;
    Ftuletis(1,2)=-2*z(2);
    Ftuletis(2,1)=-2*z(1);
    Ftuletis(2,2)=1;
    z=z-inv(Ftuletis)*F(z);
    i=i+1;
end
lahend1NM=z' %teeme reavektoriks
sammud1NM=i

z=[1.2;1.5]; %veeruvektor!!!
i=0; %sammude arv
while norm(F(z),1)>10^-6
    Ftuletis(1,1)=1;
    Ftuletis(1,2)=-2*z(2);
    Ftuletis(2,1)=-2*z(1);
    Ftuletis(2,2)=1;
    z=z-inv(Ftuletis)*F(z);
    i=i+1;
end
lahend2NM=z' %teeme reavektoriks
sammud2NM=i

%Lahendame modifitseeritud Newtoni meetodiga
z=[-0.5;0.5]; %NB! veeruvektor
i=0; %sammude arv
Ftuletis=[1 -2*z(2); -2*z(1) 1];
while norm(F(z),1)>10^-6
    z=z-inv(Ftuletis)*F(z);
    i=i+1;
end
lahend1MNM=z'
sammud1MNM=i

z=[1.2;1.5]; %NB! veeruvektor
i=0; %sammude arv
Ftuletis=[1 -2*z(2); -2*z(1) 1];
while norm(F(z),1)>10^-6
    z=z-inv(Ftuletis)*F(z);
    i=i+1;
end
lahend2MNM=z'
sammud2MNM=i
