% Az explicit Euler-modszer es a kozepponti modszer
% osszehasonlitasa
% A diffegy alfuggveny altal megadott differencialegyenletet
% megoldja a t0 pontbol es y0 kezdeti ertekbol kiindulva
% h lepeskozzel es N db lepessel
clear all
close all
t0=0;
y0=1;
h=0.1;
N=10;
t=zeros(N+1,1);
y = zeros(N+1,1);
% Euler-modszer
t(1) = t0;
y(1) = y0;
for i=1:N
t(i+1) = t(i) + h;
y(i+1) = y(i) + h * diffegy(t(i),y(i));
end
y_ee = y;
clear t y;
% Kozepponti modszer 
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
y_mid = y;
% Pontos megoldas
u=exp(-t)+t;
subplot(1,2,1) 
plot(t,u,'b',t,y_ee,'r')
legend('Pontos megoldas','Explixit Euler-modszer')
xlabel('t')
ylabel('y')
subplot(1,2,2) 
plot(t,u,'b',t,y_mid,'g')
xlabel('t')
ylabel('y')
legend('Pontos megoldas','Kozepponti modszer')

