Páginas

NIMADRES

Mostrando entradas con la etiqueta producto de dos matrices. Mostrar todas las entradas
Mostrando entradas con la etiqueta producto de dos matrices. Mostrar todas las entradas

Multiplicación de matrices en C++


En matemáticas, la multiplicación o producto de matrices es la operación de composición efectuada entre dos matrices, o bien la multiplicación entre una matriz y un escalar según unas reglas.
Al igual que la multiplicación aritmética, su definición es instrumental, es decir, viene dada por un algoritmo capaz de efectuarla. El algoritmo para la multiplicación matricial es diferente del que resuelve la multiplicación de dos números. La diferencia principal es que la multiplicación de matrices no cumple con la propiedad de conmutatividad.

La multiplicación de matrices es muy útil para la resolución de sistemas de ecuaciones de muchas variables, dado que son muy cómodas para ser implementadas mediante un computador. El cálculo numérico se basa en gran parte de estas operaciones, al igual que poderosas aplicaciones tales como MATLAB. También actualmente se utiliza mucho en el cálculo de microarrays, en el área de bioinformática.

En este ejemplo se utilizan dos matrices estáticas con valores en sus casillas, lo importante de esto es la función que sirve para multiplicarlas, en el ejemplo del programa se especifica el limite de las casillas, que en este caso e 3, al final solo se imprime el resultado para comparar que los cálculos fueron correctos.

#include <iostream>
#define limite 3
using std::cout;
using std::cin;
static int matriz1[limite][limite] = {{3,4,7},
                                     {8,10,12},
                                     {3,4,5}};
                                     
static int matriz2[limite][limite] = {{25,7,9},
                                     {24,32,12},
                                     {15,32,24}};
                                     
void imprimirMatriz(int matriz[limite][limite]){
     for(int i = 0; i < limite; i++){
        cout << "\t";  
        for(int e = 0; e < limite; ++e)
            cout << matriz[i][e] << " ";
        cout << "\n";
    }
}
void multiplicarMatrices(int MatrizResultado[limite][limite]){
    for(int j = 0; j < limite; j++){
        for(int i = 0; i < limite; i++){
            MatrizResultado[j][i] = 0;
            for(int e = 0; e < limite; ++e){        
                MatrizResultado[j][i] += matriz1[j][e] * matriz2[e][i];
            }
        }                
    }
}
int main(){    
    int MatrizResultado[limite][limite];    
    cout << "\t\tMultiplicacion de Matrices\n";
    cout << "\t________________________________________\n\n";
    cout << "matriz 1 : \n"; 
    imprimirMatriz(matriz1);
    cout << "\n\n";
    cout << "matriz 2 : \n";
    imprimirMatriz(matriz2);
    multiplicarMatrices(MatrizResultado);
    cout << "\nResultado: \n";
    imprimirMatriz(MatrizResultado);    
    cin.get();  
    return 0;  
}