n   = [5, 10, 15, 20 , 100, 200]; %Número de nodos de la discretización
h   = 1./(n+1); %Espacio entre nodos, hay que tener en cuenta que también están el nodo x0=0 y xn = 1

%------------------------------------------------------------------------
% Solución basada en el método directo de OCTAVE
%------------------------------------------------------------------------
tdirect = zeros(length(n),1); % Vector con los tiempos
for isize=1:length(n)
  fprintf('%d\n',isize);
  tic;
  for i=1:1000
    K =  (1/h(isize)^2)*toeplitz([2,-1,zeros(1,n(isize)-2)]);
    f = -2*ones(n(isize),1);
    xdirect = K\f;
  endfor
  tdirect(isize)=toc;
endfor


%------------------------------------------------------------------------
% Solución basada en el cálculo de la inversa
%------------------------------------------------------------------------
tinverse = zeros(length(n),1); % Vector con los tiempos
for isize=1:length(n)
  fprintf('%d\n',isize);
  tic;
  for i=1:1000
    K =  (1/h(isize)^2)*toeplitz([2,-1,zeros(1,n(isize)-2)]);
    f = -2*ones(n(isize),1);
    xdirect = inv(K)*f;
  endfor
  tinverse(isize)=toc;
endfor

[tdirect, tinverse]
