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 ( ) ; } } }
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.
ResponderEliminarMuchas 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.
ResponderEliminary en modo window form?
ResponderEliminarexcelente!!!!
ResponderEliminaresta buenísimo esta operación...
ResponderEliminargracias amigo
ResponderEliminarpodrian dar el codigo de la multiplicacion de matrices con recursividad porfavor
ResponderEliminary que sea con metodos y no en console plis
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarsi 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)
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)
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)
Es excelente tu desarrollo, gracias por apoyarnos en el desarrollo y la excelente explicación que das para el manejo de productos de matrices.
ResponderEliminarExcelente, tomaré tu algoritmo prestado.
ResponderEliminarExcelente, tomaré tu algoritmo prestado.
ResponderEliminargracias u.u :*
ResponderEliminarOrganizado sale asi, pero hay un error , creo que fue al momento de ordenarlo
ResponderEliminarusing 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 ( ) ;
}
}
}
Me salia un error y se me soluciono cuando borre el "else". Muchas gracias por tu algoritmo :D
ResponderEliminar