Vous êtes sur la page 1sur 4

INFO-F-205: Calcul formel et numrique

TP 9: Rsolution de systmes linaires


1. Rsoudre le systme Ax = b, avec
A =
_

_
4 3 2 1
3 4 3 2
2 3 4 3
1 2 3 4
_

_
et b =
_

_
1
1
1
1
_

_
.
en utilisant dabord loprateur \ de Matlab .
2. crire une fonction backsub(A,B) en Matlab qui rsout un systme dquations triangulaire su-
prieur Ax = b par la mthode de substitution directe. Tout dabord, calculer x
N
= b
N
/A
NN
et
ensuite, utiliser la rgle
x
k
=
b
k

N
j=k+1
a
kj
x
j
a
kk
pour k = N 1, N 2, ..., 1.
3. Trouver des matrices P, L et U telles que L est triangulaire infrieure, U triangulaire suprieure
et PA = LU en utilisant Matlab . A est la matrice des coecients du systme suivant :
_

_
2x
1
3x
2
+ 2x
3
+ 5x
4
= 3
x
1
x
2
+ x
3
+ 2x
4
= 1
3x
1
+ 2x
2
+ 2x
3
+ x
4
= 0
x
1
+ x
2
3x
3
x
4
= 0
4. Ecrire une fonction Doolittle(A) en Matlab qui renvoie les matrices L et U obtenues partir de
la matrice A par la mthode de Doolittle. Vrier le bon fonctionnement de votre fonction avec la
matrice de lexercice prcdent.
Pour rappel, la mthode de Doolittle : on pose l
kk
= 1. Ensuite, pour pour k = 1, . . . , n on calcule
dabord la k-ime ligne de U, puis la k-ime colonne de L, selon les formules :
u
kj
= a
kj

k1

r=1
l
kr
u
rj
, j = k, . . . , n,
l
ik
=
1
u
kk
_
a
ik

k1

r=1
l
ir
u
rk
_
, i = k + 1, . . . , n.
5. Pour une solution approche x

e = x x

r = b Ax

= b A(x e) = Ae
Posant x

= x
(0)
, on peut eectuer un ranement itratif
_
_
_
r
(i)
= b Ax
(i)
Ae = r
(i)
x
(i+1)
= x
(i)
+ e
jusqu
e
x
(i)

< tol
Si le systme nest pas trop mal conditionn, le ranement itratif converge trs rapidement.
Pour le systme suivant :
_

_
5 7 6 5
7 10 8 7
6 8 10 9
5 7 9 10
_

_
_

_
x
1
x
2
x
3
x
4
_

_
=
_

_
23
32
33
31
_

_
la solution est x =
_

_
1
1
1
1
_

_
1
Calculer partir de
x

= x
(0)
=
_

_
0.9881
1.0073
1.0028
0.9983
_

_
la valeur de x
(1)
en utilisant Matlab .
6. Pour le systme
A =
_
1.2969 0.8648
0.2161 0.1441
_
et b =
_
0.8642
0.1440
_
et la solution approche x

=
_
0.9911
0.4870
_
Comparer x

au rsultat exact du systme


Calculer le rsidu r = b Ax

. Que peut-on en conclure propos du rsidu ?


7. Considrons le systme Ax = b o
A =
_
_
10 2 1
2 10 2
2 5 10
_
_
et b =
_
_
9
12
18
_
_
dont la solution exacte est x = (1, 2, 3)
t
.
En utilisant les scripts jacobi.m et gseid.m de la gure 1 et 2 (disponibles sur la page web du
cours) :
(a) Dterminer une solution approche du systme par la mthode de Jacobi ; calculer trois it-
rations en partant du vecteur initial x
(0)
= (0, 0, 0)
t
.
(b) Idem mais avec la mthode de Gauss-Seidel.
Que peut-on conclure ?
8. En utilisant le script Matlab implantant la mthode de Jacobi qui vous a t fourni, rsoudre,
avec une prcision de 0.000005, le systme dquations Ax = b o les lments de A sont
a
ii
= 4 et
a
ij
= 2 si |i j| = 1
= 0 si [i j| 2 o i, j = 1, 2, . . . , 10
et
b
T
= [2 3 4 . . . 11]
Vrier votre rsultat en utilisant loprateur \ de Matlab .
9. Le fait quune matrice A soit diagonale dominante stricte, c.--d. que
|a
kk
| >
N

j = 1
j = k
|a
kj
|
pour k = 1, 2, . . . , N. est une condition susante mais pas ncessaire pour dterminer si la mthode
de Jacobi va converger. A partir de dirents vecteurs initiaux P
0
, calculer des solutions approches
pour le systme suivant :
_
_
_
x + z = 2
x + y = 0
x + 2y 3z = 0
en utilisant dabord la mthode de Jacobi, ensuite celle de Gauss-Seidel. Conseil : augmenter
progressivement le nombre ditrations. Que constate-t-on ?
2
function X=jacobi(A,B,P,delta,max1)
% Input -A is an N x N nonsingular matrix
% -B is an N x 1 matrix
% -P is an N x 1 matrix; the initial guess
% -delta is the tolerance for P
% -max1 is the maximum number of iterations
% Output-X is an N x 1 matrix : the jacobi approximation to
% the solutions of AX= B
N= length(B);
for k=1:max1
for j=1:N
X(j)=(B(j)-A(j,[1:j-1,j+1:N])*P([1:j-1,j+1:N]))/A(j,j);
end
err=abs(norm(X-P));
relerr=err/(norm(X)+eps);
P=X;
if (err<delta)|(relerr<delta)
break
end
end
X=X;
Figure 1 Code Matlab implmetant la mthode de Jacobi
3
function X=gseid(A,B,P,delta,max1)
% Input -A is an N x N nonsingular matrix
% -B is an N x 1 matrix
% -P is an N x 1 matrix; the initial guess
% -delta is the tolerance for P
% -max1 is the maximum number of iterations
% Output-X is an N x 1 matrix : the jacobi approximation to
% the solutions of AX= B
N= length(B);
for k=1:max1
for j=1:N
if j==1
X(1)=(B(1)-A(1,2:N)*P(2:N))/A(1,1);
elseif j==N
X(N)=(B(N)-A(N,1:N-1)*(X(1:N-1)))/A(N,N);
else
% X contains th kth approximations and P th (k-1)st
X(j)=(B(j)-A(j,1:j-1)*X(1:j-1)-A(j,j+1:N)*P(j+1:N))/A(j,j);
end
end
err=abs(norm(X-P));
relerr=err/(norm(X)+eps);
P=X;
if (err<delta)|(relerr<delta)
break
end
end
X=X;
Figure 2 Code Matlab implmetant la mthode de Gauss-Seidel
4