% inter6.m
% interpolation cubique
% fd, iacs, 26  septembre   2004, 08 janvier 2006
% fd, 29 juin 2026
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
clear , format long
   
printf("inter6 ; interpolation cubique : quelles pentes chosir ?  \n"); 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

printf("\n");

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% title ('Cnam Paris. Travaux pratiques Iacs.') ;
xlabel (' inter6. Interpolation cubique : quelles pentes chosir ? ') ;
pdebut = [-1 1 0] ; 
%  n  nombre de donnees brutes ; c est un nombre d intervalles...
n=5
x =zeros(n+1 , 1) ; 
u0=zeros(n+1 , 1) ; 
dx = 1 / n ;
for j=1:n+1 ; xx = (j-1)*dx ;  
x (j:j , 1) = xx ;
u0(j:j , 1) = polyval(pdebut,xx) ;
end ;
% gset yrange[-0.1:0.4] ; gset xrange[-0.1: 1.1] ; hold off ;


hold off ; 
plot(x,u0(:,1),"*;;",x,u0(:,1),"b;;") ; 
axis ( [ -.05 , 1.05 , -.1 , .4 ]) ;
title ('interpolation affine') ;
print('06-a-diverses-interpolations-de-hermite', '-djpg','-S891,630')  
pause (.5) 



%                  on invente des derivees aux points de la grille 
dd =zeros(n+1,1);
for ll=1:4 ; 
for i=1:n+1 ; 
if ll<=1 ;                dd(i)= 0 ; end ; 
if ((ll>=2)&(ll<=2)) ;    dd(i)= 1 ; end ; 
if ((ll>=3)&(ll<=3)) ;    dd(i)= (-1)**ll ; end ; 
if ((ll>=4)&(ll<=4)) ;    dd(i)= i/(1.5*n+1) ; end ; 
end ; 
%   affichage sur une seconde grille plus fine
nn=22 ;  dy=1/nn ; 
xxx =zeros(nn+1,1);
uu1 =zeros(nn+1,1); uu2 =zeros(nn+1,1); uu3 =zeros(nn+1,1); uu4 =zeros(nn+1,1);
for i=1:nn+1;
xxx(i) = (i-1) * dy ;  
uu1(i) = (1+2*xxx(i))*(xxx(i)-1)*(xxx(i)-1) ; 
uu2(i) = (3-2*xxx(i))*xxx(i)*xxx(i)  ;  
uu3(i) =  xxx(i)*(xxx(i)-1)*(xxx(i)-1)  ; 
uu4(i) =  xxx(i)*xxx(i)*(xxx(i)-1)  ;  end ; 
m=n*nn ;  xxxx=zeros(m+1,1) ;  uuuu=zeros(m+1,1) ; 
dxxxx=1/m ; k=1 ;  xxxx(k:k,1)=0 ; uuuu(k:k,1)=u0(1:1,1) ; 
for j=1:n;
for i=2:nn+1;
k=k+1 ; xxxx(k:k,1)=(k-1)*dxxxx ; 
uuuu(k:k,1)=u0(j:j,1)*uu1(i)+u0(j+1:j+1,1)*uu2(i)+ \
            dd(j:j,1)*uu3(i)+dd(j+1:j+1,1)*uu4(i);
end;end;
%            affichage 
hold on ;



if (ll==1) ; plot(xxxx,uuuu(:,1),"r;;")
title ('premiere possibilite pour les derivees intermediaires') ;
print('06-b-diverses-interpolations-de-hermite', '-djpg','-S891,630')  
pause (.5) ; end 

if (ll==2) ; plot(xxxx,uuuu(:,1),"g;;")
title ('seconde possibilite pour les derivees intermediaires') ;
print('06-c-diverses-interpolations-de-hermite', '-djpg','-S891,630')  
pause (.5) ; end 


if (ll==3) ; plot(xxxx,uuuu(:,1),"c;;")
title ('troisieme possibilite pour les derivees intermediaires') ;
print('06-d-diverses-interpolations-de-hermite', '-djpg','-S891,630')  
pause (.5) ; end 

if (ll==4) ; plot(xxxx,uuuu(:,1),"m;;")
title ('quatrieme possibilite pour les derivees intermediaires') ;
print('06-e-diverses-interpolations-de-hermite', '-djpg','-S891,630')  
pause (.5) ; end 

end 
