3.2 R´ esolution d’un syst` eme triangulaire
69
Programme 1 - forwardrow : Substitution directe : version orient´ ee ligne
function [x]=forwardrow(L,b)
% FORWARDROW substitution directe: version orient´ ee ligne.
% X=FORWARDROW(L,B) r´ esout le syst` eme triangulaire inf´ erieur L*X=B
% avec la m´ ethode de substitution directe dans sa version
% orient´ ee ligne
[n,m]=size(L);
if n ˜= m, error(’Seulement des syst` emes carr´ es’); end
if min(abs(diag(L))) == 0, error(’Le syst` eme est singulier’); end
x(1,1) = b(1)/L(1,1);
for i = 2:n
x (i,1) = (b(i)-L(i,1:i-1)*x(1:i-1,1))/L(i,i);
end
return
Pour obtenir une version orient´ ee colonne du mˆ eme algorithme, on tire
avantage du fait que la i-i` eme composante du vecteur x, une fois calcul´ ee,
peut ˆ etre ais´ ement ´ elimin´ ee du syst` eme.
Une impl´ ementation de cette proc´ edure, dans laquelle la solution x est
stock´ ee ` a la place du membre de droite b, est propos´ ee dans le Programme 2.
Programme 2 - forwardcol : Substitution directe : version orient´ ee colonne
function [b]=forwardcol(L,b)
% FORWARDCOL substitution directe: version orient´ ee colonne.
% X=FORWARDCOL(L,B) r´ esout le syst` eme triangulaire inf´ erieur L*X=B
% avec la m´ ethode de substitution directe dans sa version
% orient´ ee colonne
[n,m]=size(L);
if n ˜= m, error(’Seulement des syst` emes carr´ es’); end
if min(abs(diag(L))) == 0, error(’Le syst` eme est singulier’); end
for j=1:n-1
b(j)= b(j)/L(j,j); b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);
end
b(n) = b(n)/L(n,n);
return
Impl´ ementer le mˆ eme algorithme par une approche orient´ ee ligne plutˆ ot que
colonne peut modifier consid´ erablement ses performances (mais bien sˆ ur pas
la solution). Le choix de l’impl´ ementation doit donc ˆ etre subordonn´ e ` a l’architecture sp´ ecifique du calculateur utilis´ e.
Des consid´ erations analogues sont valables pour la m´ ethode de substitution
r´ etrograde pr´ esent´ ee en (3.20) dans sa version orient´ ee ligne.
On a impl´ ement´ e la version orient´ ee colonne dans le Programme 3. Comme
pr´ ec´ edemment, le vecteur x est stock´ e dans b.
Précédent

- 81/540

Suivant