Vous êtes sur la page 1sur 6

ANALYSE NEMÉRIQUE

Compte-rendu de sérié N°5 de TP :


NOM : BENRABEH
PRÉNOM : ILYAS
GROUPE : S3 :GE-GM groupe N°2

Objectif de la sérié :
L’objectif de la sérié est d’étude quelque méthode directs
permettant de résoudre le système Ax=b où A ∈ Mn, l’ensemble
des matrices carrées n × n coefficients réels, et b est un vecteur
des réels. Une méthode directe est une méthode qui permet de
résoudre le système 1 en un nombre fini d’operateur et une
arithmétique exacte. Dans ce TP, on va présent les méthodes
suivantes :
I. La méthode d’élimination de Gausse
II. La méthode de LU
͟ Méthode de Gausse :
En utilise l’algorithme sauvant pour écrire une fonction
Gausse en MATLAB qui prend comme argument une matrices A
et un vecteur b et qui renvoie un vecteur x qui représente la
solution par la méthode de Gausse du système Ax=b
1 5 8 5
En pronos A= ( 2 −4 10
6 2 −5 ) () 1
et b= pour faire un test :
3

͟ Donnée une matrice A et un vecteur b.


͟ Initialisation du U= [A b].
͟ Initialisation de x= [].
͟ Pour k=1 jusqu’à dim(U,1) -1
͟ Pour i=k+1 jusqu’à dim(U,1)
͟ w= Uik/Ukk
͟ Pour j=k jusqu’à dim(U,1) +1
͟ Uij=Uij-w*Ukj
͟ Fin
͟ Fin
͟ Fin
͟ Pour i=dim(U,1) jusqu’à 1
͟ S=0
͟ Pour j=i+1 jusqu’à dim(U,1)
͟ S=S+Uij *xi
͟ Fin
͟ Xi=(U(n+1)j-S)/Uii
͟ Fin
͟ Sortie x
function [x]= Gausse(A,b)
U=[A,b];
n=size(U,1);
for k=1:n-1
for i=k+1:1:n
w=U(i,k)/U(k,k);
for j=k:n+1
U(i,j)=U(i,j)-w*U(k,j);
end
end
end
x(n)=U(n,n+1)/U(n,n);
for i=n-1:-1:1
S=0;
for j=i+1:n
S=S+U(i,j)*x(i);
end
x(i)=(U((n+1),j)-S)/U(i,i);
end
end
APELE DE FONCTION
clc;
clear all;
A=[1 5 8;2 -4 10;6 2 -5];
b=[5;1;3];
[x]= Gausse(A,b)
inv (A)*b

͟ Méthode de LC :
En utilise l’algorithme suivant pour écrire une fonction DLU en
MATLAB qui prend comme arguments qui renvoie deux matrices L et
U. cette fonction représente la décomposition LU de la matrice A.
1 5 8
En pronos A= ( 2 −4 10
6 2 −5 ) pour faire un test :

͟ Donnée une matrice A.


͟ n=dim(A,1)
͟ Initialisation de la matrice L par l’identité
͟ Initialisation de la matrice U par zero
͟ U1,1 :n=A1,1 :n
͟ L2 :n,1=A2 :n,1/U1,1
͟ Pour k=2 :n
͟ Uk,k :n=Ak,k:n-Lk,1 :k-1*U1:k-1,k:n
͟ Lk+1:n,k=(Ak+1:n,k-Lk+1:n,k-1*U1:K-1,k)/Uk,k
͟ Fin
͟ Sortie L et U

function [U,L]=DLU(A)
n=size(A,1);
L=eye(n);
U=zeros(n);
U(1,1:n)=A(1,1:n);
L(2:n,1)=A(2:n,1)/U(1,1);
for k=2:n
U(k,k:n)=A(k,k:n)-L(k,1:k-1)*U(1:k-1,k:n);
L(k+1:n,k)=(A(k+1:n,k)-L(K+1:n,1:k-1)*U(1:k-1,k))/U(k,k);
end
end
APELLE DE FONCTION :
clc;
clear all;
A=[1 5 8;2 -4 10;6 2 -5];
[U,L]=DLU(A);
U
L

En utilise l’algorithme suivant pour écrire une fonction DLU en


MATLAB qui prend comme arguments une matrice A et un vecteur b
et qui renvoie un vecteur x qui représente la solution par la méthode
de LU du système Ax=b.
1 5 8 5
En pronos A= ( 2 −4 10
6 2 −5 ) () 1
et b= pour faire un test :
3
͟ Donnée une matrice A et un vecteur b.
͟ Initialisation des matrices L= [] et U= [].
͟ [L, U] = DLU(A)
͟ Initialisation y= []
͟ y1=b1
͟ Pour i=2 jusqu’à dim(A)
͟ S=0
͟ Pour k=1 jusqu’à i-1
͟ S=S+Lik*uk
͟ Fin
͟ Yi=bi-S
͟ Fin
͟ Initialisation x=[]
͟ xn=yn/Unn
͟ pour i=dim(A) jusqu’à 1
͟ S=0
͟ Pour j=i+1 jusqu’à n
͟ S=S+Uij+*xj
͟ Fin
͟ xi=(yi-S)/Uii
͟ fin

function [X]=RLU(A,b)
[L,U]=DLU(A);
y(1)=b(1);
n=size(A,1);
for i=2:n
S=0;
for k=1:i-1
S=S+L(i,k)*y(k);
end
y(i)=b(i)-S;
end
X(n)=y(n)/U(n,n);
for i=n-1:-1:1
S=0;
for j=i+1:1
S=S+U(i,j)*X(j);
end
X(i)=(y(i)-S)/U(i,i);
end
end
APELLE DE FONCTION
clc;
clear all;
A=
b=
[X]=RLU(A,b)
U
L
X
inv(A)*b

Vous aimerez peut-être aussi