function vp=euler(f,x0,u0,D)
%funkcija za resavanje Kosijevog zadatka u'(x)=f(x,u(x)), u(x0)=u0 
%modifikovanom Ojlerovom metodom na intervalu [x0,x0+D]
%Modifikovana Ojlerova metoda: u(x+h)=u(x)+h*f(x+h/2,u*), u*=u(x)+h/2*f(x,u(x))
%funkcija odredju priblizna resenja sa koracima h i h/2 i popravlja tacnije resenje

%test:  (1. zadatak sa vezbi)
%vp=euler(@(x,u) 2./sqrt(pi).*exp(-x.^2),0,0,1)

%vp =

%         0    0.2765    0.5204    0.7114    0.8427



%pocetni broj tacaka
k=3;
%pocetni korak
h=D/(k-1);
%v=[u0 u(x0+h) u(x0)+2h] priblizno resenje u cvornim tackama
v=euler_h(f,x0,u0,h,k);

%v
%polovimo korak 
%Racunamo vektor v2 sa pribliznim vrednosti u cvorovima nove mreze 
%v2=[u0 u(x0+h/2) u(x0+h) u(x0+3h/2) u(x0+2h)]
h=h/2;
k=2*k-1;

v2=euler_h(f,x0,u0,h,k);

R=zeros(1,k);
%Racunamo gresku
%R=[R(x0) R(x0+h/2) R(x0+h) R(x0+3h/2) R(x0+2h)]
%Na neparnim pozicijama koristimo Rungeovu ocenu greske, red metode je 2,
%pa delimo sa 2^2-1=3
R(1:2:k)=(v2(1:2:k)-v)/3;
%Na parnim pozicijama gresku racunamo kao aritmeticku sredinu gresaka sa
%susednih neparnih pozicija
R(2:2:k-1)=(R(1:2:k-1)+R(3:2:k))/2;



%Popravljeno resenje:

vp=v2+R;













