Logo Espacio Linux Paypal - Acepta pagos con tarjeta en tu negocio      
Portada Manuales Linux Descargas Foros Buscar Mapa del sitio Ayuda BlogEL
   Iniciar sesión | Registrarse    
 
Principal

Patrocinadores

Anuncios



Boletín Espacio Linux
Las novedades del sitio y el mundo Linux en tu email.


Sitios amigos

Blogs de miembros


Directorio de blogs | Registrarse
Los usuario registrados pueden crear su propio blog y escribir comentarios.

Inversa y determinante de una matriz con C++ en Linux


Por: zeka
Publicado el: 05-28-2007 @ 02:23 pm


La inversa y el determinante de esta matriz simétrica 3x3:

1 2 3
2 1 4
3 4 1

se determina con un programa escrito en C++. Se utiliza una sub-rutina (invermat.h) que implementa los algoritmos para la eliminación simple de Gauss y la descomposición LU para la obtención de la inversa. Como al final de la eliminación simple de Gauss se obtiene un matriz triangular superior, este hecho también se aprovecha para el cálculo del determinante el cual se pasa por referencia al programa principal. La carpeta comprimida (*.zip) con el código fuente se encuentra en este link:

http://blogel.espaciolinux.info/wp-content/archivos/zeka/INVERSA.zip

Después de desempaquetar, abrimos una cónsola, nos ubicamos en la carpeta INVERSA y compilamos con:

g++ invermat.c++ -o invermat

Cuando ejecutamos el programa (./invermat [Enter]), la salida es:

Imprime la matriz de origen

1 2 3
2 1 4
3 4 1

El determinante de la matriz anterior es = 20

Imprime la matriz inversa

-0.75 0.5 0.25
0.5 -0.4 0.1
0.25 0.1 -0.15

Para propósitos de verificación, el producto de la matriz por su inversa corresponde a la matriz indentidad y puede llevarse a cabo en una hoja de cálculo. Si el determinante de una matriz es cero no tiene inversa.


 



Ultima actualización el 04-01-2008 @ 08:26 am




Añadir un comentario
Añadir un comentario
Ver más artículos
Ver más artículos

Comentarios

Por: alexander1     Publicado el 06-02-2007 @ 12:54 pm

Zeka, quiero hacerte una pregunta. Cómo surge todo esto de los cálculos matemáticos en c++, es decir cómo empezaste toda esta investigación?? Está muy interesante y muchas de las cosas las vi hace muy poco tiempo. saludos.
Por: zeka     Publicado el 06-05-2007 @ 08:41 am

Todo esto surge de la necesidad de producir datos sintéticos (generados) de precipitación, temperatura máxima, temperatura mínima y radiación solar para ser utilizados en modelos de simulación agroambiental en mi país. Para precipitación, se requieren modelos estadísticos y matemáticos que simulen la secuencia y produzcan la lámina de agua; está última tiene que distribuirse por mes con los parámetros estadísticos de las series reales. En cuanto a las temperaturas y la radiación solar, el modelo es más complejo porque usa métodos multivariados: hay que determinar matrices de correlación serial y cruzada para ser usadas en la generación. La generación implica, al programar, usar rutinas para suma, resta, transposición, inversión, determinación de autovalores y autovectores de matrices simétricas. También se requieren generadores de números pseudoaleatorios y de conversión de estos para que tengan ciertas propiedades estadísticas: media cero y varianza uno. Todo esto lo programé hace algún tiempo usando el compilador de Visual C++ y recientemente, hará como unas dos semanas, me decidí a hacerlo portable a Linux. Prácticamente comencé desde cero para obligarme a aprender C++ y con el tiempo, a medida que adquirí más experiencia programando, he tratado de hacer todo con funciones de propósitos generales, evitando el uso de variables globales, etc.

Saludos

Journal ©
 



Copyright | Términos de uso | Política de privacidad | Publicidad | Contáctanos | Blog