Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo utilizar VB para programar la inversión de matrices

Cómo utilizar VB para programar la inversión de matrices

Programa VB para inversión de matrices

Función privada MRinv(N como entero, mtxA() como doble) como booleano

'****** * ************************************************** ***********************************

' Función: Implementar el sistema método de selección para inversión de matrices Método Gaussiano-Jordan

' Parámetros: n - Variable de tipo entero, orden de la matriz

' mtxA - Matriz bidimensional de tipo doble, el volumen es n x n. Almacene la matriz A original; almacene su matriz inversa A-1 al regresar.

' Valor de retorno: tipo booleano, Falso en caso de error, Verdadero en caso de éxito

'********************* * ************************************************* ** *******************

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 a N

Para j = k a N

p = Abs (mtxA( i, j))

Si (p > D) Entonces

D = p

nIs(k) = i

nJs (k) = j

Finalizar si

Siguiente j

Siguiente i

' La solución falló

Si (D + 1# = 1#) Entonces

MRinv = False

Salir de la función

Fin si

Si ( nEs(k ) <> k) Entonces

Para j = 1 a N

p = mtxA(k, j)

mtxA(k, j) = mtxA( nIs(k), j)

mtxA(nIs(k), j) = p

Siguiente j

Finalizar si

Si (nJs(k) <> 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

Fin Si

mtxA(k, k) = 1# / mtxA(k, k)

Para j = 1 To N

Si (j <> k ) Entonces mtxA (k, j) = mtxA(k, j) * mtxA(k, k)

Siguiente j

Para i = 1 a N

Si (i <> k) Entonces

Para j = 1 a N

Si (j <> k) Entonces mtxA(i, j) = mtxA(i, j) -

mtxA(i, k) * mtxA(k, j)

Siguiente j

Fin si

Siguiente i

Para i = 1 a N

Si (i <> k) Entonces mtxA(i, k) = -mtxA(i, k) * mtxA(k, k)

Siguiente i

Siguiente k

' Ajusta y restaura el orden de filas y columnas

For k = N To 1 Step -1

If (nJs( k) <> k) Entonces

Para j = 1 A N

p = mtxA(k, j)

mtxA(k, j) = mtxA (nJs(k ), j)

mtxA(nJs(k), j) = p

Siguiente j

Fin si

Si (nEs (k) <> 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

' Resuelto exitosamente

MRinv = True

Función final

Fuente: /bbs/view21 -2142-1 .htm