clear
x0=1; %algtingimuse x
xn=8; %koht, kus tahame y väärtust leida
n=100; %mitmes punktis arvutame NB! OLULINE SUURUS!!!!
h=(xn-x0)/n; %sammu pikkus

%defineerime DV parema poole
f=@(x,y)-(y^2+x*y+x^2)/x^2;
%algtingimuse abil defineerime x ja y vektori esimesed liikmed
x(1)=1; %x vektori esimene liige!
y(1)=5; %y vektori esimene liige!

%Euleri meetod
for i=1:n
    y(i+1)=y(i)+h*f(x(i),y(i));
    x(i+1)=x(i)+h;
end
vastusEuler=y(i+1)
plot(x,y)
hold on

%Prognoosi-korrektsiooni meetod
for i=1:n
    x(i+1)=x(i)+h;
    y(i+1)=y(i)+h/2*f(x(i),y(i))+h/2*f(x(i+1),y(i)+h*f(x(i),y(i)));
end
vastusprog_korr=y(i+1)
plot(x,y)

%lahendame Matlabiga
[t,u]=ode45(f,[1,8],5);%x asemel t, y asemel u
m=length(u) %annab vektori u dimensiooni, st mitu elementi on vektoris
vastusMatlab=u(57)
plot(t,u)
legend('Euleri meetod','Prog-korr. meetod','Matlabi lahend')