% Esta función resuelve el problema y' = k*y, y(0) = 1, utilizando los métodos de Euler explícito e implícito.
% INPUT: k, tf = tiempo final, h = paso de Euler.
% OUTPUT: t = vector de tiempos, y = vector que aproxima la solución con el método explícito, +
%               z = vector que aproxima la solución con método implícito.

function [t,y,z] = ej_euler(k,tf,h)

t = [0:h:tf]'; %Define el vector de tiempos. Va traspuesto para que de una columna.
n = length(t); %Cantidad de casilleros de t.
y = zeros(n,1); %Inicializa el vector y, como una columna de n casilleros.
y(1) = 1; %Dato inicial.
z = zeros(n,1); %Idem para z.
z(1) = 1;

%Iteración de Euler:
for i=1:n-1
     y(i+1) = y(i)*(1+h*k); %Euler explícito.
     z(i+1) = z(i)/(1-h*k); %Euler implícito.
end

% Para plotear la solución: correr el programa desde la ventana de comandos, y luego:
% plot(t,y)
% hold on
% plot(t,z,'r')
% "hold on"   evita que el segundo plot borre el primero. Se puede agregar a esto el gráfico de la solución exacta.
