clear
%joonis alglähendite leidmiseks
ezplot('20*x^2=1-2*x^3+4*y^3')
hold on
grid on
h=ezplot('2*x^3=3*y^2+10*y-5')
set(h,'color','r')
title('Joonis alglähendite leidmiseks')
legend('20*x^2=1-2*x^3+4*y^2','2*x^3=3*y^2+10*y-5')
%Jooniselt on näha, et süsteemil on 3 lahendit. Valime lõikepunktide
%ligikaudsed koordinaadid alglähenditeks. Meile sobivad (-0.5,0.5) ja
%(0.5,0.5) ja (3.5,4.5)

%kontrollime HIM koonduvust
%esimene lahend
x=-0.5; 
y=0.5; %jooniselt saadud alglähendid
G(1,1)=-3*x^2/sqrt(20*(1-2*x^3+4*y^3));
G(1,2)=6*y^2/sqrt(20*(1-2*x^3+4*y^3));
G(2,1)=3/5*x^2;
G(2,2)=-3/5*y;
%tuletis=norm(G,1)=0.5535 SOBIB

%teine lahend
x=0.5; 
y=0.5; %jooniselt saadud alglähendid
G(1,1)=-3*x^2/sqrt(20*(1-2*x^3+4*y^3));
G(1,2)=6*y^2/sqrt(20*(1-2*x^3+4*y^3));
G(2,1)=3/5*x^2;
G(2,2)=-3/5*y;
%tuletis=norm(G,1)=0.6 SOBIB

%kolmas lahend
x=3.5; 
y=4.5; %jooniselt saadud alglähendid
G(1,1)=-3*x^2/sqrt(20*(1-2*x^3+4*y^3));
G(1,2)=6*y^2/sqrt(20*(1-2*x^3+4*y^3));
G(2,1)=3/5*x^2;
G(2,2)=-3/5*y;
%tuletis=norm(G,1)=7.8413 EI SOBI
G(1,1)=-3*x^2/sqrt(20*(1-2*x^3+4*y^3));
G(1,2)=6*y^2/sqrt(20*(1-2*x^3+4*y^3));
G(2,1)=3*x^2/sqrt(3*(2*x^3-10*y+5));
G(2,2)=-5/sqrt(3*(2*x^3-10*y+5));
%tuletis=norm(G,1)=3.6282 EI SOBI
G(1,1)=0;
G(1,2)=(3*y+5)/(3*nthroot((0.5*(3*y^2+10*y-5))^2,3));
G(2,1)=(10*x+3/2*x^2)/(3*nthroot((0.25*(20*x^2-1+2*x^3))^2,3));
G(2,2)=0;
%tuletis=norm(G,1)=0.9393 SOBIB

%Defineerime abifunktsioonid
F=@(z)[20*z(1)^2-1+2*z(1)^3-4*z(2)^3;2*z(1)^3-3*z(2)^2-10*z(2)+5]; %NB! Veeruvektor
%tõime kõik liikmed võrrandisüsteemis vasakule poole võrdusmärki,
%tähistasime x=z(1) ja y=z(2), nii on F argumendiks meil vektor z.

%Lahendame HIM kasutades
%esimene lahend
z=[-0.5,0.5]; %esimese lõikepunkti koordinaadid jooniselt
i=0; %sammude loendur
while norm(F(z),1)>10^-5
    z(1)=-sqrt(1/20*(1-2*z(1)^3+4*z(2)^3));
    z(2)=(2*z(1)^3-3*z(2)^2+5)/10;
    i=i+1;
end
lahend1HIM=z;
sammud1HIM=i;
kontroll1=F(lahend1HIM);

%teine lahend
z(1)=0.5;
z(2)=0.5; %teise lõikepunkti koordinaadid
i=0; %sammude loendur
while norm(F(z),1)>10^-5
    z(1)=sqrt(1/20*(1-2*z(1)^3+4*z(2)^3));
    z(2)=(2*z(1)^3-3*z(2)^2+5)/10;
    i=i+1;
end
lahend2HIM=z;
sammud2HIM=i;
kontroll2=F(lahend2HIM);

%kolmas lahend
z=[3.5,4.5]; %lõikepunkti koordinaadid jooniselt
i=0; %sammude loendur
while norm(F(z),1)>10^-5
    z(1)=nthroot(0.5*(3*z(2)^2+10*z(2)-5),3);
    z(2)=nthroot(0.25*(20*z(1)^2-1+2*z(1)^3),3);
    i=i+1;
end
lahend3HIM=z;
sammud3HIM=i;

%Lahendame NM kasutades
%esimene lahend
z=[-0.5;0.5]; %NB! Alglähend veeruvektorina
i=0; %sammude loendur
while norm(F(z),1)>10^-5
    B(1,1)=40*z(1)+6*z(1)^2;
    B(1,2)=-12*z(2)^2;
    B(2,1)=6*z(1)^2;
    B(2,2)=-6*z(2)-10;
    z=z-inv(B)*F(z);
    i=i+1;
end
lahend1NM=z';
sammud1NM=i;

%teine lahend
z=[0.5;0.5]; %NB! Alglähend veeruvektorina
i=0; %sammude loendur
while norm(F(z),1)>10^-5
    B(1,1)=40*z(1)+6*z(1)^2;
    B(1,2)=-12*z(2)^2;
    B(2,1)=6*z(1)^2;
    B(2,2)=-6*z(2)-10;
    z=z-inv(B)*F(z);
    i=i+1;
end
lahend2NM=z';
sammud2NM=i;

%kolmas lahend
z=[3.5;4.5]; %NB! Alglähend veeruvektorina
i=0; %sammude loendur
while norm(F(z),1)>10^-5
    B(1,1)=40*z(1)+6*z(1)^2;
    B(1,2)=-12*z(2)^2;
    B(2,1)=6*z(1)^2;
    B(2,2)=-6*z(2)-10;
    z=z-inv(B)*F(z);
    i=i+1;
end
lahend3NM=z';
sammud3NM=i;

lahend1=[lahend1HIM lahend1NM sammud1HIM sammud1NM]
lahend2=[lahend2HIM lahend2NM sammud2HIM sammud2NM]
lahend3=[lahend3HIM lahend3NM sammud3HIM sammud3NM]