Vous êtes sur la page 1sur 7

1)

Soit
4 1 0 0 0 0 0 0 0 0 5
1 4 1 0 0 0 0 0 0 0 6
0 1 4 1 0 0 0 0 0 0 6
0 0 1 4 1 0 0 0 0 0 6
0 0 0 1 4 1 0 0 0 0 6
𝐴= Et 𝐵=
0 0 0 0 1 4 1 0 0 0 6
0 0 0 0 0 1 4 1 0 0 6
0 0 0 0 0 0 1 4 1 0 6
0 0 0 0 0 0 0 1 4 1 6
[0 0 0 0 0 0 0 0 1 4] [5]

Résolvant le système linéaire AX = B. Pour se faire sinon décomposons A en LU telle que A=LU on
pourra donc résoudre le système en descente et en remontée en posant :

 LY=B en descente
 UX=B en remonté

Lors du TP1 nous avions déjà décomposée A en LU en appliquant à la matrice A l’algorithme


de décomposition en LU et nous avons obtenu le résultat suivant :

4 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
1 4 1 0 0 0 0 0 0 0 1/4 1 0 0 0 0 0 0 0 0
0 1 4 1 0 0 0 0 0 0 0 4/15 1 0 0 0 0 0 0 0
0 0 1 4 1 0 0 0 0 0 0 0 15/56 1 0 0 0 0 0 0
0 0 0 1 4 1 0 0 0 0 0 0 0 56/209 1 0 0 0 0 0
= 0 0 0 0 209/780 1 0 0 0 0
0 0 0 0 1 4 1 0 0 0
0 0 0 0 0 1 4 1 0 0 0 0 0 0 0 571/2131 1 0 0 0
0 0 0 0 0 0 1 4 1 0 0 0 0 0 0 0 571/2131 1 0 0
0 0 0 0 0 0 0 1 4 1 0 0 0 0 0 0 0 571/2131 1 0
[0 0 0 0 0 0 0 0 1 4] [ 0 0 0 0 0 0 0 0 571/2131 1]

4 1 0 00 0 0 0 0 0 0
0 15/4 1 0 0 0 0 0 0 0
0 0 56/15 1 0 0 0 0 0 0
0 0 0 209/56 1 0 0 0 0 0
0 0 0 0 780/209 1 0 0 0 0
X 0 0 0 0 0 2911/780 1 0 0 0
0 0 0 0 0 0 2131/571 1 0 0
0 0 0 0 0 0 0 2131/571 1 0
0 0 0 0 0 0 0 0 2131/571 1
[0 0 0 0 0 0 0 0 0 2131/571]
o En descente LY=B

1 0 0 0 0 0 0 0 0 0 𝑌1 5
1/4 1 0 0 0 0 0 0 0 0 𝑌2 6
0 4/15 1 0 0 0 0 0 0 0 𝑌3 6
0 0 15/56 1 0 0 0 0 0 0 𝑌4 6
0 0 0 56/209 1 0 0 0 0 0 𝑌5 6
X =
0 0 0 0 209/780 1 0 0 0 0 𝑌6 6
0 0 0 0 0 571/2131 1 0 0 0 𝑌7 6
0 0 0 0 0 0 571/2131 1 0 0 𝑌8 6
0 0 0 0 0 0 0 571/2131 1 0 𝑌9 6
[ 0 0 0 0 0 0 0 0 571/2131 1] [𝑌10 ] [5]

L Y B

En multipliant les ligne de la matrice L par la colonne de la matrice Y on obtient

 Y1= 5
571
 2131
Y6 + Y7 = 6  Y5 = 4.7320
1 19
 4
Y1+ Y2= 6  Y2 = 4
571
4 71
 2131
Y7 + Y8 = 6  Y5 = 4,7320
 15
Y2 + Y3 = 6  Y3 = 15
571
15 265  2131
Y8 + Y9 = 6  Y5 = 4,7320
 Y3 + Y4 = 6  Y4 =
56 56
571
56 989  Y9 + Y10 = 5  Y10 = 3,7320
 209
Y4 + Y5 = 6  Y5 = 209 2131

571
 2131
Y5 + Y6= 6  Y6 =4.7320

19 71 265 989 T
Y = [5 4 15 56 209
4,7320 4,732 4,732 4,732 3,732]
o En remonté UX=Y

4 1 0 00 0 0 0 0 0 0 X1 5
0 15/4 1 0 0 0 0 0 0 0 X2 19/4
0 0 56/15 1 0 0 0 0 0 0 X3 71/15
0 0 0 209/56 1 0 0 0 0 0 X4 265/56
0 0 0 0 780/209 1 0 0 0 0 X 989/209
x 5 =
0 0 0 0 0 2911/780 1 0 0 0 X6 4,732
0 0 0 0 0 0 2131/571 1 0 0 X7 4,732
0 0 0 0 0 0 0 2131/571 1 0 X8 4,732
0 0 0 0 0 0 0 0 2131/571 1 X9 4,732
[0 0 0 0 0 0 0 0 0 2131/571] [X10 ] [ 3,732 ]

U X Y

En multipliant les ligne de la matrice U par la colonne de la matrice X on obtient les résultats suivants

2131
 571
X10 = 3,732  X10 = 0,99999 =1

2131 571
 571
X9 + X10 = 4,732  X9 = ( 4,732 − 1) x 2131  X9 = 1

2131 571
 571
X8 + X9 = 4,732  X8 = ( 4,732 − 1) x 2131  X8 = 1

2131 571
 X7 + X8 = 4,732  X7 = ( 4,732 − 1) x  X7 = 1
571 2131

2911 780
 780
X6 + X7 = 4,732 X6 = ( 4732 − 1) x 2911  X6 = 1

780 989 289 5


 209
X5 + X6 = 203  X5 = ( 203 − 1) x 6  X5 = 1

209 265 265 4


 56
X4 + X5 = 56
 X4 = ( 56
− 1) x 5  X4 = 1

56 71 71 15
 15
X3 + X4 = 15  X3 = ( 15 − 1) x 56  X3 = 1

15 19 19 4
 X2 + X3 =  X2 = ( − 1) x  X2 = 1
4 4 4 15

1
 4X1 + X2 = 5  X1 = ( 5 − 1) x 4  X1 = 1
D’où

X = [1 1 1 1 1 1 1 1 1 1] T

2)

Algorithm 3. Algorithme de Jacobi.


Input : A une matrice carrée d’ordre n∈ N => l’entré, on y définir la matrice
— X => initialisation des vecteurs
— W => variable de relaxation 0<w<1
— Pour k ∈ [1..N] => intervalle d’itération
— Pour i ∈ [1..n]
𝑩𝒊 − ∑𝒊−𝟏 𝒏
𝒋=𝟏 𝑨𝒊𝒋 𝑿𝒋 − ∑𝒋=𝒊+𝟏 𝑨𝒊𝒋 𝑿𝒋
— Xi =w + (𝟏 − 𝒘)𝑿𝒊
𝑨𝒊𝒊
— fin
— X=Y
— erreur = norm (AX- B) => norme Euclidienne || U || = √∑𝑛𝑘=1 |𝑈𝑘 |2
— if erreur = epsilon
— Afficher (K , erreur )
— rectum
— fin
3)
clear all;
n = 10;
A = 4*diag(ones(1,n))+diag(ones(1,n-1),1)+diag(ones(1,n-1),-1);
B = [5;6;6;6;6;6;6;6;6;5]
%B = zeros(n,1);
%B(1) = 5;
%B(n-1)=6;
%B(n) = 5;

[X, k, erreur]=fonction_relaxation(A,B);

function[X, k, erreur] = fonction_relaxation(A,B)


fprintf('Méthode itérative de Jacobi \n');
n = length(A);

N = 500;
X = zeros(n,1);
Y = zeros(n,1);
epsilon = 1e-6;
w=1
for k = 1:N
for i = 1:n
s1 = 0;
for j = 1:i-1;
s1 = s1+A(i,j)*X(j);
end
s2 = 0;
for j=i+1:n
s2 = s2+(A(i,j)*X(j));
end

X(i) = w*((B(i)-s1-s2)/A(i,i))-(1-w)*X(i);

end

erreur = norm(A*X-B);
if erreur < epsilon
fprintf('Itération:%d\t Erreur=%7.2e\n',k,erreur);
return
end
end
end
Résultats

Nous obtenons un résultat identique a celui


fait à la main

L’erreur est cohérente avec notre


définition de l’erreur fixé dans notre programme
Conclusion

Ce TP nous a permis d’apprendre à résoudre un système linéaire par la méthode de


relaxation en ce servant de la décomposition LU ou Cholesky dans le but de rendre l’opération plus
simple

Vous trouverez ci-joint le scripte Matlab relative au programme appliqué à la matrice


A