Multiplicación de matrices cuadradas
Hola programadores, bueno ahora algo más para este blog y un poco de teoria de Wikipedia:
Multiplicación de una matriz por otra matriz
Dadas dos matrices A y B, tales que el número de columnas de la matriz A es igual al número de filas de la matriz B; es decir:
- y
- Con esa introducción un ejemplo con valores:
- El producto de dos matrices generalmente no es conmutativo, es decir, AB ≠ BA.
- y por el contrario
- Y la Implementacion en VB2010 en Consola:
- Module Module1
Dim A(500, 500) As Double
Dim B(500, 500) As Double
Dim C(500, 500) As Double
Dim Aux(500, 500), Baux(500, 500) As Double
Dim n As Integer ' Contienen filas y columnas respectivamente
Sub Main()
Console.BackgroundColor = ConsoleColor.White
Console.Clear()
Console.ForegroundColor = ConsoleColor.Black
Console.Title = "Producto de Matrices"
Console.Write(vbLf) 'Da un enter al titulo
Console.Write("" & vbTab & " Presentacion de matrices m x n")
Console.Write(vbLf)
Console.Write(vbLf)
Call Ingresar()
Call PMM(A, B)
Call Imprimir()
End Sub
Sub Ingresar()
' Ingresa el tamano de la matrix n x m
Console.Write("" & vbTab & "Ingrese el orden de la matriz (n) : ", n)
n = Integer.Parse(Console.ReadLine())
'----------------------------------------------------------
' Lee los datos ingresados por teclado
Console.WriteLine("" & vbLf & " * Ingrese los elementos de la Matriz A * " & vbLf & "")
For i As Integer = 1 To n
For j As Integer = 1 To n
Console.Write("" & vbTab & "Elemento [{0},{1}] : ", i, j)
A(i, j) = Double.Parse(Console.ReadLine()) ' Lectura de datos
Next
Next
'---------------------------------------------------
' Lee los datos ingresados por teclado
Console.WriteLine("" & vbLf & " * Ingrese los elementos de la Matriz B * " & vbLf & "")
For i As Integer = 1 To n
For j As Integer = 1 To n
Console.Write("" & vbTab & "Elemento [{0},{1}] : ", i, j)
B(i, j) = Double.Parse(Console.ReadLine()) ' Lectura de datos
Next
Next
End Sub
Sub Presentar()
'----------------------------------------------------------
'Presentacion de la matriz A
Console.WriteLine("" & vbLf & " * La Matriz A ingresada es : *" & vbLf & "")
For i As Integer = 1 To n
For j As Integer = 1 To n
Console.Write("" & vbTab & "{0,2:f4}", A(i, j))
Next
Console.Write("" & vbLf & "")
Next
'----------------------------------------------------------
'Presentacion de la matriz B
Console.WriteLine("" & vbLf & " * La Matriz A ingresada es : *" & vbLf & "")
For i As Integer = 1 To n
For j As Integer = 1 To n
Console.Write("" & vbTab & "{0,2:f4}", B(i, j))
Next
Console.Write("" & vbLf & "")
Next
End Sub
Function PMM(ByVal Aux(,) As Double, ByVal Baux(,) As Double) As Double
Console.WriteLine("" & vbLf & " * El Producto (A * B) es: *" & vbLf & "")
For i As Integer = 1 To n
For j As Integer = 1 To n
For k As Integer = 1 To n
C(i, j) = C(i, j) + (Aux(i, k) * Baux(k, j))
Next
Next
Next
End Function
Sub Imprimir()
For i As Integer = 1 To n 'to n
For j As Integer = 1 To n 'to m
Console.Write("" & vbTab & "{0,2:f2}", C(i, j))
Next
Console.Write("" & vbLf & "")
Next
Console.ReadLine()
End Sub
End Module - Y mis capturas:(de acuerdo al ejemplo arriba)
- para A*B
- y para B*A
- Se demuestra la propiedad no conmutativa. Bueno amigos con esto me despido hasta otra entrega!
Comentarios
Publicar un comentario