MATRICE
Une matrice est un genre de tableau
2 |
44 |
69 |
15 |
71 |
8 |
562 |
3 |
9 |
128 |
67 |
564 |
L'exemple précédent est une matrice 4 * 3 (4 lignes, 3
colonnes). Il est bien sûr possible de mettre des chiffres
à virgule flottante dans une matrice. Diverses opérations
peuvent être effectuées sur les matrices, c'est ce qu'on verra.
Opérations sur les matrices
Produit
Pour effectuer cette opération, il faut que le nombre de colonnes de la matrice A soit supérieur ou étal au nombre
de ligne de la matrice B.
Matrice A
Matrice B
La multiplication de A et B donnera
Matrice A*B
Pour parvenir à ce résultat, il faut faire faire
multiplier la ligne de la matrice A * la colonne de la matrice B.
Donc
on a (1*1) + (2*3) + (3*5) , (1*2)+(2*4)+(3*6) ,
(4*1)+(5*3)+(6*5),(4*2)+(5*4)+(6*6).
Type
matrice1=array[1..2,1..3]of integer;
matrice2=array[1..3,1..2]of integer;
matrice=array[1..high(matrice1),1..high(matrice2)]of integer;
function Produit(Mat1:matrice1;Mat2:Matrice2):matrice;
var
i,j,k:integer;
Mat3:matrice;
begin
for i:=1 to high(Mat1) do
for j:=1 to high(Mat1) do
begin
Mat3[i,j]:=0;
for k:=1 to high(Mat2) do
Mat3[i,j] := Mat3[i,j]+Mat1[i,k]*Mat2[k,j];
end;
result := Mat3;
end;
Addition de matrice
L'addition de matrice est simple, il suffit d'additionner les
valeurs des deux matrices qui sont situées au même endroit.
Les matrices doivent être de même dimensions
Matrice A
Matrice B
On addition 1 avec 5, 2 avec 6 , 3 avec 7 et 4 avec 8 pour obtenir
Voici le code de la fonction
type
matrice=array[1..2,1..2]of integer;
function Addition(Mat1:,Mat2:matrice):matrice;
var
i,j:integer;
Mat3:matrice;
begin
for i:=1 to high(Mat1) do
for j:=1 to high(Mat1) do
Mat3[i,j] := Mat1[i,j]+ Mat2[i,j];
result:=matc;
end;
Le principe de la soustraction est le même. Il suffit de
remplacer le + par un - dans l'algo ci-dessus.
Produit boolean
Cette opération ressemble au calcul de matrice.Pour effectuer
cette opération, il faut que le nombre de colonnes de la matrice A
soit supérieur ou étal au nombre de ligne de la matrice B.
Puisque c'est boolean, les éléments des matrices que
peuvent avoir que des 0 ou des 1 comme valeur.
Matrice A
Matrice B
Le principe ressemble à la multiplication de deux matrices.
On remplace les plus par des ou logiques. L'utilisation des ou logique
implique qu'aussitôt qu'on retrouve 1*1, ça donnera 1.
Donc
on a (1*1 ou 0*0 ou 1*1) ça donne 1. Puisqu'on a 1*1 et que c'est
ou, on aurait pu arrêter à 1*1. Le résultat final
donnera
Voici le code de la fonction pour calculer le produit boolean
type
matrice=array [1..3,1..3] of integer;
function ProduitBoolean(matrice1,matrice2:matrice):matrice;
var
i,j,k:integer;
ok:boolean;
matrice_result:matrice;
begin
ok := false;
for i:=1 to high(matrice1) do begin
for j:=1 to high (matrice1) do
begin
for k:=1 to high(matrice1) do
if (matrice1[i][k] = 1 ) and (matrice2[k][j]=1) and not(ok)then
ok := true;
if ok then
matrice_result[i][j]:=1
else
matrice_result[i][j]:=0;
ok := false;
end;
end;
result := matrice_result;
end;