Travaux Pratiques
Travaux Pratiques
Travaux Pratiques
Taik
TP AN3 LST-MI
Departement de Mathematiques
FST-Mohammedia, (2008)
Contents
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
4
5
9
9
Equation de Poisson 3D
11
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
24
24
24
28
32
37
List of Figures
1.1
1.2
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
4.1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
14
18
18
21
21
22
22
23
23
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
TP 1
Resolution dune EDP elliptique
Exercice1:
Soit a` resoudre lequation de Laplace
A. Taik
TP AN3 LST-MI
4 1
0
0
u1,1
A = 1 4 1 , B = 0 et U = u2,1
0 1
4
100
u3,1
Avec une des methodes vues en Analyse Numerique II (resolution des syst`emes lineaires), nous
obtenons la solution:
1.786
U = 7.143
26.786
Les conditions aux limites nous ont ramene a` avoir la grille suivante dans laquelle nous allons
chercher les inconnus de lequation:
~y
6
u3,1
u3,2
u2,3
u3,4
u3,5
u3,6
u3,7
100
u2,1
u2,2
u2,3
u2,4
u2,5
u2,6
u2,7
100
u1,1
u1,2
u1,3
u1,4
u1,5
u1,6
u1,7
100
Departement de Mathematiques
FST-Mohammedia, (2008)
~x
A. Taik
TP AN3 LST-MI
Avec un petit programme sur Matlab, nous transformons la matrcie U en un vecteur ~v pour
pouvoir bien resoudre le syst`eme sans erreur puisque la resolution du syst`eme AU = B e xige que
U soit un vecteur. Voici le programme qui a assure la transformation:
********************************************
for j=1:ny-1
for i=1:nx-1
v(k)=u(i,j);
k=k+1;
end
end
**********************************************
Ce qui nous donne apr`es, le syst`eme:
4v1 + v2 + + v8 + = 0
v1 4v2 + v3 + + v9 + = 0
..
.
+ v6 4v7 + = 100
v1 + 4v8 + v9 + = 0
..
.
Il nous reste maintenant a` resoudre le syst`eme matriciel suivant: A ~v = B, avec
..
4 1
1
.
1 4 1
.
1
..
0
1
4
1
1
100
...
...
...
..
et B =
1 4 0
1
A=
..
1
.
0 4 1
1
..
.. .. ..
0 ...
100
.
.
.
1 .
.
.
.
.
..
.
..
0
1
1 4
100
Lutilisation de la methode de Jacobi ou Gauss-Seidel pourrait nous donner les solutions du
syst`eme. Toutefois, nous allons adapter la resolution directe comme le titre lindique pour resoudre
ce syst`eme. voici le programme complet, explique, saisi en Matlab qui nous a permis davoir la
matrice U a` partir des calculs des e lements du vecteur ~v .
*************************************************
clc;clear
h=2.5;
a=0;
Departement de Mathematiques
FST-Mohammedia, (2008)
A. Taik
TP AN3 LST-MI
b=20;
c=0; d=10;
nx=(b-a)/h;
ny=(d-c)/h;
n=(nx-1)*(ny-1);
%%% (remplissage des e lements de la matrice A)
A=zeros(n);
for i=1:(n-1)
A(i,i)=-4;
A(i+1,i)=1;
A(i,i+1)=1;
if (mod(i,(nx-1))==0)
A(i+1,i)=0;
A(i,i+1)=0;
end
end
for i=1:n-nx+1
A(nx-1+i,i)=1;
A(i,nx-1+i)=1;
end
A(n,n)=-4;
%%% (remplissage des e lements de la matrice B)
for i=1:n
B(i)=0;
if (mod(i,nx-1)==0)
B(i)=-100;
end
end
%%% (resolution du syst`eme Av=B et transformation du vecteur ~v en la matrice U ).
V = A\B 0 ;
k=1;
for j=1:ny-1
for i=1:nx-1
u(j,i)=V(k);
k=k+1;
end
end
%%% (decallage des e lements pour inserer les conditions aux limites)
for j=ny:-1:2
for i=nx:-1:2
u(j,i)=u((j-1),i-1);
end
Departement de Mathematiques
FST-Mohammedia, (2008)
A. Taik
TP AN3 LST-MI
end
for i=1:nx
for j=1:ny
u(1,i)=0;
u(j,1)=0;
u(ny+1,i)=0;
u(j,nx+1)=100;
end
end
u(1,nx+1)=0;
%%% les vecteurs x et y
x=0:h:b; y=0:h:d;
%%% (affichage la courbe en tenant compte des vecteurs x ,y et de la matrice U)
mesh(x,y,u)
**********************************************
Voici en resume, les courbes quon obtient en variant h:
Departement de Mathematiques
FST-Mohammedia, (2008)
A. Taik
TP AN3 LST-MI
k+1
k
k
uk+1
i1,j + ui,j1 + ui+1,j + ui,j+1
(2.1)
4
Cette methode est appelee methode iterative de Liebmann. Une condition initiale est e xigee,
comme pour toute autre methode iterative, pour pouvoir commencer le processus.
Pour cette methode, on a besoin de seulement 6000 bytes (octets) pour resoudre le syst`eme au lieu
de 14000 bytes pour la methode directe, pour h = 1.25.
On peut aussi e crire:
"
#
k+1
k+1
k
k
u
+
u
+
u
+
u
i,j+1
i+1,j
i1,j
i,j1
k
uk+1
i,j = ui,j +
4
uk+1
i,j =
le terme entre crochets est appele residus conu comme un ajustement de la valeur precedente uki,j
pour avoir la valeur uk+1
i,j
2.1.
Relaxation:
"
k
uk+1
i,j = ui,j
k+1
k
k
uk+1
i1,j + ui,j1 + ui+1,j + ui,j+1
+w
4
avec:
wopt =
2+
4 (cos nx + cos ny )2
************************************************
clear; clc;
a=0; b=20;
c=0; d=10;
h=0.625 ;
%%% les vecteurs ox,
~ oy
~ x=0:h:b; y=0:h:d;
nx=(b-a)/h; ny=(d-c)/h;
c=cos(pi/nx)+cos(pi/xy);
w=4/(2+sqrt(4-C*C));
u=zeros(ny+1,nx+1);
v=zeros(ny+1,nx+1);
Departement de Mathematiques
FST-Mohammedia, (2008)
A. Taik
TP AN3 LST-MI
for j=2:ny
u(j,nx+1)=100;
end
while (abs(norm(u-v) 1e-6))
v=u;
for j=2:nx
for i=2:ny
u(i,j)= u(i,j)+w/4*(u(i+1,j)+u(i-1,j)+u(i,j+1)+u(i,j-1)-4*u(i,j));
end
end
end
mesh(x,y,u)
*************************************************
Voici les courbes representatives pour chaque valeur de h.
Departement de Mathematiques
FST-Mohammedia, (2008)
10
TP 2
Equation de Poisson 3D
Exercice:
Soit lequation de Poisson (3D):
f (x, y, z) =
11
TP 3
Resolution dune EDP parabolique
TP:
u
t
u
t
2u
2
c x
100x si x [0, 1]
100(2 x) si x [1, 2]
u(0, t) = u(2, t) = 0
u(x, 0) =
Prendre = 0.13, c = 0.11, = 7.8g/cm3 , x = 0.25. t sera donne par les conditions de
t
stabilite definies par linequation: r = c
< 12 . La solution analytique est donnee par:
x2
uexact (x, t) = 800
X
n=0
1
(2n + 1)(x 1)
2
cos
e0.3738(2n+1) t
2
+ 1)
2
2 (2n
1
2
puis r <
1
.
2
Que
12
A. Taik
TP AN3 LST-MI
X
n=0
1
(2n + 1)(x 1)
2
e0.3738(2n+1) t
cos
2
+ 1)
2
2 (2n
Puisque nous sommes en analyse numerique et non en analyse fondamentale nous devons savoir
que nous ne travaillons quavec des points dun maillage et non dans tout le domaine comme on
aurait cru le faire. Pour e valuer la valeur numerique de uexact pour tout point appartenant dans la
grille, nous devons faire une boucle qui, pour chaque point (xi , tj ), calcule uexact (xi , tj ).
Posons = 100 acceptable en analyse numerique, nous avons donc le programme suivant qui calcule les e lements de la matrice v representant exactement les valeurs de u(xi , tj ) dans le cadrillage.
***********************************
clc; clear;
k=0.13;c=0.11; p=7.8;dx=0.25;
r=1/4
dt=dx*dx*c*p*r/k;
Tmax=100*dt;%%(Nous avons fait Tmax un multiple de dt pour quen le divisant par dt, nt soit
toujours un entier, car sinon le programme ne compilera pas)%
cla=0; clb=0;
a=0;b=2;
nx=(b-a)/dx;
nt=Tmax/dt;
x=0:dx:b; t=0:dt:Tmax;
% *********** la solution analytique ********************
v=zeros(nx+1,nt+1);
n=0;
while(n 100)
for i=1:nx+1
for j=1:nt+1
u(i, j) = v(i, j) + 800 1/(pi2 (2 n + 1)2 ) cos(pi (2 n + 1) (x(i) 1)/2) exp(0.3738
(2 n + 1)2 t(j));
v(i,j)=u(i,j);
end
end
n=n+1;
end
mesh(t,x,v)
*****************************
Voici la courbe que nous avons obtenue pour r = 41 :
Departement de Mathematiques
FST-Mohammedia, (2008)
13
A. Taik
TP AN3 LST-MI
2u
x2
par:
uji+1 2uji + uji+1
2u
(x
,
t
)
i j
x2
(x)2
(2.1)
est une derivee simple cest a` dire une derivee premi`ere, nous utilisons ici lune des
Puisque u
t
trois formules vues en projet 1, paragraphe 1.1.1. Prenons la formule avale (droite):
uj+1 uji
u
(xi , tj ) i
t
t
(2.2)
Departement de Mathematiques
FST-Mohammedia, (2008)
14
A. Taik
TP AN3 LST-MI
uji = (x)
uj+1
2 c (ui+1 2ui + ui1 )
i
t
Posons r = (x)
equation devient:
2 c , l
uj+1
uji
i
t
uj+1
= ruji+1 + (1 2r)uji + ruji1
i
Ceci est lequation discretisee de lequation de la chaleur avec la methode des differences finies.
On lappelle e quation de la methode directe.
Remark 1. :
1. r regroupe les constantes physiques du probl`eme et celles de la discretisation de lespace
[a, b] et du temps [0, Tmax ]. Donc les pas de discretisations influencent lequation discretisee.
2. Pour j = 0, t = 0 et u1i = ru0i+1 +(12r)u0i +ru0i1 lequation necessite la connaissance
de la condition initiale pour demarrer le processus.Cette condition nest autre que f (x, 0) =
f (xi ) donnee par lenonce du probl`eme.
uj+1
= ruj3 + (1 2r)uj2 + ruj1
2
j+1
.
U
= M Uj + N
..
0 j nt 1
..
j+1
unx 1 = rujnx + (1 2r)ujnx 1 + rujnx 2
Avec: u0j la condition aux limites en a, on la notera dans la programmation uj0 = cla et ujnx la
condition aux limites en b qui sera notee ujnx = clb. Nous avons donc:
M =
1 2r
1 2r
0
..
.
..
.
0
r
...
1 2r
...
...
...
r
...
..
r
0
0
..
.
..
.
...
1 2r
r
r
1 2r
Departement de Mathematiques
FST-Mohammedia, (2008)
rU0j
0
..
.
.
et N =
..
.
..
0
rUnj x
15
A. Taik
TP AN3 LST-MI
La matrice M est une matrice tridiagonale ou trigonale et la resolution est dautant plus simple
a` programmer avec une des methodes iteratives ou directes vues en analyse numerique II. Mais,
encore une fois, nous allons nous suffire de la resolution directe par la division matricielle. Cest
a` dire si on a a` resoudre le syst`eme Au = B alors on e crira en Matlab x = A \ B et nous aurons
automatiquement la reponse.
Attention: B doit e tre un vecteur colonne de meme nombre delements que le nombre des lignes
de A et le vecteur ~u sera donne en un vecteur colonne. Il ne nous est pas nouveau de donner la
transposee dune matrice pour avoir tout ce que nous voulons.
Nous avons pris r = 14 pour le cas o`u r < 12 et r = 0.625 pour le cas o`u r > 21 , on a le programme
suivant qui nous calcule les valeurs du vecteur ~u, remplace par le vecteur ~h dans le programme
pour pouvoir lier le programme avec le premier calculant les e lements de la matrice v pour la solution exacte, a` chaque instant j et qui les stocke dans une matrice w, en commanant par les valeurs
initiales qui ne sont dautres que les conditions initiales. Pour avoir la courbe du deuxi`eme cas, il
suffit de remplacer r par 0.625
******************************************
clc; clear;
k=0.13;c=0.11;
p=7.8;dx=0.25;
r=1/4; dt=dx*dx*c*p*r/k;
Tmax=100*dt;
a=0;b=2;
cla=0;clb=0;
nx=(b-a)/dx;
nt=Tmax/dt;
x=0:dx:b; t=0:dt:Tmax;
for i=1:nx-1
N(i)=0;
end
N(1)=r*cla;
N(nx-1)=r*clb;
for i=1:nx-2
M(i,i)=1-2*r;
M(i,i+1)=r;
M(i+1,i)=r;
end
M(nx-1,nx-1)=1-2*r;
for i=1:nx+1
Departement de Mathematiques
FST-Mohammedia, (2008)
16
A. Taik
TP AN3 LST-MI
if x(i) < 1
Ci(i)=100*x(i);
else
Ci(i)=100*(2-x(i));
end
end
for i=1:nx-1
h(i)=Ci(i+1);
end
j=1;
h=h;
while(j < nt + 2)
for i=1:nx-1
w(i,j)=h(i);
end
h=M*h+N;
j=j+1;
end
for i=nx:-1:2
for j=nt+1:-1:1
w(i,j)=w(i-1,j);
end
end
for j=1:nt+1
w(1,j)=0;
w(nx+1,j)=0;
end
mesh(t,x,w);
*********************************
Voici les courbes obtenues apr`es compilation pour les deux cas:
Constatations:
Nous avons remarque, dapr`es les deux graphes corresondantes a` r < 12 et r > 12 , que la methode
presente deux regions de stabilite. Si r < 12 la methode est stable et converge vers la solution
analytique. Nous avons une courbe semblable a` celle de la solution analytiquement e tablie. Plus
j saccroit, plus les valeurs du vecteur ~u deviennent nulles. Ce qui est en entier accord avec la
solution e xacte qui est une serie des fonctions convergente, alors son terme general doit tendre
forcement vers 0.
Mais si r > 12 , la methode presente des failles et la courbe ne converge meme pas. Lallure obtenue
dans ce cas est totalement en desaccord avec celle de la solution e xacte.
Departement de Mathematiques
FST-Mohammedia, (2008)
17
A. Taik
TP AN3 LST-MI
Pour avoir un bon resultat dans cette methode, il faut donc tenir compte de la valeur de r car elle
influencera le resultat.
1
2
j+1
uj+1
+uj+1
i+1 2ui
i1
2
(x)
uj+1
uji
i
t
j
j
j+1
j+1
t
2 uj+1
uji = (x)
+ uj+1
2 c ui+1 2ui + ui1 + ui+1 2ui
i
i+11 .
t
Posons r = (x)
equation:
2 c , on trouve l
j+1
j
j
j
ruj+1
ruj+1
i1 + (2 + 2r)ui
i+1 = rui1 + (2 2r)ui + rui+1
ruj+1
+ (2 + 2r)uj+1
ruj+1
= ruj0 + (2 2r)uj1 + ruj2
0
1
2
j+1
+ (2 + 2r)uj+1
ruj+1
= ruj1 + (2 2r)u2i + ruj3
1
2
3
ruj+1
j+1
j+1
ru2 + (2 + 2r)u3 ru4 = ruj2 + (2 2r)uj3 + ruj4
..
..
j+1
j
j
j+1
j
ruj+1
nx 2 + (2 + 2r)unx 1 runx = runx 1 + (2 2r)unx + runx
= M1 U j+1 + N1 = M2 U j + N2
Departement de Mathematiques
FST-Mohammedia, (2008)
18
A. Taik
TP AN3 LST-MI
Avec:
2 + 2r
r
0
..
r
.
2
+
2r
r
r
2 + 2r
r
0
M1 = .
.
..
.
..
..
..
.
..
.
..
.
r
0
M2 =
2 2r
2 2r
0
..
.
..
.
0
r
..
2 2r
..
.
..
.
..
.
r
..
r
0
rU0j+1
0
..
.
...
..
,
N
=
1
.
..
0
..
2 + 2r
r
0
r
2 + 2r
rUnj+1
x
0
..
.
..
.
j
rU
0
0
0
..
.
..
.
..
...
.
.
, N2 =
..
..
.
.
0
..
2 2r
r
0
r
2 2r
rUnj x
19
A. Taik
TP AN3 LST-MI
N2(1)=-r*cla;
N2(nx-1)=-r*clb;
for i=1:nx-2
M1(i,i)=2+2*r;
M1(i,i+1)=-r;
M1(i+1,i)=-r;
M2(i,i)=2-2*r;
M2(i,i+1)=r;
M2(i+1,i)=r;
end
M1(nx-1,nx-1)=2+2*r;
M2(nx-1,nx-1)=2-2*r;
for i=1:nx+1
if x(i)<1
Ci(i)=100*x(i);
else
Ci(i)=100*(2-x(i));
end
end
for i=1:nx-1
h(i)=Ci(i+1);
end
j=1;
h=h;
I=eye(nx-1)
while(j<nt+2)
for i=1:nx-1
w(i,j)=h(i);
end
h=(M1\I)*(M2*h+(N2-N1));
j=j+1;
end
for i=nx:-1:2
for j=nt+1:-1:1
w(i,j)=w(i-1,j);
end
end
for j=1:nt+1
w(1,j)=0;
w(nx+1,j)=0;
end
mesh(t,x,w);
Departement de Mathematiques
FST-Mohammedia, (2008)
20
A. Taik
TP AN3 LST-MI
******************************************
Voici les courbes representatives de w dans les deux situations:
Constatations
Nous remarquons ici que la methode de Crank - Nicolson est inconditionnellement stable ( cest a`
dire quel que soit r R). Toutefois, quand r > 21 la methode converge plus vite vers 0 que si cest
le cas contraire. Il faut aussi savoir quon paie cette stabilite par la resolution, a` chaque instant tj ,
dun syst`eme lineaire qui necessite une inversion de la matrice M1 tridiagonale, soit:
M1 U j+1 + N1 = M2 U j + N2
= U j+1 = M11 [M2 U j + (N2 N1 )]
4.1. Comparaison de uexact (0.25, t) et uapp (0.25, t), uexact (0.75, t) et uapp (0.75, t)
Nous combinons le programme de la solution analytique avec celui de la solution numerique directe pour pouvoir faire la comparaison, puis on ajoute a` la fin du nouveau programme, la partie
Departement de Mathematiques
FST-Mohammedia, (2008)
21
A. Taik
TP AN3 LST-MI
suivante:
Remarquons que xi = 0.25 si i = 2 et xi = 0.75 pour i = 4.
**************************
Sa1=v(2,:);
Sn1=w(2,:);
plot(t,Sa1,r,t,Sn1,g);
Sa2=v(4,:);
Sn2=w(4,:)
figure(2)
plot(t,Sa2,r,t,Sn2,g);
**************************
Voici donc les courbes comparatives de ces deux methodes aux points 0.25 et 0.75:
4.2. Comparaison de uexact (x, 0.99) et uapp (x, 0.99), uexact (x, 1.98) et uapp (x, 1.98)
Remarquons quavec r = 14 , on na pas un point j tel que tj = 0.99 ni tj = 1.98 mais on voit que
pour j = 10, tj = 0.9281 0.99 et pour j = 20, tj = 1.9594 1.98. On refait ensuite la meme
chose mais on ajoute a` present la partie suivate a` la fin de la combinaison:
%%********************************
Sa1=v(:,10);
Sn1=w(:,10);
plot(t,Sa1,r,t,Sn1,g);
Sa2=v(:,20);
Departement de Mathematiques
FST-Mohammedia, (2008)
22
A. Taik
TP AN3 LST-MI
Sn2=w(:,20)
figure(2) plot(t,Sa2,r,t,Sn2,g);
*******************************
Voici donc les courbes comparatives des solutions pour les deux methodes a` tj = 0.9281 et tj =
1.9594:
Departement de Mathematiques
FST-Mohammedia, (2008)
23
TP 4
Resolution dune EDP hyperbolique
1. Exercices dapplication
1.1. Exercice 1:
Soit a` resoudre:
2u
t2
u
t
= 2 xu2 4
= 0, 0 x 1
12x, 0 x 0.25
u(x, 0) =
4 4x, 0.25 x 1
u(0, t) = u(1, t) = 0
Prendre x = 0.25 et t = 0.1768
Corrige
On a a = 2, b = 0, c = 1 et e = 4,
Donc: b2 4ac = 0 4(2)(1) = 8 > 0, m1 =
+2 2
4
2
2
et m2 =
2
x
2
et t =
2
x
2
2
.
2
A. Taik
TP AN3 LST-MI
~t
m
q
m+
p
R
5
6
@R
@
@
@
@
@
@
@
@
R
R
R
1
2
3
@
@
@
t = t @
@
@
m+
q
m@p
@
@
@
@
@
@
@
@
@
@
@
@
t = 0
@
@
R4
@
@
- ~
x
Figure 4.1:
2 22 (pR2 pP ) + (qR2 qP ) + 4t = 0,
2
(pR2
2
pQ ) + (qR2 qQ ) + 4t = 0.
2(pR2 + 4) + qR2 + 4t = 0.
Apr`es resolution de ce syst`eme, on obtient: pR2 = 4 et qR2 =
2
2
0 22
4 4
uR 2 = (
) 0.25 + (
) 0.1768 + 3.
2
2
uR2 = 1.9375
En continuant de la sorte a` calculer les autres valeurs de u, on remplit le tableau suivant:
Departement de Mathematiques
FST-Mohammedia, (2008)
25
A. Taik
TP AN3 LST-MI
x
u(t = 0)
u(t = 0.1768)
u(t = 0.3535)
u(t = 0.5303)
0
0.25
0.5
0.0
3.0
2.0
0.0 0.9375 1.9375
0.0 -1.1875 -0.2500
0.0 -1.3125 -2.4375
0.75
1.0
0.9375
0.8125
-1.3125
1
0.0
0.0
0.0
0.0
26
A. Taik
TP AN3 LST-MI
B=[a*m*p(i-1,j-1)+c*q(i-1,j-1)-e*(t(i,j)-t(i-1,j-1)) ;
-a*m*p(i-1,j+1)+c*q(i-1,j+1)-e*(t(i,j)-t(i-1,j+1))];
V=A\B;
p(i,j)=V(1);
q(i,j)=V(2);
u(i,j)=((p(i,j)+p(i-1,j-1))/2)*(d(i,j)-d(i-1,j-1))
+((q(i,j)+q(i-1,j-1))/2)*(t(i,j)-t(i-1,j-1))+u(i-1,j-1);
end
for j=1:n+1
if(j==1)
d(i,j)=0;
t(i,j)=t(i-1,j+1)-m*(d(i,j)-d(i-1,j+1));
q(i,j)=0;
A=[-a*m];
B=[-a*m*p(i-1,j+1)+c*q(i-1,j+1)-e*(t(i,j)-t(i-1,j+1))];
V=A\B;
p(i,j)=V(1);
else
if(j==n+1)
d(i,j)=1;
t(i,j)=t(i-1,j-1)+m*(d(i,j)-d(i-1,j-1));
A=[a*m];
B=[a*m*p(i-1,j-1)+c*q(i-1,j-1)-e*(t(i,j)-t(i-1,j-1))];
V=A\B;
p(i,j)=V(1);
end
end
end
end mesh(t,d,double(u))
Remarque: B est une matrice qui s\ecrit sous la forme B=[v;w]
suite \a la longueur du code nous avons tronqu\es lexpression
de B de m\eme pour lexpression de u
Execution du code:
Constat
Dans ce cas les caracteristiques donnees par lequation am2 bm + c sont des droites.ici nous
avons pris un pas de discretisation egal a` 0.25.
Departement de Mathematiques
FST-Mohammedia, (2008)
27
A. Taik
TP AN3 LST-MI
x
u(t = 0)
u(t = 0.1768)
u(t = 0.3535)
u(t = 0.5303)
0
0.25
0.5
0.0
3.0
2.0
0.0 0.9375 1.9375
0.0 -1.1875 -0.2500
0.0 -1.3125 -2.3750
0.75
1.0
0.9375
0.8750
-1.3125
1
0.0
0.0
0.0
0.0
1.2. Exercice 2:
Soit a` resoudre:
2u
2u
2 = (1 + 2x) x2 , x [0, 1]
u(x, 0) = 0
u
(x, 0)
t
= x(1 x)
u(0, t) = u(1, t) = 0
Corrige
Pour ce probl`eme, a = (1+2x), b = 0, c = 1, e = 0. La resolution de lequation am2 +bm+c =
0 donne:
s
1
m=
(1 + 2x)
Les courbes caracteristiques sont obtenues en resolvant les e quations differentielles:
q
dt
1
dx = 1+2x ,
dt
dx
q
=
1
.
1+2x
t = t0 + 1 + 2x 1 + 2x0 , pour m+ ,
t = t0
1 + 2x +
1 + 2x0 , pour m .
La figure suivante nous montre les differentes courbes caracteristiques que nous obtenons avec
cette e quation.
On choisit deux points P (0, 0.25) et Q(0, 0.75) et on se propose de chercher la valeur de u dans
leur intersection R qui, apr`es resolution du syst`eme, donne les coordonnees R(0.4841, 0.1782).
En suite , on resout lequation ?? pour avoir p =
u
x
et q =
u
.
t
Departement de Mathematiques
FST-Mohammedia, (2008)
28
A. Taik
TP AN3 LST-MI
Au point P : x = 0.25, t = 0, u = 0; p = ( u
) = 0;
x P
q = ( u
) = x x2 = 0.8175;
t P
m=
a = (1 + 2x) = 1.5, b = 0, c = 1, e = 0
Au point Q: x = 0.75, t = 0, u = 0; p = 0;
q = ( u
) = x x2 = 0.1875;
t P
m=
a = (1 + 2x) = 2.5, b = 0, c = 1, e = 0
Au point R: x = 0.4841, t = 0.1783;
m+ =
m =
a = (1 + 2x) = 1.9682, b = 0, c = 1, e = 0
Apr`es utilisation de deux valeurs de m en chaque point, lequation ?? donne le syst`eme suivant:
29
A. Taik
TP AN3 LST-MI
Implementation numerique
clear all; clc;
syms a b c e x u z h;
a=input(donner la valeur de a: );
%
b=input(donner la valeur de b: );
%
c=input(donner la valeur de c: );
%
e=input(donner la valeur de e: );
%
dx=input(entrer le pas de la discretisation: );
%
n=1/dx; N=n; d=zeros(N+1,n+1); t=zeros(N+1,n+1);
%
w=x.((1:n+1)*(1:n+1)); v=x.((1:n+1)*(1:n+1));
p=zeros(N+1,n+1); q=zeros(N+1,n+1); u=zeros(N+1,n+1);
delta=b*b-4*a*c; k=(b-sqrt(delta))/(2*a); g=simplify(k);
f=int(g,x); i=1; y=0:dx:1;
%
for j=1:n+1
d(i,j)=y(i,j);
w(i,j)=z-t(i,j);
v(i,j)=int(g,d(i,j),h);
q(i,j)=d(i,j)*(1-d(i,j));
p(i,j)=0;
r(i,j)=subs(a,x,d(i,j));
m(i,j)=subs(g,x,d(i,j));
u(i,j)=0;
end
%
j=1;
%
for i=2:N+1
u(i,j)=0;
q(i,j)=0;
u(i,n+1)=0;
q(i,n+1)=0;
end
%
for i=2:N+1
Departement de Mathematiques
FST-Mohammedia, (2008)
30
A. Taik
TP AN3 LST-MI
for j=2:n
M=w(i-1,j-1)-v(i-1,j-1);
T=w(i-1,j+1)+v(i-1,j+1);
[d(i,j),t(i,j)]=solve(M,T);
v(i,j)=int(g,d(i,j),h);
w(i,j)=z-t(i,j);
r(i,j)=subs(a,x,d(i,j));
m(i,j)=subs(g,x,d(i,j));
S1=((r(i,j)+r(i-1,j-1))/2)*((m(i,j)+m(i-1,j-1))/2);
S2=((r(i,j)+r(i-1,j+1))/2)*((-m(i,j)-m(i-1,j+1))/2);
A=[S1 c ; S2 c];
B=[S1*p(i-1,j-1)+c*q(i-1,j-1)-e*(t(i,j)-t(i-1,j-1)) ;
S2*p(i-1,j+1)+c*q(i-1,j+1)-e*(t(i,j)-t(i-1,j+1))];
V=A\B;
p(i,j)=V(1);
q(i,j)=V(2);
u(i,j)=((p(i,j)+p(i-1,j-1))/2)*(d(i,j)-d(i-1,j-1))
+((q(i,j)+q(i-1,j-1))/2)*(t(i,j)-t(i-1,j-1))+u(i-1,j-1);
end
%
for j=1:n+1
if(j==1)
d(i,j)=0;
t(i,j)=t(i-1,j+1)-subs(sqrt(1+2*x),d(i,j))...
+subs(sqrt(1+2*x),d(i-1,j+1));
r(i,j)=subs(a,x,d(i,j));
m(i,j)=subs(g,x,d(i,j));
v(i,j)=int(g,d(i,j),h);
w(i,j)=z-t(i,j);
S2=((r(i,j)+r(i-1,j+1))/2)*((-m(i,j)-m(i-1,j+1))/2);
A=[S2];
B=[S2*p(i-1,j+1)+c*q(i-1,j+1)-e*(t(i,j)-t(i-1,j+1))];
V=A\B;
p(i,j)=V(1);
else
if(j==n+1)
d(i,j)=1;
t(i,j)=t(i-1,j-1)+subs(sqrt(1+2*x),d(i,j))...
-subs(sqrt(1+2*x),d(i-1,j-1));
r(i,j)=subs(a,x,d(i,j));
m(i,j)=subs(g,x,d(i,j));
v(i,j)=int(g,d(i,j),h);
Departement de Mathematiques
FST-Mohammedia, (2008)
31
A. Taik
TP AN3 LST-MI
w(i,j)=z-t(i,j);
S1=((r(i,j)+r(i-1,j-1))/2)*((m(i,j)+m(i-1,j-1))/2);
A=[S1];
B=[S1*p(i-1,j-1)+c*q(i-1,j-1)-e*(t(i,j)-t(i-1,j-1))];
V=A\B;
p(i,j)=V(1);
end
end
end
end
Execution du code:
0.0
0.0
0.0 0.00235
0.0 0.0297
0.0 -0.0010
0.0
0.0334
-0.0205
-0.0187
0.0
0.0
0.0209 0.0
0.0017 0.0
-0.0329 0.0
Constat:
Dans ce cas les caracteristiques ne sont pas des droites ,la pente m est une fonction en x. Nous
avons pris un pas e gal a` 0.25.
1.3. Exercice 3:
Soit a` resoudre le syst`eme dequations:
2u
2u
2
2 u t2 + (1 x ) = 0, x [0, 1]
u(0, t) = u(1, t) = 0.
Corrige
On consid`ere le point R donne par lintersection de la caracteristique de pente positive du point
P (0.2, 0) et la caracteristique de pente negative du point Q(0.4, 0). Comparons cette e quation avec
la forme standard:
auxx + buxt + cutt + e = 0,
Departement de Mathematiques
FST-Mohammedia, (2008)
32
A. Taik
TP AN3 LST-MI
u
= 1 2x,
x
u
= 0.
t
Alors:
qP = 0 et qQ = 0
pour avoir les coordonnees du point R, nous devons connatre la pente m des caracteristiques.
En utilisant lequation : am2 bm + c = 0, on obtient:
b b2 ac
4u
m=
=
= u.
2a
2
Puisque m depend de la solution u, nous aurons besoin de trouver le point R par des approximations. Pour un premier essai, on utilise des valeurs initiales le long de tout larc; i.e, on prend
m+ = +mP et m = mQ :
m+ = uP = 0.16 = 0.4,
m = uq = 0.24 = 0.490.
A present, on peut estimer les coordonnees de R en resolvant le syst`eme:
33
A. Taik
TP AN3 LST-MI
Nous remplacons les contantes connues par leurs valeurs pour chaque caracteristique pour avoir le
syst`eme suivant:
0.04 + 0.096
(1)(0.4)(pR 0.6) + (0.16)(qR 0) + 1
(0.044) = 0
2
0.16 + 0.096
(1)(0.490)(pR 0.2) + (0.24)(qR 0) + 1
(0.044) = 0
2
Apr`es resolution, on obtient pR = 0.399 et qR = 0.246.
Pour une premi`ere approximation de u au point R, on a:
u = px + qt,
uR 0.16 =
0.6 + 0.399
0 0.246
(0.310 0.2) +
(0.044 0),
2
2
uR = 0.2095
0.2 + 0.399
0 0.246
(0.310) +
(0.044 0),
2
2
uR = 0.2076 0.2095
Implementation numerique
clear all; syms a b c e u x;
a=input(donner la valeur de a: );
b=input(donner la valeur de b: );
u=input(donner la valeur de u:);
c=input(donner la valeur de c: );
e=input(donner la valeur de e: );
dx=input(entrer le pas de la discretisation: );
n=1/dx; N=n; delta=b*b-4*a*c; m=(b+sqrt(delta))/(2*a);
d=zeros(N+1,n+1); t=zeros(N+1,n+1); q=zeros(N+1,n+1);
p=zeros(N+1,n+1); f=diff(u); i=1; y=0:dx:1; for j=1:n+1
d(i,j)=y(i,j);
u(i,j)=d(i,j)*(1-d(i,j));
m(i,j)=sqrt(u(i,j));
p(i,j)=subs(f,x,d(i,j));
q(i,j)=0;
h(i,j)=subs(e,x,d(i,j));
r(i,j)=subs(c,x,d(i,j));
Departement de Mathematiques
FST-Mohammedia, (2008)
34
A. Taik
TP AN3 LST-MI
end
j=1;
for i=2:N+1
u(i,j)=0;
u(i,n+1)=0;
if(mod(i,2)==0)
for j=2:n+1
A=[1 -m(i-1,j-1) ; 1 m(i-1,j)];
B=[t(i-1,j-1)-m(i-1,j-1)*d(i-1,j-1)...
+ t(i-1,j)+m(i-1,j)*d(i-1,j)];
K=A\B;
t(i,j)=K(1);
d(i,j)=K(2);
u(i,j)=d(i,j)*(1-d(i,j));
m(i,j)=sqrt(u(i,j));
h(i,j)=subs(e,d(i,j));
r(i,j)=subs(c,x,d(i,j));
S1=(h(i,j)+h(i-1,j-1))/(2);
S2=(h(i,j)+h(i-1,j))/(2);
A=[a*m(i-1,j-1) r(i-1,j-1)-a*m(i-1,j) r(i-1,j)];
B=[a*m(i-1,j-1)*p(i-1,j-1)+r(i-1,j-1)*q(i-1,j-1)...
-S1*(t(i,j)-t(i-1,j-1))-a*m(i-1,j)*p(i-1,j)...
+r(i-1,j)*q(i-1,j)-S2*(t(i,j)-t(i-1,j))];
K=A\B;
p(i,j)=K(1);
q(i,j)=K(2);
u(i,j)=((p(i,j)+p(i-1,j-1))/2)*(d(i,j)-d(i-1,j-1)) ...
+((q(i,j)-q(i-1,j-1))/2)*(t(i,j)-t(i-1,j-1))+u(i-1,j-1);
end
for j=1:n+1
if(j==1)
d(i+1,j)=0;
t(i+1,j)=t(i,j+1)-m(i,j+1)*(d(i+1,j)-d(i,j+1));
m(i+1,j)=0;
r(i+1,j)=subs(c,x,d(i+1,j));
h(i+1,j)=subs(e,x,d(i+1,j));
S2=((h(i+1,j)+h(i,j+1))/2);
A=[-a*m(i,j+1)];
B=[-a*m(i,j+1)*p(i,j+1)+r(i,j+1)*q(i,j+1)...
-S2*(t(i+1,j)-t(i,j+1))];
K=A\B;
p(i,j)=K(1);
Departement de Mathematiques
FST-Mohammedia, (2008)
35
A. Taik
TP AN3 LST-MI
else
if(j==n+1)
d(i+1,j)=1;
t(i+1,j)=t(i,j)+m(i,j)*(d(i+1,j)-d(i,j));
m(i+1,j)=0;
r(i+1,j)=subs(c,x,d(i+1,j));
h(i+1,j)=subs(e,x,d(i+1,j));
S1=((h(i+1,j)+h(i,j))/2);
A=[a*m(i,j)];
B=[a*m(i,j)*p(i,j)+r(i,j)*q(i,j)...
-S1*(t(i+1,j)-t(i,j))];
K=A\B;
p(i,j)=K(1);
end
end
end
else
if(mod(i,2)=0)
for j=2:n
A=[1 -m(i-1,j) ; 1 m(i-1,j+1)];
B=[t(i-1,j)-m(i-1,j)*(d(i-1,j))...
+ t(i-1,j+1)+m(i-1,j+1)*(d(i-1,j+1))];
K=A\B;
t(i,j)=K(1);
d(i,j)=K(2);
u(i,j)=d(i,j)*(1-d(i,j));
m(i,j)=sqrt(u(i,j));
h(i,j)=subs(e,x,d(i,j));
r(i,j)=subs(c,x,d(i,j));
S1=(h(i,j)+h(i-1,j))/2;
s2=(h(i,j)+h(i-1,j+1))/2;
A=[a*m(i-1,j) r(i-1,j) -a*m(i-1,j+1) r(i-1,j+1)];
B=[a*m(i-1,j)*p(i-1,j)+r(i-1,j)*q(i-1,j)...
-S1*(t(i,j)-t(i-1,j))-a*m(i-1,j+1)*p(i-1,j+1)...
+r(i-1,j+1)*q(i-1,j+1)-S2*(t(i,j)-t(i-1,j+1))];
K=A\B;
p(i,j)=K(1);
q(i,j)=K(2);
u(i,j)=((p(i,j)+p(i-1,j))/2)*(d(i,j)-d(i-1,j))...
+((q(i,j)+q(i-1,j))/2)*(t(i,j)-t(i-1,j))+u(i-1,j);
end
end
Departement de Mathematiques
FST-Mohammedia, (2008)
36
A. Taik
TP AN3 LST-MI
end
end
Execution du code:
0.0
0.0
0.0
0.0
0.0
0.0
0.1600 0.2400
0.1600 0.2096
0.2096 0.2228
0.0415 0.02346
0.0636 0.2143
0.149
0.0594
0.2400
0.2435
0.2166
0.2233
0.2233
0.2143
0.1600
0.0
0.2049 0.1600
0.2049
0.0
0.2166 0.1831
0.1897
0.0
0.2289 0.1880
Constat:
On constate que m est une fonction qui depend de la solution u. Nous avons pris un pas de
discretisation e gal a` 0.2.
1.4. Exercice 4
Soit a` resoudre le syst`eme dequation :
2u
2 2u
2 = c x2 , x [0, 2] ,
u(0, t) = u(2, t) = 0,
u
(x, 0) = x(1 x), 0 < x < 2,
t
)cos((2n 1) ct
)
16 X (1)n1 sin((2n 1) x
2
2
u(x, t) = 2
.
2
n=1
(2n 1)
Implementation numerique
Code:
Departement de Mathematiques
FST-Mohammedia, (2008)
37
A. Taik
TP AN3 LST-MI
38
A. Taik
TP AN3 LST-MI
+(((q(i,j)+q(i-1,j-1))*(t(i,j)-t(i-1,j-1)))/2)+u(i-1,j-1);
end
for j=1:n+1
if(j==1)
d(i,j)=0;
t(i,j)=t(i-1,j+1)-m*(d(i,j)-d(i-1,j+1));
A=[-a*m];
B=[-a*m*p(i-1,j+1)+c*q(i-1,j+1)-e*(t(i,j)-t(i-1,j+1))];
p(i,j)=A\B;
else
if(j==n+1)
d(i,j)=2;
t(i,j)=t(i-1,j-1)+m*(d(i,j)-d(i-1,j-1));
A=[a*m];
B=[a*m*p(i-1,j-1)+c*q(i-1,j-1)-e*(t(i,j)-t(i-1,j-1))];
p(i,j)=A\B;
end
end
end
end
mesh(t,d,double(u))
Execution du code:
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.5000
0.5000
0.5000
0.0
0.0
-0.5000
-0.5000
-0.5000
-0.5000
1.0000
1.0000
0.5000
0.5000
-0.5000
-0.5000
-1.0000
-1.0000
-1.0000
1.5000 2.0000
1.0000 1.5000
1.0000 0.5000
0.0
0.5000
0
-0.5000
-1.0000 -0.500
-1.0000 -1.5000
-1.5000 -1.5000
-1.5000 -2.0000
1.5000
1.5000
1.0000
0.0
0.0
-1.0000
-1.0000
-2.0000
-1.5000
1.0000 0.5000
1.0000 0.5000
1.0000 0.5000
0.5000 0.5000
-0.5000
0.0
-0.5000 -1.0000
-1.5000 -0.5000
-1.0000 -1.5000
-2.0000 -0.5000
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
Departement de Mathematiques
FST-Mohammedia, (2008)
39