% Deteccion de discontinuidades mediante las medidas E1 y E2, de forma simultánea.
%  cap1lsae1e2u(x,f,k,n)
%  Entradas:
%        x = nodos de la fución inicial
%        f = valores de la función inicial
%        k = grado del polinomio AP
%        n = numero de nodos que utilizamos para la reconstrucción AP
%  Salidas:
%        plot de la funcion inicial y de las discontinuidades con E1(*-), con E2(o-) y simultaneas (^-)
%
% Autor: José Jaime Noguera.    +INFO: www.uv.es/anims/noguera

function cap1lsae1e2u(x,f,k,n)
nx=length(x);

%esto es solo para mejorar la velocidad computacional
coefe1=zeros(1,nx-n);
sumtot=zeros(1,nx-n);
is1=zeros(1,nx-n);
is2=zeros(1,nx-n);

for i=n:nx-n
        for l=i-n+1:i
        suma=0;  
            coef=qk([x(l:l+n-1)],[f(l:l+n-1)],k);
            c1=length(coef);
            coef1=coef(c1:-1:1);
            coefe1(l)=abs(fact(k)*coef(c1));%es para e1
            for s=1:n
                sum1=polyval(coef1,x(l+s-1));
                suma=(sum1-f(l+s-1))^2+suma;
            end
            sumtot(i)=suma;
        end          
         [minie2,pose2]=min(sumtot(i-n+1:i));
         [minie1,pose1]=min(coefe1(i-n+1:i));
         is1(i)=i-n+pose1;
         is2(i)=i-n+pose2;    
end

hold on

for i=n+1:nx-n
      if(is1(i)==i && is1(i-1)==i-n)
         p1=plot([x(i),x(i)],[0.65,0.75],'*-k');
      end
      if(is2(i)==i && is2(i-1)==i-n)
         p2=plot([x(i),x(i)],[0.25,0.35],'o-k');
      end   
      if(is1(i)==i && is1(i-1)==i-n && is2(i)==i && is2(i-1)==i-n )
         p3=plot([x(i),x(i)],[0.45,0.55],'^-k','LineWidth',2);
      end
end
   
plot(x, f,'k.','MarkerSize',5)               

axis([0 1 -0.1 1.1 ]);
set(gca,'Xtick',[0 .5 1], 'FontSize',15)
set(gca,'Ytick',[0 .5 1], 'FontSize',15)
box
hold off



