% Kozepponti modszer
% A diffegy alfuggveny altal megadott differencialegyenletet
% megoldja a t0 pontbol es y0 kezdeti ertekbol kiindulva
% h lepeskozzel es N db lepessel
% Hasznalata: pl. [T1,Ye] = midpoint(@diffegy, 0, 1, 0.1, 10)
function [t,y] = midpoint(diffegy, t0, y0, h, N)
t=zeros(N+1,1);
y = zeros(N+1,1);
t(1) = t0;
y(1) = y0;
for i=1:N
    s1=diffegy(t(i),y(i));
    s2=diffegy(t(i)+h/2,y(i)+h/2*s1);
    y(i+1) = y(i) + h * s2;
    t(i+1) = t(i) + h;
end
% Pontos megoldas
u=exp(-t)+t;
plot(t,u,'b',t,y,'r')
xlabel('t')
ylabel('y')
title('Kozepponti modszer')
legend('Pontos megoldas','Numerikus megoldas')
