clear all
close all



% Resolution de - Delta u = f sur l intervalle [0,1]^2
a = 0 ;
b = 1 ;
c = 0 ; 
d = 1 ; 
Nx = 20 ;
Ny = 20 ;


% Pour le test, on prend u(x,y) = sin(pi x) * sin(pi *y) ;
% - Delta u = 2 * pi^2 * u ; 
% donc f = 2 * pi^2 * sin(pi x) * sin(pi *y) ;

% definition de f
fonctionf = @(x,y) 2 * (pi)^2 * sin(pi*x) .* sin(pi*y) ;



% resolution du probleme de poisson 
[U,X, Y] = Poisson2D(a,b,c,d,Nx,Ny,fonctionf);

% Calcul de la solution exacte  sur la grille definie par les matrices X et
% Y 
SolExacte =zeros(Nx, Ny) ; 
for i =1 :Nx 
    for j = 1 :Ny 
        SolExacte(i,j) = sin(pi * X(i,j)) * sin(pi * Y(i,j)) ; 
    end
end

% Visualisation des resultas 
% Figure 1 : solution approchee
figure(1) 
pcolor(X,Y,U) ;
colorbar ;
title('solution approchee') ; 



figure(2) 
pcolor(X,Y, SolExacte) 
colorbar ;
title('solution excate') ; 

Erreur = U - SolExacte ;
figure(3)
pcolor(X,Y, Erreur) ;
colorbar ;
title('Erreur') ; 

% calcul de l erreur relative 
% On evalue la norme L2 de Err = (U-SolExacte) en utilisant la methode des
% rectangles 
% On calcule une norme relative NormeErreur 
% NormeErreur = sqrt( (\int_{Omega} Err^2)/(\int_{Omega} SolExacte^2) )  
% (\int_{Omega} Err^2)^(1/2)   = (hx*hy) * sum(sum(Err)) ;
hx = X(2,1) - X(1,1) ;
hy = Y(1,2) - Y(1,1) ;
Norme_L2_Erreur = sqrt ( hx * hy * sum(sum(Erreur.^2))) ;
Norme_L2_SolExacte =  sqrt ( hx * hy * sum(sum(SolExacte.^2))) ;
ErreurRelative = Norme_L2_Erreur/ Norme_L2_SolExacte 







