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;