%   ondes05.m
%   fd, 13 decembre 2010, 06 mars 2025  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   clear ; format long

fprintf('ondes05 \n') ; 
fprintf('differences finies avec le premier mode de Fourier \n') 
fprintf('mise en evidence de l ordre de convergence...  3 ??? ')



nmail = 6 
nn    = zeros( nmail , 1 ) ;  eerr = nn ; 
%

n = 8    ;  niter = 20 ;   %%%%%%%%%%%%% 
sigma = .8  %%%%%%%%%      regle pour une periode 

for  kkk = 1 : nmail
n
nn(kkk) = log(n) / log(2)  ; 
dx = 1/n ; 

xx = zeros(1,n+1) ; y1 = xx ; 
xa    = 0 ; 
for j = 1:n+1 ; xx(j) = xa ; y1(j) = sin(pi*xa) ; 
xa = xa + dx ; end 

 
dt    = sigma * dx ; 

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

% axis ([ -.01 , 1.01 ,  -1.2  , 1.2  ]) 
t     = 0   ; 
yy = y1 ; yym = yy ;  yyp = yy ;  yye = y1 ; 

for jtime = 1 : niter  
for j = 1:n+1 ; yyp(j) = 0 ; end 
for j = 2:n ; 
yyp(j) = 2*yy(j) - yym(j) + (sigma**2) *  (yy(j+1)-2*yy(j)+yy(j-1))  ; 
yye(j)  =  cos(pi*t) * y1(j) ; end 
t     = t + dt ; 
% plot ( xx,y1,'r;inf;' ,   xx,yyp,'b*;t;' ,  xx,yyp,'b;t;' ) % ,   xx,yye,'b;t;' ) 
% pause (.005) ;

yym = yy ; yy = yyp ; 
end 

err = 0 ; 
for j = 1 : n+1 
err = max (err , abs(y1(j)-yy(j))) ; end 
err   %%%%%%%%%%%%%   erreur L  infini 



eerr(kkk) = log(err) / log(2)  ; 
n = 2*n ; niter = 2*niter ; 
end 

fprintf('mesure de l ordre de convergence par moindres carres')
alpha=-codre(nmail,nn,eerr)


plot ( nn,eerr,'*k;erreurs;' )
axis ([ 2.9 , 8.1 , -25 , -8 ])  
title ('erreur avec les differences finies apres une periode') ;
print('05-differences-finies-convergence' , '-djpg','-S891,630'); 

 



