%
% Soluzione esatta e approssimata con il metodo di Eulero
% della equazione differenziale
% L di(t)/dt + R i(t) = V
% i(0) = i0
%
% Ingresso:
%  i0 = corrente iniziale
%  V  = tensione ai capi del circuito
%  R  = resistenza
%  L  = induttanza
%  T  = tempo finale
%  N  = numero di punti di griglia da calcolare
% restituisce i vettori
% t(:) = vettore con gli istanti temporali dove la soluzione è calcolata
% i(:) = andamento della corrente calcolato con il metodo di Eulero
% e(:) = andamento della corrente con soluzione esatta
%
function [t,i,e]=circuito(i0,V,R,L,T,N)
  t(1) = 0  ;
  i(1) = i0 ;
  e(1) = i0 ;
  h    = T/N ;
  for k=1:N
    % griglia temporale
    t(k+1) = t(k) + h;
    % soluzione approssimata col metodo di Eulero
    i(k+1) = i(k) + (V-R*i(k))*h/L;
    % soluzione esatta
    e(k+1) = i0*exp(-t(k+1)*R/L) ...
             +(V/R)*(1-exp(-t(k+1)*R/L)) ;
  end;
end
