martes, 1 de marzo de 2011

MULTIPLICACION DE MATRICES en C#

Descargar Netbeans 7.0 con Jdk Clic Aki"!
Zona C Tutor

Este blog se lo realizo con el fin de dar a conocer el desarrollo de la multiplicación de Matrices convirtiéndolo en Lenguaje de programación, pero antes debemos saber cuál es su Resolución matemática.

1ero.- La multiplicación o producto de Matrices tiene su regla de resolución por el cual tenemos que aplicarla .

El número de columnas de la primera matriz, debe ser igual al número de filas de la segunda matriz.

Regla para Resolver.-

La primera fila de la Matriz A por la primera Columna de la Matriz B siguiente

La primera fila de la Matriz A por la segunda columna de la Matriz B luego

La Segunda fila de la Matriz A por la primera Columna de la Matriz B luego sigue

La Segunda fila de la Matriz A por la segunda Columna de la Matriz B después

La tercera fila de la Matriz A por la primera Columna de la Matriz B siguiente

La tercera fila de la Matriz A por la segunda Columna de la Matriz B etc etc... y Listo!!..

2do.- Multiplicación de Matrices (Operación Matemática)




/*Codigo de Programacion*/



class MainClass
{
public static void Main()
{
Console.WriteLine("PRODUCTO O MULTIPLICACION DE MATRICES");
//MATRIZZ [1]
Console. WriteLine ( "[Matriz[1] A]" );//Muestra al usuario llenar la matriz 1
Console. Write ( "Inserte el Nº de Filas: " ) ;
int f1 = int . Parse ( Console. ReadLine ( ) ) ;//Captura numero de Filas de matriz 1
Console. Write ( "Inserte el Nº de Columnas: " ) ;
int c1 = int . Parse ( Console. ReadLine ( ) ) ;//Captura numero de Columnas de matriz 1
//MATRIZZ [2]
Console. WriteLine ( "\n [Matriz[2] B]" ) ;//Muestra al usuario llenar la matriz 2
Console. Write ( "Inserte el Nº de Filas: " ) ;//Muestra al usuario llenar el numero de Filas
int f2 = int . Parse ( Console. ReadLine ( ) );//Captura numero de Filas de matriz 2
Console. Write ( "Inserte el Nº de Columnas: ");
int c2 = int . Parse ( Console. ReadLine ( ) );//Captura numero de Columnas de matriz 2
//DECLARACION DE LAS MATRICES 1 Y 2
//Las filas y columnas se suman +1 para empezar desde posicion 1
int [ , ] Matriz1 = new int [ f1 + 1 , c1 + 1 ];
int [ , ] Matriz2 = new int [ f2 + 1 , c2 + 1 ]; //Matriz 2
int [ , ] Multiplicacion = new int [ f1 + 1 , c2 + 1 ] ;//Matriz para la multiplicacion
//CONDICIONES
//Si la columna de la matriz 1 es igual al numero de filasde la matriz 2
if ( c1 == f2 ) {
//Empezando a llenar la Matriz 1
Console. WriteLine ( " \n Datos [Matriz 1]: " ) ;
for ( int i = 1 ; i <= f1 ; i ++ ) { for ( int j = 1 ; j <= c1 ; j ++ ) { Console. Write ( "Ingresa Dato (Fila: {0} - Columna: {1}): " , i, j ) ; Matriz1 [ i, j ] = int . Parse ( Console. ReadLine ( ) ) ; } } //Empezando a llenar las Matriz 2 Console. WriteLine ( "Datos [Matriz 2]: " ) ; for ( int i = 1 ; i <= f2 ; i ++ ) { for ( int j = 1 ; j <= c2 ; j ++ ) { Console. Write ( "Ingresa Dato (Fila: {0} - Columna: {1}): " , i, j ) ; Matriz2 [ i, j ] = int . Parse ( Console. ReadLine ( ) ) ; } } //Multiplicando las 2 matrices for ( int i = 1 ; i <= f1 ; i ++ ) { for ( int j = 1 ; j <= c2 ; j ++ ) { Multiplicacion [ i, j ] = 0 ; for ( int z = 1 ; z <= c1 ; z ++ ) { Multiplicacion [ i, j ] = Matriz1 [ i, z ] * Matriz2 [ z, j ] + Multiplicacion [ i, j ] ; } } } Console. WriteLine ( "Multiplicacion de 2 Matrices" ) ; for ( int i = 1 ; i <= f1 ; i ++ ) { for ( int j = 1 ; j <= c2 ; j ++ ) { Console. Write ( "{0} " , Multiplicacion [ i, j ] ) ; //Muestra el resultado total } Console. WriteLine ( ) ; //Si la columna de la matriz 1 no es igual al numero de filasde la matriz 2 no se puede multiplicar } } else { Console. WriteLine ( "Error: No se puede multiplicar las matrices" + " Columnas: {0}! = Filas: {1}" , c1, f2 ) ; } Console. Read ( ) ; } } }


18 comentarios:

  1. Gracias por haber compartido el codigo, lo probe y funciono, ahora solo me falta analizarlo bien para ver en que estaba yo equivocado, y hacer mi appz con una clase en wf. muchas gracias de nuevo.

    ResponderEliminar
  2. Muchas gracias, amigo!!!, tu código me sirvio de algo. Ya que pude aclarar la duda que tenia en mi proyecto de matrices, ahora me falta es calcularle la inversa, pero si tienes material y desees compartirlo. Te lo agradecería de pana un saludo desde Venezuela.

    ResponderEliminar
  3. podrian dar el codigo de la multiplicacion de matrices con recursividad porfavor

    ResponderEliminar
  4. y que sea con metodos y no en console plis

    ResponderEliminar
  5. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  6. si quiero hacer uno con ese procedimiento pero sumandolo (solo la mitad de cada matris en caso de la matris A la inferior y la matris B la superior
    )

    ResponderEliminar
  7. si quiero hacer uno con ese procedimiento pero sumandolo (solo la mitad de cada matris en caso de la matris A la inferior y la matris B la superior
    )

    ResponderEliminar
  8. si quiero hacer uno con ese procedimiento pero sumandolo (solo la mitad de cada matris en caso de la matris A la inferior y la matris B la superior
    )

    ResponderEliminar
  9. Es excelente tu desarrollo, gracias por apoyarnos en el desarrollo y la excelente explicación que das para el manejo de productos de matrices.

    ResponderEliminar
  10. Organizado sale asi, pero hay un error , creo que fue al momento de ordenarlo
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    namespace Sumamatricesequisde
    {
    class MainClass
    {
    public static void Main()
    {
    Console.WriteLine("PRODUCTO O MULTIPLICACION DE MATRICES");
    //MATRIZZ [1]
    Console.WriteLine("[Matriz[1] A]");//Muestra al usuario llenar la matriz 1
    Console.Write("Inserte el Nº de Filas: ");
    int f1 = int.Parse(Console.ReadLine());//Captura numero de Filas de matriz 1
    Console.Write("Inserte el Nº de Columnas: ");
    int c1 = int.Parse(Console.ReadLine());//Captura numero de Columnas de matriz 1
    //MATRIZZ [2]
    Console.WriteLine("\n [Matriz[2] B]");//Muestra al usuario llenar la matriz 2
    Console.Write("Inserte el Nº de Filas: ");//Muestra al usuario llenar el numero de Filas
    int f2 = int.Parse(Console.ReadLine());//Captura numero de Filas de matriz 2
    Console.Write("Inserte el Nº de Columnas: ");
    int c2 = int.Parse(Console.ReadLine());//Captura numero de Columnas de matriz 2
    //DECLARACION DE LAS MATRICES 1 Y 2
    //Las filas y columnas se suman +1 para empezar desde posicion 1
    int[,] Matriz1 = new int[f1 + 1, c1 + 1];
    int[,] Matriz2 = new int[f2 + 1, c2 + 1]; //Matriz 2
    int[,] Multiplicacion = new int[f1 + 1, c2 + 1];//Matriz para la multiplicacion
    //CONDICIONES
    //Si la columna de la matriz 1 es igual al numero de filasde la matriz 2
    if (c1 == f2)
    {
    //Empezando a llenar la Matriz 1
    Console.WriteLine(" \n Datos [Matriz 1]: ");
    for (int i = 1; i <= f1; i++) { for (int j = 1; j <= c1; j++)
    {
    Console.Write("Ingresa Dato (Fila: {0} - Columna: {1}): ", i, j);
    Matriz1[i, j] = int.Parse(Console.ReadLine());
    }
    } //Empezando a llenar las Matriz 2
    Console.WriteLine("Datos [Matriz 2]: ");
    for (int i = 1; i <= f2; i++)
    { for (int j = 1; j <= c2; j++)
    {
    Console.Write("Ingresa Dato (Fila: {0} - Columna: {1}): ", i, j);
    Matriz2[i, j] = int.Parse(Console.ReadLine()); } }
    //Multiplicando las 2 matrices
    for (int i = 1; i <= f1; i++)
    {
    for (int j = 1; j <= c2; j++)
    {
    Multiplicacion[i, j] = 0;
    for (int z = 1; z <= c1; z++)
    {
    Multiplicacion[i, j] = Matriz1[i, z] * Matriz2[z, j] + Multiplicacion[i, j];
    }
    }
    }
    }

    Console.WriteLine("Multiplicacion de 2 Matrices"); for (int i = 1; i <= f1; i++)
    {
    for (int j = 1; j <= c2; j++)
    {
    Console.Write("{0} ", Multiplicacion[i, j]);
    //Muestra el resultado total
    }
    Console.WriteLine(); //Si la columna de la matriz 1 no es igual al numero de filasde la matriz 2 no se puede multiplicar

    }
    else
    { Console. WriteLine ( "Error: No se puede multiplicar las matrices" + " Columnas: {0}! = Filas: {1}" , c1, f2 ) ; } Console. Read ( ) ;
    }
    }
    }

    ResponderEliminar
  11. Me salia un error y se me soluciono cuando borre el "else". Muchas gracias por tu algoritmo :D

    ResponderEliminar