function v=runge_kutta(f,u0,x0,D,tol)
%funkcija za resavanje Kosijevog zadatka u'(x)=f(x,u(x)), u(x0)=u0 
%metodom Runge Kutta odredjujemo vrednost u(x0+D) sa tacnoscu tol

%test:
%format long
%v=runge_kutta(@(x,u) exp(x+u)-1,0.1,-0.1,0.2,1e-6)
%
%v =
%
%   0.100000000000000   0.105360548029452   0.123143642638460



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


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

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

%Racunamo gresku u tacki x0+D, u(x0+D)~v(end)~v2(end)
%koristimo Rungeovu ocenu greske, red metode je 4,
%pa delimo sa 2^4-1=15
R=(v2(end)-v(end))/15;

while (abs(R)>tol)
    v=v2;
    h=h/2;
    k=2*k-1;
    v2=runge_kutta_h(f,x0,u0,h,k);
    R=(v2(end)-v(end))/15;
end
v=v2;

    








