Travaux Pratiques

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 39

A.

Taik

TP AN3 LST-MI

Travaux Pratiques: Equations aux Derivees Parti`elles


Methodes des Difference Finies

Departement de Mathematiques
FST-Mohammedia, (2008)

Contents
1

Resolution dune EDP elliptique


1.
Resolution de lEDP par la methode directe:
1.1.
Cas o`u h = 5 . . . . . . . . . . . .
1.2.
Cas o`u h = 2.5 . . . . . . . . . . .
2.
Methode de relaxation de Liebmann . . . .
2.1.
Relaxation: . . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

4
4
4
5
9
9

Equation de Poisson 3D

11

Resolution dune EDP parabolique


12
1.
Programmation de la solution analytique: . . . . . . . . . . . . . . . . . . . . . . 13
2.
Discretisation de lequation differentielle: . . . . . . . . . . . . . . . . . . . . . . 14
2.1.
Rappel de la notation spatiale et temporelle: . . . . . . . . . . . . . . . . . 14
2.2.
Discretisation des derivees partielles: . . . . . . . . . . . . . . . . . . . . 14
2.3.
Equation aux derivees partielles discr`etisee: . . . . . . . . . . . . . . . . . 15
2.4.
Resolution numerique du syst`eme: . . . . . . . . . . . . . . . . . . . . . . 15
3.
Methode de Crank - Nicolson ou methode implicite: . . . . . . . . . . . . . . . . . 18
3.1.
Programmation de la solution . . . . . . . . . . . . . . . . . . . . . . . . 19
4.
Comparaison des methodes: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.1.
Comparaison de uexact (0.25, t) et uapp (0.25, t), uexact (0.75, t) et uapp (0.75, t) 21
4.2.
Comparaison de uexact (x, 0.99) et uapp (x, 0.99), uexact (x, 1.98) et uapp (x, 1.98) 22

Resolution dune EDP hyperbolique


1.
Exercices dapplication . . . . .
1.1.
Exercice 1: . . . . . . .
1.2.
Exercice 2: . . . . . . .
1.3.
Exercice 3: . . . . . . .
1.4.
Exercice 4 . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

24
24
24
28
32
37

List of Figures
1.1
1.2

Evolution de la courbe u = 0 en fonction de h avec la methode directe . . . . . . 8


Evolution de la courbe u = 0 en fonction de h pour la methode de relaxation . . 10

3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9

Representation graphique de la solution analytique uexact (xi , tj )


Courbe de la solution numerique, methode explicite pour r < 12 .
Courbe de la solution numerique, methode explicite pour r > 12 .
Courbe de la solution numerique, methode implicite pour r < 12
Courbe de la solution numerique, methode implicite pour r > 12
Comparaison graphique de uexact (0.25, t) et uapp (0.25, t) . . . .
Comparaison graphique de uexact (0.75, t) et uapp (0.75, t) . . . .
Comparaison graphique de uexact (x, 0.9281) et uapp (x, 0.9281) .
Comparaison graphique de uexact (x, 1.9594) et uapp (x, 1.9594) .

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

u = 0 dans le domaine (x, y) [0, 20] [0, 10]


u(x, 0) = u(x, 10) = u(0, y) = 0 et u(20, y) = 100

hx = hy = h {5, 2.5, 1.25, 0.625, 0.3125}


Tout en variant h, resoudre cette EDP:
1. En utilisant la methode directe.
2. En utilisant la methode de relaxation de Liebmann.
3. Conclure.

1. Resolution de lEDP par la methode directe:


1.1. Cas ou` h = 5
On a: hx = ba
nx = ba
= 200
= 4 et ny = dc
= 100
= 2 La grille maillee contient alors
nx
hx
5
hy
5
(nx +1)(ny +1) mailles vu que nous avons a` rajouter les points o`u xi = 0 et ceux o`u yj = 0 cest a`
dire les points intersection de la courbe avec les axes. Mais comme les conditions aux limites nous
donnent les images sur les bords, alors les points inconnus restent seulement ceux de linterieur du
cadrillage. Ce qui fait donc que le nombre dinconnues est alors (nx 1) (ny 1) = 3 1 = 3
Nous obtenons le syst`eme de trois e quations a` trois inconnues suivant:

4u1,1 + u2,1 + 0u3,1 = 0


u1,1 4u2,1 + u3,1 = 0

0u1,1 + u2,1 4u3,1 = 100


4

A. Taik

TP AN3 LST-MI

Il nous reste maintenant a` resoudre le syst`eme matriciel: A U = B Avec:

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

1.2. Cas ou` h = 2.5


Nous avons aussi: nx = ba
= 200
= 8 et ny = dc
= 100
= 4, ce qui nous donne un syst`eme
h
2.5
h
2.5
`a n = (nx 1) (ny 1) = 7 3 = 21 e quations a` 21 inconnues de la forme:

4u1,1 + u2,1 + + u1,2 + = 0


u1,1 4u2,1 + u3,1 + + u2,2 + = 0
..
.
+ u6,1 4u7,1 + = 100
u1,1 + 4u2,1 + u2,2 + = 0
..
.

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:

Figure 1.1: Evolution de la courbe u = 0 en fonction de h avec la methode directe

Departement de Mathematiques
FST-Mohammedia, (2008)

A. Taik

TP AN3 LST-MI

2. Methode de relaxation de Liebmann


Le schema numerique obtenu dans la partie 1 de ce projet nous donne:
ui1,j + ui,j1 4ui,j + ui+1,j + ui,j+1 = 0
ui,j =

ui1,j + ui,j1 + ui+1,j + ui,j+1


4

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.

Figure 1.2: Evolution de la courbe u = 0 en fonction de h pour la methode de relaxation

Departement de Mathematiques
FST-Mohammedia, (2008)

10

TP 2
Equation de Poisson 3D
Exercice:
Soit lequation de Poisson (3D):

4u = f (x, y, z) dans le domaine (x, y, z) [0, 1] [0, 1] [0, 1] ,

u(x = 0, y, z) = u(x, y = 0, z) = u(x, y, z = 0) = 0

u(x = 1, y, z) = u(x, y = 1, z) = u(x, y, z = 1) = 0,


Avec :

f (x, y, z) =

2kyz(1 y)(1 z) + (kyz(1 y)(1 z)(1 2x))2


2kzx(1 z)(1 x) + (kzx(1 z)(1 x)(1 2y))2
2kxy(1 x)(1 y) + (kxy(1 x)(1 y)(1 2z))2 )

(ekxyz(1x)(1y)(1z) /(1 ek/64 ) .

La solution e xacte est:


u(x, y, z) = (1 ekxyz(1x)(1y)(1z) )/(1 ek/64 ).
Question 1: Resoudre cette EDP numeriquement par difference finie (Methode directe). Etablir
un code Matlab.
Question 2: Utiliser la methode de relaxation de Liebmann pour rsoudre du meme probl`eme
et comparer la solution approchee avec la solution e xacte.
Question 3: Conclure.

11

TP 3
Resolution dune EDP parabolique
TP:
u
t

Soit a` resoudre lequation de la chaleur

u
t

= xu2 avec R fixe. Considerons le syst`eme:

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. Utiliser la methode directe (methode explicite) en supposant r >


constatez-vous?

1
2

puis r <

1
.
2

Que

2. Utiliser maintenant la methode de Crank- Nicolson et faites varier le r. Que constatez-vous?


3. Comparaisons des methodes:
(a) Comparer, en fonction de r, graphiquement uexact (0.25, t) et uapp (0.25, t) puis uexact (0.75, t)
et uapp (0.75, t)
(b) Meme question pour uexact (x, 0.99) et uapp (x, 0.99) puis
uexact (x, 1.98) et uapp (x, 1.98)
4. Conclure.

12

A. Taik

TP AN3 LST-MI

1. Programmation de la solution analytique:


Soit:
uexact (x, t) = 800

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

Figure 3.1: Representation graphique de la solution analytique uexact (xi , tj )

2. Discretisation de lequation differentielle:


2.1. Rappel de la notation spatiale et temporelle:
Si la fonction u prend comme variables le temps tj et de lesapce xi , yj , , par commodite du
langage, on notera u(xi , tj ) par uji et en dimension 2D de lespace et 1D en temps, u(xi , yj , tk )
sera notee par uki,j

2.2. Discretisation des derivees partielles:


Nous pouvons approximer

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)

Nous avons remplace hx par x et ht par t.

Departement de Mathematiques
FST-Mohammedia, (2008)

14

A. Taik

TP AN3 LST-MI

2.3. Equation aux derivees partielles discr`etisee:


Remplaons 2.1 et 2.2 dans lEDP donnee en e nonce. On aura:
j
j
j
t

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

uji+1 2uji +uji1


(x)2

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.

2.4. Resolution numerique du syst`eme:


Quand on fixe j et on varie i de 1 a` nx 1, on obtient le syst`eme lineaire de nx 1 e quations a`
nx 1 inconnues suivant:
j+1
u1 = ruj2 + (1 2r)uj1 + ruj0

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

Figure 3.2: Courbe de la solution numerique,


methode explicite pour r < 12

Figure 3.3: Courbe de la solution numerique,


methode explicite pour r > 12

Pour avoir un bon resultat dans cette methode, il faut donc tenir compte de la valeur de r car elle
influencera le resultat.

3. Methode de Crank - Nicolson ou methode implicite:


Nous remplaons les derivees partielles par leurs approximations dej`a e tablies pour avoir lequation
num
erique suivante:

1
2

uji+1 2uji +uji1


(x)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

Ceci est le schema numerique de Crank - Nicolson.


Lorsque nous fixons j et faisons varier i, nous obtenons le syst`eme lineaire suivant:

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

= U j+1 = M11 [M2 U j + (N2 N1 )]


Ce syst`eme matriciel est lineaire dordre nx 1.

3.1. Programmation de la solution


Voici le programme qui sert a` donner la courbe de la solution numerique de la methode de Crank
- Nicolson. Pour avoir la solution (la courbe) pour le deuxi`eme cas, il suffit de remplacer r par 0.25:
*********************************
clc; clear;
k=0.13;c=0.11;
p=7.8;dx=0.25;
r=0.625;
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
N1(i)=0;
N2(i)=0;
end
Departement de Mathematiques
FST-Mohammedia, (2008)

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:

Figure 3.4: Courbe de la solution numerique,


methode implicite pour r < 12

Figure 3.5: Courbe de la solution numerique,


methode implicite pour r > 12

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. Comparaison des methodes:


En fonction de r, nous voulons comparer graphiquement la methode numerique explicite (directe)
avec la solution analytique pour voir comment la solution approchee se rapproche a` la solution
e xacte.

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:

Figure 3.6: Comparaison graphique de


uexact (0.25, t) et uapp (0.25, t)

Figure 3.7: Comparaison graphique de


uexact (0.75, t) et uapp (0.75, t)

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:

Figure 3.8: Comparaison graphique de


uexact (x, 0.9281) et uapp (x, 0.9281)

Figure 3.9: Comparaison graphique de


uexact (x, 1.9594) et uapp (x, 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 =

Pour chaque point, nous avons deux caracteristiques:


t =

2
x
2

et t =

2
x
2

(voir figure 2).

Calculons u au point R2 (0.5, 0.1768): On a lequation


amp + cq + et = 0,
suivant la droite P R2 puis la droite QR2 on trouve:
24

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.

) = 4 (car on est a` droite du point P ), pQ = ( u


) = 4, et qP = ( u
) =
On prend: pP = ( u
x P
x Q
t P
u
qQ = ( t )Q = 0 et on les remplace dans le syst`eme pour avoir:

2(pR2 + 4) + qR2 + 4t = 0,

2(pR2 + 4) + qR2 + 4t = 0.
Apr`es resolution de ce syst`eme, on obtient: pR2 = 4 et qR2 =

2
2

Maintenant, on e value u au point R2 a` travers ces variations le long de de P R2 .


u = pav x + qav t,
pP + pR2
qP + qR2
uR 2 uP = (
) 0.25 + (
) 0.1768,
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

Table 4.1: Tableau 1


Implementation numerique
code:
clear all;clc;
syms a b c e x u;
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: );
delta=b*b-4*a*c; m=(b-sqrt(delta))/(2*a); n=1/dx; N=n;
d=zeros(N+1,n+1); t=zeros(N+1,n+1); p=zeros(N+1,n+1);
q=zeros(N+1,n+1); u=12*x; f=diff(u);
u=4-4*x; g=diff(u); y=0:dx:1;
i=1;
for j=1:n+1
d(i,j)=y(i,j);
if(0.25<=d(i,j))
u(i,j)=4-4*d(i,j);
p(i,j)=subs(g,x,d(i,j));
q(i,j)=0;
else
if(d(i,j)==0)
u(i,j)=12*d(i,j);
p(i,j)=subs(f,x,d(i,j));
q(i,j)=0;
end
end
end for i=2:N+1
for j=2:n
d(i,j)=(d(i-1,j-1)+d(i-1,j+1))/(2);
t(i,j)=t(i-1,j-1)+m*(d(i,j)-d(i-1,j-1));
A=[a*m c ; -a*m c];
Departement de Mathematiques
FST-Mohammedia, (2008)

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

Table 4.2: tableau 1

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

En int`egrant a` partir du point initial de coordonnees (x0 , t0 ), on trouve:

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=

1/(1 + 2x) = 0.18765;

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=

1/(1 + 2x) = 0.6325;

a = (1 + 2x) = 2.5, b = 0, c = 1, e = 0
Au point R: x = 0.4841, t = 0.1783;
m+ =

m =

1/(1 + 2x) = 0.7128;

1/(1 + 2x) = 0.7128

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:

1.77341(0.45015)(pR 0) + (1)(qR 0.1875) = 0; P R,

2.22341(0.6726)(pR 0) + (1)(qR 0.1875) = 0; Q R.

Apr`es la resolution de ce syst`eme, on obtient pR = 0 et qR = 0.1875.


Pour trouver sa valeur au point R, on calcule la variation de u le long de deux caracteristiques
en utilisant lequation ??.
P R : u = 0(0.2341) + 0.1875(0.1783) = 0.0334
Q R : u = 0 + 0.0334 = 0.0334
uR = 0.0334 + uP = 0.0334 + uQ = 0.0334
Avec u = uR uP .
La representation graphique precedente resume les autres valeurs de u dans le maillage.
Departement de Mathematiques
FST-Mohammedia, (2008)

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

Table 4.3: tableau de u

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(x, 0) = x(1 x), ut (x, 0) = 0,

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

On trouve a = 1, b = 0, c = u, e = 1 x2 . On calcule, avant tout, la valeur numerique de u, p


et q au point P et Q:
avec les conditions initiales,
u = x(1 x),
donc,
uP = 0.2(1 0.2) = 0.16,
uQ = 0.4(1 0.4) = 0.24;
De plus, avec les differentiation des conditions initiales,
p=

u
= 1 2x,
x

ce qui nous donne


pP = 1 2(0.2) = 0.6,
pQ = 1 2(0.4) = 0.2;
et enfin,
q=

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:

tR = m+ (xR xP ) = 0.4(xR 0.2)

tR = m (xR xQ ) = 0.49(xR 0.4).

Ce qui nous donne xR = 0.310 et tR = 0.044.


Puisquon ne connait pas m au point R, on utilise sa valeur initiale le long de chanque caracteristique pour approximer p et q au point R en utilisant lequation ??:
amp + cq + et = 0,
Departement de Mathematiques
FST-Mohammedia, (2008)

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

Cette approximation a e te e tablie en tenant compte de la courbe P R, en utilisant les differentes


valeurs de p et q. Toutefois, on pourrait alternativement proceder par la caracteristique QR. Ce qui
nous donnerait:
uR 0.24 =

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

Table 4.4: valeurs de u

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

u(x, 0) = 2x 0 < x < 1,

u(x, 0) = 2(2 x) 1 < x < 2,


La solution exacte est donnee par :

)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

clear all; clc;


syms a b c e x k; cla=0;clb=2;
k=input(donner lavaleur de k: );
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 discretisation: );
n=(clb-cla)/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); p=zeros(N+1,n+1);
q=zeros(N+1,n+1); y=0:dx:2; u=2*x; f=diff(u); u=2*(2-x);
g=diff(u); i=1; for j=1:n+1
d(i,j)=y(i,j);
if(1<=d(i,j))
p(i,j)=subs(g,x,d(i,j));
u(i,j)=2*(2-d(i,j));
q(i,j)=0;
else
if(d(i,j)<1)
p(i,j)=subs(f,x,d(i,j));
u(i,j)=2*d(i,j);
q(i,j)=0;
end
end
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
for j=2:n
d(i,j)=(d(i-1,j-1)+d(i-1,j+1))/(2);
t(i,j)=t(i-1,j-1)+m*(d(i,j)-d(i-1,j-1));
A=[a*m c ; -a*m c];
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))*(d(i,j)-d(i-1,j-1)))/2)...
Departement de Mathematiques
FST-Mohammedia, (2008)

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

Table 4.5: valeurs de u

Departement de Mathematiques
FST-Mohammedia, (2008)

39

Vous aimerez peut-être aussi