function yall = explicit_euler_sol(y0,h,fhandle,N)
% calculeaza solutia problemei Cauchy (IVP)
%   y'(t) = f(t,y), y(0) = y0
% pe intervalul [0,T], folosind metoda explicita a lui
% Euler. Valoarea lui T este data de T=N*h.
%
% Input:
%       - y0:       valoarea initiala.
%       - h:        pasul de integrare
%       - fhandle:  pointer la f(t,y)
%       - N:        numarul de pasi de integrare. T=N*h
%
%
% Output:
%       - yall:     matrice avand coloane y_0, y_1,...,y_N
%
% CTI 2021

yall    = [];

% y0 poate fi si vector astfel incat
% sa putem rezolva si sisteme de ec. diff.
% de ordin 1. y0 este considerat a fi vector
% "coloana".

sz0     = size(y0);
sz0_2   = sz0(2);
if sz0_2>1
    y0 = y0';
end;

yall        = zeros(length(y0),N+1);
yall(:,1)   = y0;
yold        = y0;
told        = 0;

% !!! Student:
% !!! Trebuie scris cod pentru functia explicit_euler_step
% !!! sub forma aratata mai jos.

for n = 1:N
    ynew = explicit_euler_step(told,yold,h,fhandle);
    told = told+h;
    yold = ynew;
    yall(:,n+1)= ynew;
end;
