% Tund nr 7, ülesanne 1

% leiame alglähendid graafiliselt
ezplot('20*x^2=1-2*x^3+4*y^3',[-2,4,-2,6])
hold on
grid on
m=ezplot('2*x^3=3*y^2+10*y-5',[-2,4,-2,6])
set(m,'color','r')
hold off
% jooniselt on näha, et alglähenditeks võime võtta
% (-0.5;0.5) ja (0.3;0.5) ja (3.5;4.5)

% lahendame Newtoni meetodiga
% defineerime F-i, kus x=z(1) ja y=z(2)
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];
% 1) lahendame esimese alglähendi korral
z=[-0.5;0.5];
i=0;
while norm(F(z),1)>10^-6
    Ftuletis=[40*z(1)+6*z(1)^2,-12*z(2)^2;6*z(1)^2,-6*z(2)-10];
    z=z-inv(Ftuletis)*F(z);
    i=i+1;
end
lahend1n=z
sammud1n=i

% 2) lahendame teise alglähendi korral
z=[0.3;0.5];
i=0;
while norm(F(z),1)>10^-6
    Ftuletis=[40*z(1)+6*z(1)^2,-12*z(2)^2;6*z(1)^2,-6*z(2)-10];
    z=z-inv(Ftuletis)*F(z);
    i=i+1;
end
lahend2n=z
sammud2n=i

% 3) lahendame kolmanda alglähendi korral
z=[3.5;4.5];
i=0;
while norm(F(z),1)>10^-6
    Ftuletis=[40*z(1)+6*z(1)^2,-12*z(2)^2;6*z(1)^2,-6*z(2)-10];
    z=z-inv(Ftuletis)*F(z);
    i=i+1;
end
lahend3n=z
sammud3n=i

% lahendame hariliku iteratsioonimeetodiga
% defineerime F-i
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];
% reavektor !
% uurime, kas valitud G sobib ehk kas ||G'(x)|| < 1?

% esimese alglähendi korral
x=-0.5;
y=0.5;
G=[1/(2*sqrt(1/20*(1-2*x^3+4*y^3)))*1/20*(-6*x^2),1/(2*sqrt(1/20*(1-2*x^3+4*y^3)))*1/20*(12*y^2);3/5*x^2,-3/5*y];
norm(G,1) % sobib
% esimese alglähendi korral
x=0.3;
y=0.5;
G=[1/(2*sqrt(1/20*(1-2*x^3+4*y^3)))*1/20*(-6*x^2),1/(2*sqrt(1/20*(1-2*x^3+4*y^3)))*1/20*(12*y^2);3/5*x^2,-3/5*y];
norm(G,1) % sobib

% kolmanda alglähendi korral
x=3.5;
y=4.5;
G=[1/(2*sqrt(1/20*(1-2*x^3+4*y^3)))*1/20*(-6*x^2),1/(2*sqrt(1/20*(1-2*x^3+4*y^3)))*1/20*(12*y^2);3/5*x^2,-3/5*y];
norm(G,1) % ei sobi

% lahendame hariliku iteratsioonimeetodiga kahe esimese alglähendi korral
% kuna valitud G sobib
z=[-0.5,0.5];
i=0;
while norm(F(z),1)>10^-6
    z(1)=-sqrt(1/20*(1-2*z(1)^3+4*z(2)^3));
    z(2)=1/10*(2*z(1)^3-3*z(2)^2+5);
    i=i+1;
end
lahend1h=z
sammud1h=i
lahend1=[lahend1n',lahend1h]
sammud1=[sammud1n',sammud1h]

z=[0.3,0.5];
i=0;
while norm(F(z),1)>10^-6
    z(1)=sqrt(1/20*(1-2*z(1)^3+4*z(2)^3));
    z(2)=1/10*(2*z(1)^3-3*z(2)^2+5);
    i=i+1;
end
lahend2h=z
sammud2h=i
lahend2=[lahend2n',lahend2h]
sammud2=[sammud2n',sammud2h]