% Filtros para la funcion G en la peconstricción IAP
%     capiaiavpcoefifunciong(nl,nr,r,x)
%     ENTRADAS:
%           nl+nr = tamaño del stencil
%           r     = grado del polinomio IA
%           x     = es el punto donde sustituimos (si es 0 es en x^{k-1}_{i-1}; si es 1 es en x^{k-1}_{i}
%     SALIDAS:
%           solu  = coeficientes que multiplican a f^{k-1} para obtenener f^{k}_{2i-1}. (también se muestran por pantalla)
%
% Autor: José Jaime Noguera.    +INFO: www.uv.es/anims/noguera

function solu=capiaiavpcoefifunciong(nl,nr,r,x)

%Por la derecha
A=matriuiap(1,nl+nr-1,r);
Cd=(A'*A)^(-1)*A';
b0d=(-1:-1:-nr-nl+2)';
b1d=(2:nl+nr-1)';

for l=3:r+1
   coefd(l)=(x-1)^(l-1);
end 

multfi=1-(x-1)+(x-1)*ones(1,r-1)*Cd*b0d-coefd(3:r+1)*Cd*b0d;
multfi1=(x-1)+(x-1)*ones(1,r-1)*Cd*b1d-coefd(3:r+1)*Cd*b1d;
multfi2fin=-(x-1)*ones(1,r-1)*Cd+coefd(3:r+1)*Cd;

%Por la izquierda
A=matriuiap(nl+nr-1,1,r);
Ce=(A'*A)^(-1)*A';
b0e=(nl+nr-1:-1:2)';
b1e=(-nl-nr+2:-1)';

for l=3:r+1
   coefe(l)=(x+1)^(l+1);
end 

multfi_1=-(x+1)-(x+1)*ones(1,r-1)*Ce*b1e+coefe(3:r+1)*Ce*b1e;
multfi_2=-1+(x+1)-(x+1)*ones(1,r-1)*Ce*b0e+coefe(3:r+1)*Ce*b0e;
multfi2_3fin=((x+1)*ones(1,r-1)-coefe(3:r+1))*Ce;

%Total
solu=[multfi2_3fin , multfi_2, multfi_1, multfi , multfi1, multfi2fin];

format rational
  solu
format
sprintf('Comienza en f^{k-1}_{i-(%d)} y acaba en f^{k-1}_{i+(%d)}',nl+nr,nl+nr-1)

