%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).

%Kontrollime HIM koonduvust. Avaldasime esimesest võrrandist y ja teisest
%võrrandist x, kahjuks see avaldamine ei sobinud.
%Avaldame esimesest võrrandist x ja teisest võrrandist y (ruuduga
%liikmest)

x=-3.5;
y=-2; %esimene alglähend jooniselt
A(1,1)=0;
A(1,2)=-1/sqrt(8-2*y);
A(2,1)=-1/(2*sqrt(3+y-x));
A(2,2)=1/(2*sqrt(3+y-x));
tuletis1=norm(A,1)%=0.52 SOBIB

x=-1.7;
y=3; %teine alglähend jooniselt
A(1,1)=0;
A(1,2)=-1/sqrt(8-2*y);
A(2,1)=-1/(2*sqrt(3+y-x));
A(2,2)=1/(2*sqrt(3+y-x)); %Jacobi maatriks
tuletis2=norm(A,1) %=0.88 SOBIB

x=2.2;
y=1; %kolmas alglähend jooniselt
A(1,1)=0;
A(1,2)=-1/sqrt(8-2*y);
A(2,1)=-1/(2*sqrt(3+y-x));
A(2,2)=1/(2*sqrt(3+y-x)); %Jacobi maatriks
tuletis3=norm(A,1) %=0.7809 SOBIB

x=3;
y=-0.1; %neljas alglähend jooniselt
A(1,1)=0;
A(1,2)=-1/sqrt(8-2*y);
A(2,1)=-1/(2*sqrt(3+y-x));
A(2,2)=1/(2*sqrt(3+y-x)); %Jacobi maatriks
tuletis4=norm(A,1) %=1.93 ei sobi

%proovime 3. avaldamist, teisest võrrandist y lineaarsest liikmest
x=3;
y=-0.1; %neljas alglähend jooniselt
A(1,1)=0;
A(1,2)=-1/sqrt(8-2*y);
A(2,1)=1;
A(2,2)=2*y; %Jacobi maatriks
tuletis4=norm(A,1) %=1 SOBIB

%Kolme esimese lahendi jaoks sobib teine avaldamine, neljanda lahendi jaoks
%viimane

%HIM rakendamiseks defineerime vektorfunktsiooni F(z), kus argumendiks on
%z nii et z(1)=x ja z(2)=y
F=@(z)[z(1)^2+2*z(2)-8,z(1)+z(2)^2-z(2)-3];

%esimene lahend
z(1)=-3.5;
z(2)=-2; %alglähend jooniselt
i=0; %sammude arv
while norm(F(z))>10^-6
    z(1)=-sqrt(8-2*z(2)); %- on ees, sest otsime neg. lahendit
    z(2)=-sqrt(3+z(2)-z(1)); %- on ees, sest otsime neg. lahendit
    i=i+1;
end
lahend1HIM=z
sammud1HIM=i

%teine lahend 
z(1)=-1.7;
z(2)=3; %alglähend jooniselt
i=0; %sammude arv
while norm(F(z))>10^-6
    z(1)=-sqrt(8-2*z(2)); %- on ees, sest otsime neg. lahendit
    z(2)=sqrt(3+z(2)-z(1)); 
    i=i+1;
end
lahend2HIM=z
sammud2HIM=i

%kolmas lähend
z(1)=2.2;
z(2)=1; %alglähend jooniselt
i=0; %sammude arv
while norm(F(z))>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;
z(2)=-0.1;
i=0; %sammude arv
while norm(F(z))>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

%II Newtoni meetod
Ftuletis=@(z)[2*z(1) 2
    1 2*z(2)-1]; %algse võrrandisüsteemi vasakute poolte osatuletiste 
% maatriks
%Alglähend VEERUVEKTORINA!
z=[-3.5; -2];
i=0;
while norm(F(z),1)>10^-6
    z=z-inv(Ftuletis(z))*F(z)'; %kõik peavad olema veeruvektorid
    i=i+1;
end
lahend1NM=z'
sammud1NM=i

%Alglähend VEERUVEKTORINA!
z=[-1.7; 3];
i=0;
while norm(F(z),1)>10^-6
    z=z-inv(Ftuletis(z))*F(z)'; %kõik peavad olema veeruvektorid
    i=i+1;
end
lahend2NM=z'
sammud2NM=i

%Alglähend VEERUVEKTORINA!
z=[2.2;1];
i=0;
while norm(F(z),1)>10^-6
    z=z-inv(Ftuletis(z))*F(z)'; %kõik peavad olema veeruvektorid
    i=i+1;
end
lahend3NM=z'
sammud3NM=i

%Alglähend VEERUVEKTORINA!
z=[3; -0.1];
i=0;
while norm(F(z),1)>10^-6
    z=z-inv(Ftuletis(z))*F(z)'; %kõik peavad olema veeruvektorid
    i=i+1;
end
lahend4NM=z'
sammud4NM=i