Informatique et mathématiques appliquées (BIR1204)

 

  

<-- ^ -->  
Particularité du langage Matlab. Exemple du produit matriciel.

 

Le produit de deux matrices A et B ne peut se faire qu'à une condition : le nombre de colonnes de la matrice de gauche doit être égal au nombre de lignes de la matrice de droite.

On dispose les matrices comme ceci :

L'élément c(i,j) qui est à l'intersection de la ligne i et de la colonne j dans la matrice produit est égal au produit scalaire du vecteur ligne i de la matrice de gauche par le vecteur colonne j de la matrice de droite.

Exemple du produit d'une matrice 2,3 par un matrice 3,2 :

L'élément c(2,1) de la matrice résultat est donné par :

En notant que, dans cette somme de produits, les indices 2 et 1 ne changent pas, faisons intervenir un indice auxiliaire k :

Ceci constitue l'expression algébrique du produit de deux matrices. Pour programmer cette formule en langage MATLAB sans en utiliser les spécificités (comme avec le C, le FORTRAN, le PASCAL) :

Commençons par nous donner A et B :

A=[1 2 3 ; 4 5 6] % Crée une matrice 2x3 et l'assigne
  % à la variable A.
B=[11 11; 22 22 ; 33 33] % Crée une matrice 3x2 et l'assigne
  % à la variable B.

Calculons A*B

[m n]=size(A) % Attribue les dimensions de A
  % aux variables m et n.
[n p]=size(B) % Donne les dimensions de B
  % aux variables n et p.
C=zeros(m,p) % Crée une matrice de m lignes
  % et p colonnes remplie de zéros.
for i=1:1:m % i va aller de 1 à m par pas de 1.

    for j=1:1:p

% j va aller de 1 à p par pas de 1.
        for k=1:1:n % k va aller de 1 à n par pas de 1.
            C(i,j)=C(i,j)+A(i,k)*B(k,j) % Attribue à C(i,j) sa valeur.
        end % Limite la boucle interne sur k.
    end % Limite la boucle du milieu sur j.
end % Limite la boucle externe sur k.

 

En utilisant le fait que, dans le langage Matlab, * fonctionne non seulement sur des scalaires mais également sur des matrices (les scalaires sont des matrices 1X1):

C = A * B % en utilisant les avantages du
% langage MATLAB