Álgebra+Lineal

Volver a San Andrés 2010-01 =Calculadora de Álgebra Lineal= Las matrices se utilizan para resolución de sistemas de ecuaciones lineales, de ecuaciones diferenciales y derivadas parciales entre otras. Dada su importancia, obtener información acerca de las matrices y calcular operaciones entre ellas es de gran utilidad. Por su naturaleza, desarrollar algunas operaciones de forma manual es casi imposible, porque implican muchas operaciones. Éste proyecto implementa algunas de las operaciones más comunes en un curso básico de álgebra lineal. toc =Proyecto= Debido a la complejidad del proyecto no fue posible implementarlo en Processing, fue escrito en C++ usando la herramienta Eclipse.

Integrantes
Hayden Osorio Michael Cardozo

Programa
Este programa fue escrito en C++. Lee dos matrices desde archivo y puede realizar las siguientes operaciones:
 * Sumar matrices
 * Multiplicar matrices
 * Calcular la Traspuesta
 * Calcular la Traza
 * Verificar si una matriz es simétrica, antisimétrica o ninguna
 * Calcular el determinante
 * Calcular los cofactores
 * Calcular la adjunta
 * Calcular la inversa
 * Verificar ortogonalidad

Código fuente
El código fuente del programa es: Lee las matrices: Y proporciona el resultado en: =Enunciado del problema=

CALCULADORA DE ÁLGEBRA LINEAL

Las matrices se utilizan para resolución de sistemas de ecuaciones lineales, de ecuaciones diferenciales y derivadas parciales entre otras. Dada su importancia, obtener información acerca de las matrices y calcular operaciones entre ellas es de gran utilidad. Por su naturaleza, desarrollar algunas operaciones de forma manual es casi imposible, porque implican muchas operaciones.

Haga un programa que funcione como calculadora de álgebra lineal, calculando las propiedades y operaciones básicas sobre matrices. La calculadora debe calcular, entre otras, las siguientes propiedades y operaciones entre matrices de números reales:
 * Hallar la traspuesta
 * Informar si la matriz es invertible
 * Si es invertible, hallar la inversa
 * Calcular la Traza
 * Calcular el determinante
 * Hallar la matriz de cofactores
 * Hallar la matriz adjunta
 * Verificar si es una matriz simétrica, antisimétrica o ninguna
 * Verificar si es una matriz ortogonal
 * Suma de matrices
 * Multiplicación por escalar
 * Multiplicación de matrices
 * Buscar eigenvalores y eigenvectores de la matriz
 * Operaciones adicionales que quieran incluir

Si las operaciones no se pueden calcular, se debe informar al usuario la razón, por ejemplo, si se ingresa una matriz de NxM elementos con N≠ M y se quiere calcular la Traza, se debe informar que no se puede calcular porque esta operación solo está definida para matrices cuadradas. Además el programa debe permitir la lectura de matrices desde archivo, ingresando el nombre desde el teclado y permitir la escritura de los resultados también en archivo.

=Documento entregado=

**CALCULADORA DE ALGEBRA LINEAL**

En muchas áreas de la ingeniería es necesario saber manejar matrices con precisión, este programa permite agilizar la mayoría de las operaciones y propiedades de matrices con tan solo ingresar algunos datos.

**ANALISIS:** Las herramientas obtenidas en el curso de programación de computadores fueron utilizadas en la elaboración del código fuente del programa, orientadas a solucionar los problemas algebraicos del usuario de una manera eficaz, evitándole hacer estos cálculos manualmente; ahorrando así tiempo valioso. Para esto utilizaremos estructuras de datos, procedimientos, funciones recursivas, funciones, ciclos iteradores y de seleccion, condicionales, arreglos, matrices, registro y archivos Se debe diseñar un programa que calcule algunas operaciones elementales y propiedades entre matrices de números reales. El programa debe ser capaz de: Calcular: la transpuesta, la traza, el determinante, valores y vectores propios de la matriz. Verificar: si la matriz es invertible, si lo es obtener su inversa, si es simétrica, anti simétrica, u ortogonal. Hallar: matriz de cofactores, matriz adjunta, suma de matrices, multiplicación de matrices, multiplicación por escalar.

**ESPECIFICACIÓN DEL PROBLEMA:** **Entradas:** dependiendo de la operación deseada ingrese una o dos matrices, dimensión de la matriz. **Salidas:** el determinante, la traza, valores y vectores propios de la matriz, matriz de cofactores, matriz adjunta, concluir si la matriz simétrica anti simétrica u ortogonal o ninguna, además si la matriz es invertible obtener su inversa, multiplicación por escalar, suma y multiplicación de matrices (cuando el usuario lo desee). **Condiciones:** para operaciones y cálculos tales como: suma de matrices, verificación de simetría, anti simetría, ortogonalidad, invertibilidad, inversa, traza, determinante, valores y vectores propios, matriz de cofactores y adjunta. Las matrices ingresadas deben tener el mismo número de columnas que filas (matrices cuadradas nxn) de dimensión mayor o igual a 2x2. Para la multiplicación de matrices no es necesario que sean cuadradas ni de igual dimensión, la única restricción que se debe cumplir es que el numero de filas de la matriz **A** coincida con el numero de columnas de la matriz **B.** por ejemplo: **A** 2x3 y **B** 5x2.

**DISEÑO DEL** **ALGORITMO:** Para hacer más sencillo la elaboración del código fuente se dividio el problema en pequeñas partes. Como la finalidad del programa es trabajar con matrices el primer paso fue crear una estructura de datos tipo matriz para agrupar varios datos en uno solo, luego se crearon cuatro procedimientos para leer y escribir datos o información desde el teclado, en la pantalla, o desde archivo. Después empleamos funciones de tipo matriz, entero, booleano y real para ahorrar espacio en memoria y hacer el programa más simple y efectivo, nos pareció más cómodo solucionar la mayoría de los requerimientos del proyecto con funciones, ya que es más sencillo que utilizar ciclos extensos, algunas de estas son adjunta, submatriz, matriz escalar, inversa, transpuesta, simétrica ,ortogonal, entre otras. Posteriormente se creó un ciclo de selección, el Cual imprime en pantalla un menú de opciones enumeradas con las operaciones que realiza el programa, permitiéndole al usuario escoger que desea que realice el programa, en cada una de estas opciones se le pregunta al usuario si quiere ingresar la matriz desde el teclado o si prefiere leerla desde archivo, a continuación el programa le pregunta otra vez al usuario si quiere imprimir los resultados en pantalla o guardarlos en archivo y el usuario responde simplemente digitando la opción de su preferencia. Este ciclo se repite una y otra vez hasta que el usuario elija la última opción del menú o vuelva a ejecutar el programa.

**PRUEBA Y VERIFICACIÓN**:

Para comprobar que el programa soluciona los problemas del usuario se realizaron todos los cálculos que el proyecto requería de forma manual con dos matrices y luego se corroboraron con los resultados del programa. La primera matriz es: 1 2 5 la segunda matriz es: 3 2 5 3 -2 4 11 -2 4 2 3 1 -5 3 1  La segunda matriz solo se utilizo para multiplicación y suma de matrices. La suma de estas dos matrices es igual a: 4 4 10 14 -4 8 -3 6 2  La multiplicación es igual a: 0 13 18 -33 22 11 34 1 23  Las operaciones a continuación se realizaron con la primera matiz. La transpuesta es: 1 3 2 2 -2 3 5 4 1  Esta matriz ni es simétrica, ni anti simétrica. Su determinante es 61 La matriz de cofactores es: -14 5 13 la matriz adjunta es: -14 13 18 13 -9 1 5 -9 11 18 11 -8 13 1 -8

La traza es: 0 la matriz no es ortogonal

Como su determinante es diferente de 0 tiene inversa y es: -14/61 13/61 18/61 5/61 -9/61 11/61 13/61 1/61 -8/61

La calculadora de matrices es una herramienta muy útil para calcular de manera rápida operaciones con matrices además de ser de fácil manejo genera resultados precios e inmediatos.

=Póster=