282
8 Approximation numérique des problèmes aux limites
cas correspond au schéma de Crank-Nicolson (voir Section 7.4) qui est
donc inconditionnellement asymptotiquement stable. La discrétisation
globale correspondante (en espace et en temps) est précise à l’ordre deux
en Δt et en h.
Ces résultats sont aussi valables pour l’équation de la chaleur bidimensionnelle. Dans ce cas, on doit simplement remplacer dans (8.38) la
matrice A/h
2 par la matrice définie en (8.33).
Le Programme 8.3 résout numériquement l’équation de la chaleur sur
l’intervalle ]0, T [ et sur le domaine carré Ω =]a, b[ avec le θ-schéma. Les
paramètres d’entrée sont les vecteurs xspan=[a,b] et tspan=[0,T], le
nombre d’intervalles de discrétisation en espace (nstep(1)) et en temps
(nstep(2)), le scalaire mu qui contient le coefficient strictement positif
μ, les fonctions u0, fun et g qui contiennent respectivement la donnée
initiale u
0 (x), le second membre f(x, t) et la donnée de Dirichlet g(x, t),
le réel theta qui correspond au coefficient θ. En sortie, uh contient la
solution numérique au temps final t = T .
Programme 8.3. heattheta : θ-schéma pour l’équation de la chaleur dans un
domaine monodimensionnel
function [xh , uh ]= h e a tthe ta( xspan , tspan , nstep , mu ,...
u0 ,g ,f , theta , varargin )
% H E A T THETA résout l ’ équation de la chaleur avec la
% theta - méthode .
% [XH , UH ]= H E A T THET A( XSPAN , TSPAN , NSTEP , MU ,U0 ,G ,F , THETA )
% résout l ’ équation de la chaleur
% DU / DT - MU D ^2U / DX ^2 = F dans
% ] XSPAN (1) , XSPAN (2)[ x ] TSPAN (1) , TSPAN (2)[ avec la
% theta - méthode pour des c o n d iti ons i n i t iales
% U(X ,0)= U0( X) et des c o n d itions de D i r i chlet
% U(X , T )=G (X ,T ) où X= XSPAN (1) et X = XSPAN (2). MU est
% une c o n s tante positive . F =F (X , T) , G= G(X , T) et
% U0 = U0( X) sont des f o n cti ons inline , anonymes ou
% définies par un M - file . NSTEP (1) est le nombre de
% pas d ’ i n t é gr ation en espace , NSTEP (2) est le nombre
% de pas d ’ i n t é grat ion en temps .
% XH contient les noeuds de d i s c ré tis atio n.
% UH contient la solution n u m ér ique au temps TSPAN (2).
% [XH , UH ]= H E A T THET A( XSPAN , TSPAN , NSTEP , MU ,U0 ,G ,F ,...
% THETA , P1 ,P2 ,...) passe les p a r amè tres s u p p lém enta ire s
% P1 ,P2 ,... aux f o n ctio ns U0 ,G , F .
h = ( xspan (2) -xspan (1))/ nstep (1);
dt = ( tspan (2) -tspan (1))/ nstep (2);
N = nstep (1)+1;
e = ones (N ,1);
D = spdiags ([ -e 2* e -e ] ,[ -1 ,0 ,1] ,N , N );
I = speye (N );
A = I + mu* dt * theta * D/ h ^2;
An = I - mu * dt *(1 - theta )*D /h ^2;
A (1 ,:) = 0; A (1 ,1) = 1;
A(N,:) = 0; A(N,N) = 1;
xh = ( linspace ( xspan (1) , xspan (2) ,N )) ’;
fn = feval (f , xh , tspan (1) , varargin {:});
un = feval ( u0 ,xh , varargin {:});
8 Approximation numérique des problèmes aux limites
cas correspond au schéma de Crank-Nicolson (voir Section 7.4) qui est
donc inconditionnellement asymptotiquement stable. La discrétisation
globale correspondante (en espace et en temps) est précise à l’ordre deux
en Δt et en h.
Ces résultats sont aussi valables pour l’équation de la chaleur bidimensionnelle. Dans ce cas, on doit simplement remplacer dans (8.38) la
matrice A/h
2 par la matrice définie en (8.33).
Le Programme 8.3 résout numériquement l’équation de la chaleur sur
l’intervalle ]0, T [ et sur le domaine carré Ω =]a, b[ avec le θ-schéma. Les
paramètres d’entrée sont les vecteurs xspan=[a,b] et tspan=[0,T], le
nombre d’intervalles de discrétisation en espace (nstep(1)) et en temps
(nstep(2)), le scalaire mu qui contient le coefficient strictement positif
μ, les fonctions u0, fun et g qui contiennent respectivement la donnée
initiale u
0 (x), le second membre f(x, t) et la donnée de Dirichlet g(x, t),
le réel theta qui correspond au coefficient θ. En sortie, uh contient la
solution numérique au temps final t = T .
Programme 8.3. heattheta : θ-schéma pour l’équation de la chaleur dans un
domaine monodimensionnel
function [xh , uh ]= h e a tthe ta( xspan , tspan , nstep , mu ,...
u0 ,g ,f , theta , varargin )
% H E A T THETA résout l ’ équation de la chaleur avec la
% theta - méthode .
% [XH , UH ]= H E A T THET A( XSPAN , TSPAN , NSTEP , MU ,U0 ,G ,F , THETA )
% résout l ’ équation de la chaleur
% DU / DT - MU D ^2U / DX ^2 = F dans
% ] XSPAN (1) , XSPAN (2)[ x ] TSPAN (1) , TSPAN (2)[ avec la
% theta - méthode pour des c o n d iti ons i n i t iales
% U(X ,0)= U0( X) et des c o n d itions de D i r i chlet
% U(X , T )=G (X ,T ) où X= XSPAN (1) et X = XSPAN (2). MU est
% une c o n s tante positive . F =F (X , T) , G= G(X , T) et
% U0 = U0( X) sont des f o n cti ons inline , anonymes ou
% définies par un M - file . NSTEP (1) est le nombre de
% pas d ’ i n t é gr ation en espace , NSTEP (2) est le nombre
% de pas d ’ i n t é grat ion en temps .
% XH contient les noeuds de d i s c ré tis atio n.
% UH contient la solution n u m ér ique au temps TSPAN (2).
% [XH , UH ]= H E A T THET A( XSPAN , TSPAN , NSTEP , MU ,U0 ,G ,F ,...
% THETA , P1 ,P2 ,...) passe les p a r amè tres s u p p lém enta ire s
% P1 ,P2 ,... aux f o n ctio ns U0 ,G , F .
h = ( xspan (2) -xspan (1))/ nstep (1);
dt = ( tspan (2) -tspan (1))/ nstep (2);
N = nstep (1)+1;
e = ones (N ,1);
D = spdiags ([ -e 2* e -e ] ,[ -1 ,0 ,1] ,N , N );
I = speye (N );
A = I + mu* dt * theta * D/ h ^2;
An = I - mu * dt *(1 - theta )*D /h ^2;
A (1 ,:) = 0; A (1 ,1) = 1;
A(N,:) = 0; A(N,N) = 1;
xh = ( linspace ( xspan (1) , xspan (2) ,N )) ’;
fn = feval (f , xh , tspan (1) , varargin {:});
un = feval ( u0 ,xh , varargin {:});
