function [t,y]=euler_ulepszona(f,tinit,yinit,tfinal,n)
% Ulepszona metoda Eulera
% Obliczenia kroku
h=(tfinal-tinit)/n;
% Przygotowanie wektorw poczatkowych t i y
t=[tinit; zeros(n,1)]; y=[yinit; zeros(n,1)];
% Obliczenia t i y
for i=1:n
t(i+1)=t(i)+h;
ynew=y(i)+h*f(t(i),y(i));
y(i+1)=y(i)+(h/2)*(f(t(i),y(i))+f(t(i+1),ynew));
end