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;