% Resavamo jednostavan Kosijev problem x'=t+x, x(0)=e-1, cije je jedinsteno
% resenje funkcija x(t)=e^(t+1)-t-1. Recimo da trazimo resenje na intervalu [0, upper]
clf

upper = 5;
t0 = 0; x0 = exp(1) - 1;
h = 0.001; % biramo korak
t = t0; % krecemo od pocetnog vremenskog trenutka t0 i ici cemo sve do upper
x_osa1 = x0; 
x_osa2 = x0; % uzmemo listu vrednosti x koje treba da dobijemo, sa jednim elementom x0
y1 = x0; 
y2 = x0; % y nam predstavlja novu numericku vrednost aproksimacije. Na pocetku je to tacna vrednost x0
t_osa = t0:h:upper;
T = length(t_osa);

while (length(x_osa1) < T) % Ojlerova metoda, koristimo y1 i x_osa1
    y1 = y1 + h * (t + y1);
    x_osa1 = [x_osa1 y1];
    t = t + h;
end

t = t0;

while (length(x_osa2) < T) % RK4 metoda, koristimo y2 i x_osa2
    k1 = h * (t + y2);
    k2 = h * (t + h/2 + y2 + k1/2);
    k3 = h * (t + h/2 + y2 + k2/2);
    k4 = h * (t + h + y2 + k3);
    
    y2 = y2 + (k1 + 2*k2 + 2*k3 + k4)/6;
    x_osa2 = [x_osa2 y2];
    t = t + h;
end

x_osaA = exp(t_osa+1)-t_osa-1; % analiticko resenje
plot(t_osa, x_osa1); hold on
plot(t_osa, x_osa2); hold on
plot(t_osa, x_osaA); hold on

legend('Ojler unapred', 'RK4', 'Analiticko', 'Location', 'northwest');

