function [xx,yy] = ode_multistep(f,a,b,I,h,y0)
% function [xx,yy] = ode_multistep(f,a,b,I,h,y0)
%   
la=length(a);           % pocet kroku
x0=I(1);                % pocatecni uzel
xn=I(2);                % koncovy uzel
x1=x0+h*(0:la-1);       % body pro poc. hodnoty
[xx,yy]=ode45(f,x1,y0); % poc. hodnoty
xx=xx(:)';              % vysledky dame do radku
yy=yy(:)';
yd=f(xx,yy);            % priblizne hodnoty derivaci
nx=length(xx);          % pocet urcenych hodnot
x=xx(nx);               % posledni spocitany uzel
while x<xn              % hlavni cyklus vypoctu
    I=nx:-1:nx-la+1;    % indexy pouzitych uzlu pozpatku
    y=sum(a.*yy(I))+h*sum(b.*yd(I));    % vicekrokova formule
    x=x+h;              % dalsi uzel
    d=f(x,y);           % derivace v dalsim uzlu
    yy=[yy,y];          % doplneni hodnot
    xx=[xx,x];
    yd=[yd,d];
    nx=nx+1;            % zvysime posledni index
end
end

