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 p>
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 p>
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