Red de conocimiento informático - Problemas con los teléfonos móviles - Matriz inversa de VB, hay varios problemas

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>

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