[code =vb]
Public Sub CrearMatrizGrid(ByVal Filas As Integer, ByVal Columnas As Integer, ByVal vDataGrid As DataGridView)
Try
vDataGrid.Columns.Clear()
vDataGrid.Rows.Clear()
For n As Integer = 1 To Columnas
Dim vColumn As New DataGridViewTextBoxColumn
vColumn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
vColumn.Width = 35
vColumn.Name = "Column" & n
vDataGrid.Columns.Add(vColumn)
Next
For m As Integer = 1 To Filas
Dim vFila(Columnas) As String
vDataGrid.Rows.Add(vFila)
Next
Catch ex As Exception
vDataGrid.Columns.Clear()
vDataGrid.Rows.Clear()
End Try
End Sub
Public Function Cofactor2X2(ByVal Datos As DataGridView) As Integer
Dim Respuesta As Integer = 0
Try
Dim Matriz(1, 1) As Integer
For n As Integer = 0 To 1
For m As Integer = 0 To 1
Matriz(n, m) = Datos.Rows(n).Cells(m).Value
Next
Next
Respuesta = (Matriz(0, 0) * Matriz(1, 1)) - (Matriz(1, 0) * Matriz(0, 1))
Catch ex As Exception
Respuesta = 0
End Try
Return Respuesta
End Function
Public Function Cofactor3X3(ByVal Datos As DataGridView) As Integer
Dim Respuesta As Integer = 0
Try
Dim Matriz(2, 2) As Integer
For n As Integer = 0 To 2
For m As Integer = 0 To 2
Matriz(n, m) = Datos.Rows(n).Cells(m).Value
Next
Next
Dim Respuestas(2) As Integer
For a As Integer = 0 To 2
Using vDatos As New DataGridView
CrearMatrizGrid(2, 2, vDatos)
Dim vColumna As Integer = 0
For n As Integer = 0 To 2
If n <> a Then
Dim vFila As Integer = 0
For m As Integer = 1 To 2
vDatos.Rows(vFila).Cells(vColumna).Value = Datos.Rows(m).Cells(n).Value
vFila += 1
Next
vColumna += 1
End If
Next
Respuestas(a) = Cofactor2X2(vDatos)
End Using
Next
Respuesta = (Matriz(0, 0) * Respuestas(0)) + (Matriz(0, 1) * Respuestas(1)) + (Matriz(0, 2) * Respuestas(2))
Catch ex As Exception
Respuesta = 0
End Try
Return Respuesta
End Function
Public Function Cofactor4X4(ByVal Datos As DataGridView) As Integer
Dim Respuesta As Integer = 0
Try
Dim Matriz(3, 3) As Integer
For n As Integer = 0 To 3
For m As Integer = 0 To 3
Matriz(n, m) = Datos.Rows(n).Cells(m).Value
Next
Next
Dim Respuestas(3) As Integer
For a As Integer = 0 To 3
Using vDatos As New DataGridView
CrearMatrizGrid(3, 3, vDatos)
Dim vColumna As Integer = 0
For n As Integer = 0 To 3
If n <> a Then
Dim vFila As Integer = 0
For m As Integer = 1 To 3
vDatos.Rows(vFila).Cells(vColumna).Value = Datos.Rows(m).Cells(n).Value
vFila += 1
Next
vColumna += 1
End If
Next
Dim Respuesta0101 As Integer = vDatos.Rows(0).Cells(0).Value * vDatos.Rows(1).Cells(1).Value * vDatos.Rows(2).Cells(2).Value
Dim Respuesta0102 As Integer = vDatos.Rows(0).Cells(1).Value * vDatos.Rows(1).Cells(2).Value * vDatos.Rows(2).Cells(0).Value
Dim Respuesta0103 As Integer = vDatos.Rows(0).Cells(2).Value * vDatos.Rows(1).Cells(0).Value * vDatos.Rows(2).Cells(1).Value
Dim Respuesta0201 As Integer = vDatos.Rows(2).Cells(0).Value * vDatos.Rows(1).Cells(1).Value * vDatos.Rows(0).Cells(2).Value
Dim Respuesta0202 As Integer = vDatos.Rows(2).Cells(1).Value * vDatos.Rows(1).Cells(2).Value * vDatos.Rows(0).Cells(0).Value
Dim Respuesta0203 As Integer = vDatos.Rows(2).Cells(2).Value * vDatos.Rows(1).Cells(0).Value * vDatos.Rows(0).Cells(1).Value
Respuestas(a) = Respuesta0101 + Respuesta0102 + Respuesta0103 - Respuesta0201 - Respuesta0202 - Respuesta0203
End Using
Next
Respuesta = (Matriz(0, 0) * Respuestas(0)) + (Matriz(0, 1) * Respuestas(1)) + (Matriz(0, 2) * Respuestas(2)) + (Matriz(0, 3) * Respuestas(3))
Catch ex As Exception
Respuesta = 0
End Try
Return Respuesta
End Function
Siguiendo con el tema les comento que he podido hacer una matriz de 2x2, 3x3 y 4x4 pero de mas no he podido, no se por que siento que me hace falta algo pequeño, no se si puedan ayudarme
La cuestión es que necesito hacer ahora una función donde me pueda resolver una de nxn o sea 5x5 o 6x6, una de 5x5 pues son 5 matrices de 4x4 y la de 4x4 ya la tengo resuelta, osea necesito escalonar las matrices para irlas resolviendo una por una hasta que llegue a matrices de 4.
No se si lo enrede mas, si alguien puede ayudarme se los agradezco