Páginas

NIMADRES

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;  
}


2 comentarios:

  1. Cuál es el límite (en tamaño) de un par de matrices que puede ser ejecutada por un computador??

    ResponderEliminar
  2. pues eso depende el procesador de cada maquina, pero en si puedes hacer matrices bastante complejas como lo necesites, de hecho los graficos en las computadoras no son mas que cálculos matemáticos con matrices para insertar pixeles en su lugar, lo comprenderas mejor si manejaras un poco de OpenGL ;)

    ResponderEliminar