Matriz inversa de VB, hay varios problemas
¡Hola amigos!
Este es solo un proceso personalizado para encontrar la inversa de una matriz conocida. Aún debes realizar la aplicación e implementación específicas tú mismo.
¡Déjame decirte!
Agrega un botón al formulario y copia el código a continuación.
Opción explícita
Subcomando privado1_Click()
Atenuar a(2, 2) como doble
Atenuar n como entero
Atenuar d como entero
Atenuar i como entero
Dim j como entero
Dim YesNo como booleano
'Genera una matriz cuadrada de 2*2 A
d = 0
n = 2
Para i = 1 A n
Para j = 1 A n
d = d 1
a(i , j) = d
Siguiente j
Siguiente i
'Matriz de salida A
Para i = 1 To n
Para j = 1 Para n
Imprimir a(i, j),
Siguiente j
Imprimir
Siguiente i
'Llame al proceso personalizado y encuentre la inversión
SíNo = MRinv(n, a())
Imprimir
Imprimir
Si es así, entonces
'Genere la inversa de la matriz
Para i = 1 To n
Para j = 1 To n
Imprimir a(i, j),
Siguiente j
Imprimir
Siguiente i
Else
Imprimir "¡No existe una matriz inversa!"
End If
End Sub
Función MRinv(n As Integer, mtxA() Como doble) Como booleano
' Variable local
ReDim nIs(n) Como entero, nJs(n) Como entero
Dim i Como entero, j Como Entero, k como entero
Dim d como doble, p como doble
'Selecciona todos los pivotes y elimínalos
Para k = 1 a n
d = 0#
Para i = k To n
Para j = k To n
p = Abs (mtxA(i, j ))
Si (p gt; d) Entonces
d = p
nIs(k) = i
nJs(k) = j
Fin si
Siguiente j
Siguiente i
'La solución falló
Si (d 1# = 1#) Entonces
MRinv = False
Salir de la función
Fin Si
Si (nIs(k) lt; gt; k) Entonces
Para j = 1 To n
p = mtxA(k, j)
mtxA(k, j) = mtxA(nIs(k), j)
mtxA(nIs(k), j) = p
Siguiente j
Fin si
Si (nJs(k) lt; gt; k) Entonces
Para i = 1 a n
p = mtxA(i, k)
mtxA(i, k) = mtxA(i, nJs(k))
mtxA(i, nJs(k)) = p
Siguiente i
Finalizar si
mtxA(k, k) = 1# / mtxA(k, k)
Para j = 1 A n
Si (j lt; gt; k) Entonces mtxA(k, j) = mtxA(k, j) * mtxA(k, k)
Siguiente j
Para i = 1 To n
Si (i lt; gt; k) Entonces
Para j = 1 To n
Si (j lt; gt; k) Entonces mtxA(i, j) = mtxA(i, j) - mtxA(i, k) * mtxA(k, j)
Siguiente j
Fin Si
Siguiente i
Para i = 1 To n
Si (i lt; gt; k) Entonces mtxA(i, k) = -mtxA (i, k) * mtxA(k, k)
Siguiente i
Siguiente k
'Ajustar y restaurar el orden de filas y columnas
Para k = n a 1 Paso -1
Si (nJs(k) lt; gt; k) Entonces
Para j = 1 a n
p = mtxA(k, j)
mtxA(k, j) = mtxA(nJs(k), j)
mtxA(nJs(k), j) = p p> p>
Siguiente j
Fin si
Si (nIs(k) lt; gt; k) Entonces
Para i = 1 A n
p = mtxA(i, k)
mtxA(i, k) = mtxA(i, nIs(k))
mtxA(i, nIs( k)) = p
Siguiente i
Finalizar si
Siguiente k
'Resolver con éxito
MRinv = Verdadero
Función final