elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Matriz Inversa c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Matriz Inversa c++  (Leído 9,960 veces)
TewsDR

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Matriz Inversa c++
« en: 5 Mayo 2012, 01:35 am »

Por favor necesito ideas de como poder hallar la matriz inversa,
Se como hallar manualmente, pero mi problema esta en 
como hacer para que mi programa haga las operaciones elementales
para poder hallar la inversa. Ayudenme please :D


En línea

exel

Desconectado Desconectado

Mensajes: 50



Ver Perfil
Re: Matriz Inversa c++
« Respuesta #1 en: 5 Mayo 2012, 07:52 am »

Hola

 Basandonos en la forma de obtener la matriz inversa de A:

Ainversa = (1/Det(A)) * (Adj(A)trans)

 Entendiendo que es primordial:

1.- La matriz A es cuadrada; de lo contrario es imposible obtener un determinante
2.- El determinante de A no debe ser igual a cero


 La primera condicion se puede solucionar directamente con el codigo. Ahora, la solucion a la segunda condicion no es tan sencilla. Podemos aplicar el algoritmo base para calcular un determinante de orden superior (mayor a 3) como:

Cita de: Wikipedia
El determinante de orden n, puede desarrollarse a partir de una fila o columna, reduciendo el problema al cálculo de un determinante de orden n-1. Para ello se toma una fila o columna cualquiera, multiplicando cada elemento por su cofactor (es decir, el determinante de la matriz que se obtiene eliminando la fila y columna correspondiente a dicho elemento, multiplicado por (-1)i+j donde i es el número de fila y j el número de columna). La suma de todos los productos es igual al determinante.

 ... esto lo puedes aplicar directamente, sin embargo esta solucion implica tener que elegir una fila o columna cuyos elementos nos reduzca el tiempo de calculo; para eso puedes aplicar otro algoritmo que se encargue. Puedes reducir el determinante superior hasta llegar al determinante de orden 3 en el que puedes aplicar la regla de Sarrus (comunmente conocida como la regla de triangulacion).


 Hasta aqui, con el codigo desarrollado podras comprobar si la matriz A tiene inversa o no, y ademas ya tendras calculado uno de los elementos de la formula.

 Los pasos siguientes son:

3.- obtener la matriz adjunta de A, osea Adj(A)
4.- obtener la matriz transpuesta de Adj(A), osea Adj(A)trans


*OBSERVACION: por una propiedad de la matriz adjunta, sabemos que Adj(A)trans=Adj(Atrans); osea que es lo mismo si primero realizas la transpuesta de A y luego obtienes la matriz adjunta.

 Codificar el paso cuatro es sencillo ya que solo debes intercambiar los elementos de la matriz (arreglo de dos dimensiones) cuyos subindices sean ij e ji. La resolucion del tercer paso tiene mas labor porque tienes que calcular el cofactor (tambien denominado adjunto) por cada elemento de la matriz A.

 Las ultimas lineas del codigo consisten en:

5.-  Dividir cada elemento de la matriz obenida en el paso 4, por el valor del determinante obtenido en el paso 3.

 Con esto finalmente obtendras la matriz inversa.

 Osea que tendras que arreglartelas para dar solucion a las situaciones 1 y 3 que son las complicadas, aunque si analizas un poco el tercer paso te daras cuenta de que utiliza como base los determinantes, que precisamente los debiste haber tratado en el primer paso. Las otras practicamente ya estan hechas.

Saludos


« Última modificación: 5 Mayo 2012, 08:17 am por exel » En línea

TewsDR

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Matriz Inversa c++
« Respuesta #2 en: 8 Mayo 2012, 06:38 am »

gracias por el aporte, me sirvio bastante :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Matriz transpuesta a la inversa!!!! Ayuda!!!
Java
karitodt 4 10,956 Último mensaje 8 Mayo 2013, 23:09 pm
por gokuedwin
Duda - Buscar si existe una matriz dentro de otra matriz
Programación Visual Basic
EddyW 2 5,830 Último mensaje 14 Agosto 2010, 06:18 am
por EddyW
matriz inversa por gauus jordan
Programación General
usernovell 0 2,174 Último mensaje 14 Abril 2013, 04:13 am
por usernovell
ejemplo matriz inversa gauus
Programación Visual Basic
asdexiva 0 1,584 Último mensaje 6 Febrero 2014, 05:26 am
por asdexiva
Ayuda explicación programa c++ (matriz inversa)
Programación C/C++
Cm7 0 2,190 Último mensaje 6 Diciembre 2017, 22:26 pm
por Cm7
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines