Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo...

126
Álvaro Barreras Peral Aplicación para la experimentación numérica y simbólica matricial Ana Romero Ibáñez y Juan Manuel Peña Fernández Facultad de Ciencias, Estudios Agroalimentarios e Informática Proyecto Fin de Carrera Matemáticas y Computación 2012-2013 Título Autor/es Director/es Facultad Titulación Departamento PROYECTO FIN DE CARRERA Curso Académico

Transcript of Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo...

Page 1: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

Álvaro Barreras Peral

Aplicación para la experimentación numérica y simbólicamatricial

Ana Romero Ibáñez y Juan Manuel Peña Fernández

Facultad de Ciencias, Estudios Agroalimentarios e Informática

Proyecto Fin de Carrera

Matemáticas y Computación

2012-2013

Título

Autor/es

Director/es

Facultad

Titulación

Departamento

PROYECTO FIN DE CARRERA

Curso Académico

Page 2: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

© El autor© Universidad de La Rioja, Servicio de Publicaciones, 2013

publicaciones.unirioja.esE-mail: [email protected]

Aplicación para la experimentación numérica y simbólica matricial, proyecto finde carrera

de Álvaro Barreras Peral, dirigido por Ana Romero Ibáñez y Juan Manuel Peña Fernández (publicado por la Universidad de La Rioja), se difunde bajo una Licencia

Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported. Permisos que vayan más allá de lo cubierto por esta licencia pueden solicitarse a los

titulares del copyright.

Page 3: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

1

A Ana Romero y Juan Manuel Peña, por su in�nita paciencia y susvaliosos consejos. Gracias por iluminar aquellas zonas que estaban oscuraspara mí y guiarme por este camino. Caminar, trabajar y aprender así es unplacer.

A María, por su perseverancia y por estar siempre �aquí�. Graciaspor soportar todas esas divagaciones sobre El Proyecto y por no dejarmeabandonar este barco antes de tiempo.

A mi familia, por su interés y apoyo. Gracias por esas caras decomprensión cuando os explicaba lo que estaba haciendo; y por la desa�antepregunta �nal de siempre: �Y esto, ¾para qué sirve?� .

Page 4: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos
Page 5: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

Resumen

El objeto de este proyecto es el desarrollo de una aplicación que facilite laexperimentación numérica dentro del campo del álgebra lineal. La aplicaciónse centra en la resolución de varios problemas matemáticos: resolución desistemas lineales, cálculo de valores propios, valores singulares, matriz inversay descomposición LDU . Para ello, el usuario puede introducir y editar datos(matrices y vectores) y métodos que resuelvan dichos problemas. Se utiliza unlenguaje intuitivo (pseudocódigo) para manipular esa información y, debidoa que la información se traduce a lenguaje XML (en concreto MathML),sería posible resolver un mismo problema utilizando distintos sistemas decálculo y comparar las soluciones. Se ha implementado al resolución deproblemas utilizando el sistema de cálculo simbólico Mathematica. Además,la aplicación ofrece la posibilidad de visualizar los resultados de diversasformas (formato de texto plano, tablas, grá�cas).

3

Page 6: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos
Page 7: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

Índice general

1. Documento de Objetivos del Proyecto 91.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.2. Antecedentes e interés del proyecto . . . . . . . . . . . . . . . 10

1.2.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . 101.2.2. Interés del proyecto . . . . . . . . . . . . . . . . . . . . 10

1.3. Descripción del proyecto . . . . . . . . . . . . . . . . . . . . . 101.4. Alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.4.1. Entregables . . . . . . . . . . . . . . . . . . . . . . . . 111.4.2. Actividades de apoyo a la realización del proyecto . . . 111.4.3. Plan de dirección del alcance . . . . . . . . . . . . . . . 12

1.5. Recursos y comunicación . . . . . . . . . . . . . . . . . . . . . 121.5.1. Recursos humanos . . . . . . . . . . . . . . . . . . . . 121.5.2. Comunicación . . . . . . . . . . . . . . . . . . . . . . . 121.5.3. Tecnología . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.6. Plani�cación del proyecto . . . . . . . . . . . . . . . . . . . . 131.6.1. Metodología a seguir . . . . . . . . . . . . . . . . . . . 131.6.2. Estructura de descomposición del trabajo (EDT) . . . 141.6.3. Listado de actividades . . . . . . . . . . . . . . . . . . 141.6.4. Estimaciones globales . . . . . . . . . . . . . . . . . . . 191.6.5. Distribución del trabajo . . . . . . . . . . . . . . . . . 19

1.7. Riesgos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2. Análisis 252.1. De�nición del sistema . . . . . . . . . . . . . . . . . . . . . . . 252.2. Captura de requisitos . . . . . . . . . . . . . . . . . . . . . . . 26

2.2.1. Requisitos funcionales . . . . . . . . . . . . . . . . . . 262.2.2. Requisitos no funcionales . . . . . . . . . . . . . . . . . 272.2.3. Funcionalidad fuera del alcance de la aplicación . . . . 27

2.3. Identi�cación de los casos de uso . . . . . . . . . . . . . . . . 282.4. Especi�cación de los casos de uso . . . . . . . . . . . . . . . . 30

5

Page 8: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

6 ÍNDICE GENERAL

3. Diseño 413.1. Diseño de clases . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.1.1. Diagrama de clases . . . . . . . . . . . . . . . . . . . . 413.1.2. Especi�cación del diagrama de clases . . . . . . . . . . 43

3.2. Diseño de la comunicación . . . . . . . . . . . . . . . . . . . . 523.2.1. Sistema de �cheros . . . . . . . . . . . . . . . . . . . . 523.2.2. Comunicación . . . . . . . . . . . . . . . . . . . . . . . 53

3.3. Diseño de interfaces . . . . . . . . . . . . . . . . . . . . . . . . 543.3.1. Interfaz principal . . . . . . . . . . . . . . . . . . . . . 543.3.2. Creación de elementos . . . . . . . . . . . . . . . . . . 553.3.3. Edición de elementos . . . . . . . . . . . . . . . . . . . 563.3.4. Traducción . . . . . . . . . . . . . . . . . . . . . . . . 563.3.5. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . 573.3.6. Comparaciones . . . . . . . . . . . . . . . . . . . . . . 583.3.7. Mensaje de error . . . . . . . . . . . . . . . . . . . . . 59

4. Implementación 674.1. Tecnologías utilizadas . . . . . . . . . . . . . . . . . . . . . . . 674.2. MathML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.3. Métodos más relevantes . . . . . . . . . . . . . . . . . . . . . 704.4. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

4.4.1. Lenguaje MathML (XML) . . . . . . . . . . . . . . . . 724.4.2. Parser Mathematica . . . . . . . . . . . . . . . . . . . 724.4.3. Comunicación . . . . . . . . . . . . . . . . . . . . . . . 73

4.5. Funcionalidad �nal de la aplicación . . . . . . . . . . . . . . . 734.6. Posibles ampliaciones . . . . . . . . . . . . . . . . . . . . . . . 744.7. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764.8. Implantación y uso . . . . . . . . . . . . . . . . . . . . . . . . 78

5. Gestión del proyecto 795.1. Comparación entre tiempos estimados y reales . . . . . . . . . 795.2. Distribución temporal del trabajo . . . . . . . . . . . . . . . . 82

Anexos 84

A. Resumen Matemático 87A.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87A.2. De�niciones previas y notaciones . . . . . . . . . . . . . . . . 87A.3. Métodos de comparación . . . . . . . . . . . . . . . . . . . . . 88

A.3.1. Visualización directa . . . . . . . . . . . . . . . . . . . 88

Page 9: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

ÍNDICE GENERAL 7

A.3.2. Tabla de valores . . . . . . . . . . . . . . . . . . . . . . 89A.3.3. Error relativo y error absoluto . . . . . . . . . . . . . . 89A.3.4. Número de condición de una matriz . . . . . . . . . . . 90A.3.5. Grá�ca . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

A.4. Valores propios de una matriz . . . . . . . . . . . . . . . . . . 90A.4.1. De�nición . . . . . . . . . . . . . . . . . . . . . . . . . 91A.4.2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . 92A.4.3. Método de resolución . . . . . . . . . . . . . . . . . . . 92A.4.4. Entradas/salidas del problema . . . . . . . . . . . . . . 93

A.5. Valores singulares de una matriz . . . . . . . . . . . . . . . . . 93A.5.1. De�nición . . . . . . . . . . . . . . . . . . . . . . . . . 94A.5.2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . 94A.5.3. Método de resolución . . . . . . . . . . . . . . . . . . . 95A.5.4. Entradas/salidas del problema . . . . . . . . . . . . . . 95

A.6. Resolución de sistemas de ecuaciones lineales . . . . . . . . . . 95A.6.1. De�nición . . . . . . . . . . . . . . . . . . . . . . . . . 96A.6.2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . 97A.6.3. Método de resolución . . . . . . . . . . . . . . . . . . . 98A.6.4. Entradas/salidas del problema . . . . . . . . . . . . . . 98

A.7. Descomposición LDU de una matriz . . . . . . . . . . . . . . . 99A.7.1. De�nición . . . . . . . . . . . . . . . . . . . . . . . . . 99A.7.2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . 99A.7.3. Método de resolución . . . . . . . . . . . . . . . . . . . 100A.7.4. Entradas/salidas del problema . . . . . . . . . . . . . . 100

A.8. Inversa de una matriz . . . . . . . . . . . . . . . . . . . . . . . 100A.8.1. De�nición . . . . . . . . . . . . . . . . . . . . . . . . . 101A.8.2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . 102A.8.3. Método de resolución . . . . . . . . . . . . . . . . . . . 102A.8.4. Entradas/salidas del problema . . . . . . . . . . . . . . 103

B. Manual de usuario 107B.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107B.2. Implantación . . . . . . . . . . . . . . . . . . . . . . . . . . . 107B.3. Ventana Principal . . . . . . . . . . . . . . . . . . . . . . . . . 108B.4. Crear Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . 109B.5. Crear Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . 109B.6. Editar Matrices y Métodos . . . . . . . . . . . . . . . . . . . . 112B.7. Ejemplo de Problema (Sistema Lineal) . . . . . . . . . . . . . 112

C. Actas de reunión 115

Page 10: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos
Page 11: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

Capítulo 1

Documento de Objetivos delProyecto

1.1. Objetivos

El principal objetivo del presente proyecto es desarrollar una aplicaciónque ayude al usuario a realizar experimentación numérica dentro del campodel álgebra lineal. Se pretende centralizar distintos sistemas para el cálculomatemático de manera que el usuario pueda trabajar en un único lenguaje,evitando realizar trabajo repetitivo en dichos sistemas. Además, la aplicacióndeberá facilitar la comparación de los resultados obtenidos.

La aplicación debe ser funcional y resolver de manera aceptable variosproblemas especí�cos impuestos por las necesidades que motivan el presenteproyecto (hablaremos de estas necesidades en el apartado Interés delproyecto).

Por lo tanto, el proyectante deberá estudiar la traducción de códigoentre distintos lenguajes de programación. Esto le permitirá tener unavisión más amplia de estos lenguajes. Además, la interacción del usuarioy la aplicación debe ser �uida y sencilla, por lo que el proyectante deberáestudiar detalladamente el desarrollo de interfaces. Esto le permitirá aprenderconceptos nuevos sobre interfaces y nuevos lenguajes de programaciónrelacionados con las matemáticas.

9

Page 12: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

10 CAPÍTULO 1. DOCUMENTO DE OBJETIVOS DEL PROYECTO

1.2. Antecedentes e interés del proyecto

1.2.1. Antecedentes

En algunos entornos dirigidos a trabajar con matemáticas existen formasde traducir programas escritos en sus propios lenguajes a otros lenguajes deprogramación, por ejemplo C++.

Sin embargo, no hemos encontrado antecedentes de un programa queayude a trabajar con varios entornos uni�cando el lenguaje que el usuariodebe utilizar. Esta es una ventaja que se pretende conseguir respecto a lassoluciones existentes en la actualidad.

1.2.2. Interés del proyecto

La idea del presente proyecto surge a partir de un problema real. Elproyectante, durante la realización de su tesis doctoral, se ha encontradoa menudo (y previsiblemente se encontrará más veces) con la necesidadde combinar dos sistemas de cálculo (Mathematica y Octave). Al realizarexperimentación numérica, suele ser frecuente la comparación de resultadosnuméricos (por ejemplo, los de Octave) y simbólicos (por ejemplo, los deMathematica), pero tanto los lenguajes de programación de esos entornoscomo los formatos de las salidas que ofrecen son muy distintos. Esto hacemuy tedioso el trabajo de comparar datos procedentes de los dos entornos ymuy oportuna la aplicación que se pretende desarrollar durante este proyecto.

Además, el proyectante espera adquirir conocimientos en cuanto aimplementación de interfaces y estudiar más a fondo lenguajes deprogramación con los que ya había trabajado (Java) y otros con los queha tenido menos relación (XML).

1.3. Descripción del proyecto

Puesto que el rol de cliente lo hace en este caso el proyectante (ver secciónde Interés del proyecto), es necesaria una primera fase en la que se de�nanlos requisitos de manera precisa. Para ello será necesario un estudio de lasnecesidades que se desean cubrir con la aplicación del presente proyecto.Como resultado de esta fase, se espera obtener un informe detallado de losdistintos �estudios� (éstos se explicarán mediante diagramas de casos de uso)que se podrán llevar a cabo con la aplicación.

Un punto importante es la comunicación de la aplicación con las distintasherramientas informáticas para el trabajo matemático que intervendrán

Page 13: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

1.4. ALCANCE 11

en el proyecto. Por lo que se deberá decidir un sistema de comunicacióny transmisión de información entre estas herramientas. Así como lapresentación de los resultados al usuario de la aplicación.

Una vez decididos esos puntos claves, se pasará a la implementación dela aplicación. La aplicación interoperará con un sistema de cálculo simbólicoy otro de cálculo numérico (en la sección de Tecnología se dice qué sistemasse utilizarán y se justi�ca esta elección). Una serie de pruebas individualesy otras colectivas serán imprescindibles para comprobar que la aplicacióncumple con los requisitos funcionales de�nidos durante la fase de análisis.

Cuando se �nalicen todas las fases del proyecto, incluida la elaboración dela memoria, y sean aprobadas por los codirectores, se procederá a prepararuna presentación del proyecto para su defensa ante el tribunal que lo evaluará.Esta es la última tarea que compone este proyecto.

1.4. Alcance

1.4.1. Entregables

El trabajo realizado para la elaboración del presente proyecto se verámaterializado mediante los siguientes documentos, que serán entregados altribunal de evaluación:

Memoria: documento �nal de todo el proyecto que incluye elDocumento de Objetivos del Proyecto.

Código de la aplicación.

Ejecutable de la aplicación.

Presentación del Proyecto: presentación que se realizará en la defensadel proyecto.

1.4.2. Actividades de apoyo a la realización del proyecto

Para la correcta realización de este proyecto son necesarios una serie deconocimientos previos. Por ello, se realizarán las siguientes actividades deapoyo para el aprendizaje de esos conocimientos:

- Estudio de las nociones matemáticas necesarias. Este estudio formaparte de la continua formación por parte del proyectante para el desarrollode su tesis doctoral.

- Profundizar en los sistemas de cálculo elegidos para implementar lafuncionalidad de la aplicación (ver sección de Tecnología). Será necesario un

Page 14: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

12 CAPÍTULO 1. DOCUMENTO DE OBJETIVOS DEL PROYECTO

estudio sobre la comunicación con estas herramientas (�cheros de entrada ysalida, scripts).

- Estudio de XML. El proyectante aprenderá los conceptos sobre XMLnecesarios para el desarrollo de parte del presente proyecto.

- Perfeccionamiento del lenguaje LATEX. Aunque el proyectante poseenociones sobre este lenguaje, será necesario adquirir nuevos conocimientos encuanto a organización y maquetación de trabajos de tamaño medio-grandecomo se espera que sea la memoria de este proyecto.

1.4.3. Plan de dirección del alcance

Durante todo el proyecto se realizarán reuniones periódicas con loscodirectores del proyecto. Al principio para de�nir y concretar el proyecto ymás adelante para discutir los informes presentados, así como prevenir y/ocorregir los posibles errores cometidos. De esta manera se espera solventar deforma e�ciente los problemas surgidos a lo largo del desarrollo del presenteproyecto.

1.5. Recursos y comunicación

1.5.1. Recursos humanos

Las personas que formarán parte del presente proyecto son las siguientes:

Álvaro Barreras Peral: proyectante.

Ana Romero Ibáñez: codirectora del proyecto. Es una profesora de laUniversidad de La Rioja

Juan Manuel Peña Ferrández: codirector del proyecto. Es el director detesis del proyectante. Es un profesor de la Universidad de Zaragoza.

Miembros del tribunal: profesores que evaluarán el proyecto.

1.5.2. Comunicación

La comunicación entre el proyectante y los codirectores de proyecto sellevará a cabo básicamente de dos formas:

Correo electrónico: para concretar futuras reuniones, entregarproductos para su posterior discusión, discusión de esos productos ysolventar dudas.

Page 15: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

1.6. PLANIFICACIÓN DEL PROYECTO 13

Reuniones presenciales: tendrán lugar durante todo el proyecto demanera periódica y servirán para llevar acabo el seguimiento deltrabajo.

1.5.3. Tecnología

La implementación de la aplicación del presente proyecto se realizará enJava. Se ha elegido este lenguaje de programación porque ya era conocidopor el proyectante. Además, ofrece todas las características necesarias para eldesarrollo de la misma. Como entorno para programar en Java se ha elegidoEclipse.

Los entornos matemáticos que se han elegido son, por un ladoMathematica como entorno para el cálculo simbólico; y por otro lado,Octave como entorno para el cálculo numérico. Ambos lenguajes eranconocidos por el proyectante (el proyectante conocía Matlab, pero es muysimilar a Octave). Además, son herramientas extensamente utilizadas paratrabajos matemáticos.

Para la representación de objetos matemáticos en las interfaces delprograma se barajan varias posibilidades. Podría utilizarse alguna libreríade XML para esta �nalidad (OpenMath, MathML) o bien el lenguaje LATEX.Esta decisión todavía no está tomada, el proyectante deberá estudiar lasdiferentes posibilidades y elegir la que mejor se acomode a las necesidades dela aplicación.

La redacción de la memoria del presente proyecto se realizará medianteel lenguaje LATEX. El entorno elegido para ello es TeXnicCenter.

Se utilizarán herramientas como Argouml, Visio y OpenProj parala elaboración de los diagramas y esquemas necesarios para la correctacomprensión de la documentación del proyecto.

1.6. Plani�cación del proyecto

1.6.1. Metodología a seguir

En cuanto a la metodología, se tomará como referencia MÉTRICA(Versión 3) pero no se seguirá de manera estricta. Para el desarrollo delpresente proyecto, el proyectante ha decido basarse en esa metodología demanera que dividirá el proyecto en las siguientes fases:

Plani�cación inicial

Análisis

Page 16: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

14 CAPÍTULO 1. DOCUMENTO DE OBJETIVOS DEL PROYECTO

Diseño

Implementación

Documentación

Gestión del proyecto

Sin embargo, el proyectante no cree que merezca la pena seguir de maneraprecisa todos y cada uno de los puntos de la metodología mencionadaanteriormente, por lo que se simpli�cará en algunos puntos y en otrosse modi�cará. De esta forma se pretende desarrollar el presente proyectobajo una metodología habitual pero que se ajuste adecuadamente a lascaracterísticas del mismo. Se ha decidido seguir un ciclo de vida en cascadapara el desarrollo de este proyecto.

1.6.2. Estructura de descomposición del trabajo (EDT)

En esta sección mostraremos la estructura de descomposición del trabajode este proyecto mediante un diagrama. En este diagrama se puede ver ladescomposición del trabajo en tareas y subtareas, de manera que resultemás fácil la estimación de coste temporal y la realización de una mejorplani�cación del presente proyecto.

1.6.3. Listado de actividades

Plani�cación inicial

Esta actividad constituye el primer contacto con el presente proyecto.Consta de las siguientes tareas:

• Plani�cación.Consiste en la descomposición del trabajo a realizar para concluirel presente proyecto en actividades, así como desgranar cada unade estas en las diferentes tareas de las que consta.

Estimación: 5 horas.

• Reuniones.Son las reuniones que tienen lugar al principio del proyecto entreel proyectante y sus codirectores. En ellas se expone de maneraglobal el proyecto, su alcance y los objetivos que se persiguen.

Estimación: 3 horas.

Page 17: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

1.6. PLANIFICACIÓN DEL PROYECTO 15

Figura 1.1: Estructura de decomposición del trabajo

• Aprendizaje.Al realizar esta tarea, el objetivo que el proyectante persigue escompletar los conocimientos necesarios para ejecutar el presenteproyecto. Incluye subtareas tales como leer la documentaciónnecesaria, revisar conceptos sobre las matemáticas que seutilizarán, estudio de herramientas informáticas (XML, sistemasde cálculo).

Estimación: 40 horas.

• Elaboración del DOP.

Diseñar y escribir el Documento de Objetivos del Proyecto. Endicho documento se especi�can la descripción del proyecto, elalcance, sus objetivos, la descomposición del mismo en actividadesy la plani�cación de su desarrollo completo.

Estimación: 20 horas.

Análisis

En esta actividad se espera estudiar las posibles soluciones al problemaplanteado y elegir la que mejor lo resuelva. Las tareas que componenestas dos fases son las siguientes.

Page 18: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

16 CAPÍTULO 1. DOCUMENTO DE OBJETIVOS DEL PROYECTO

• Captura de requisitos.

Se identi�carán los requisitos que debe cumplir la aplicación que seva a desarrollar. Se pretende identi�car tanto las funcionalidadesque ha de cumplir, como las que no; haciendo constar algunasfuncionalidades que sería posible añadir para completar dichaaplicación.

Estimación: 20 horas.

• Identi�car casos de uso.Se identi�carán los casos de uso para lograr una explicacióndetallada de la funcionalidad de la aplicación. Así se pretendeobtener una representación esquemática y sencilla de esafuncionalidad.

Estimación: 10 horas.

• Especi�cación casos de uso.

Se elaborarán los diagramas de casos de uso obtenidos en la tareaanterior. Estos diagramas ayudarán a explicar la funcionalidad yel comportamiento de la aplicación. Cada uno de esos diagramascontará con su especi�cación correspondiente.

Estimación: 12 horas.

• Resumen matemático.

Esta tarea comprende la realización de un resumen de los temasmatemáticos tratados. Este resumen se incluirá en la memoria delproyecto como un anexo con el �n de completar información ycontextualizar el problema tratado.

Estimación: 10 horas.

Diseño

Durante esta actividad se espera plani�car cómo han de ser los métodosa implementar para que cumplan los requisitos establecidos.

• Diseño de clases.

Esta tarea engloba las acciones necesarias para establecer unade�nición completa de las clases que formarán la aplicación:entradas/salidas de las mismas, tipos de datos a utilizar,accesibilidad (determinar qué métodos serán públicos y cuálesserán privados).

Estimación: 15 horas.

Page 19: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

1.6. PLANIFICACIÓN DEL PROYECTO 17

• Diseño de la comunicación.

En esta tarea se tratará de de�nir la organización lógica de laaplicación. Hay que diseñar el modo en que la aplicación secomunicará con las herramientas matemáticas. Todo ello dejandola posibilidad de ampliar la aplicación en un momento posterioral presente proyecto si fuese preciso.Estimación: 15 horas.

• Diseño de las interfaces.

Se diseñarán las interfaces grá�cas de la aplicación. Si es necesariose desarrollará algún prototipo de esas interfaces.Estimación: 15 horas.

Implementación

Actividad que constituye la construcción de la aplicación informática.

• Implementación general.

Tarea consistente en la implementación de la aplicación.Estimación: 40 horas.

• Implementación comunicación.

Durante esta tarea se implementarán los métodos mediante loscuales la aplicación se comunica con las herramientas matemáticas(generación de �cheros de salida, lectura de �cheros de entrada,llamadas a esas aplicaciones).Estimación: 20 horas.

• Implementación interfaces.

Construcción de las interfaces de la aplicación.Estimación: 40 horas.

• Realización pruebas.

Esta tarea comprende la realización de las pruebas necesariaspara comprobar el correcto funcionamiento de la aplicación. Serealizarán tanto pruebas individuales como pruebas generales.Estimación: 5 horas.

Documentación

Esta actividad constituye la elaboración de la memoria del proyectoy el material necesario para la defensa del mismo ante el tribunal.También se incluye la propia presentación ante el tribunal así como lapreparación necesaria para la misma.

Page 20: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

18 CAPÍTULO 1. DOCUMENTO DE OBJETIVOS DEL PROYECTO

• Memoria.

Redacción de los documentos que constituyen la memoria delpresente proyecto.

Estimación: 50 horas.

• Defensa del PFC.

Elaboración del material necesario para la defensa del proyectoante el tribunal. Así como la propia defensa y el ensayo de lamisma.

Estimación: 10 horas.

Gestión del proyecto

Actividad constituida por las reuniones del proyectante con loscodirectores, el oportuno seguimiento del proyecto y el estudio de lostiempos �nales empleados en cada tarea y comparación de los mismoscon las estimaciones.

• Reuniones.Son las reuniones que tienen lugar a lo largo de todo elproyecto entre el proyectante y sus codirectores. En ellas sediscutirán aspectos como: versiones obtenidas de los entregables,posibles mejoras en estos entregables, aprobación de los mismos,presentarán de los avances realizados.

Estimación: 10 horas.

• Seguimiento.

Se realizará un seguimiento periódico del desarrollo del proyecto.De esta manera se pretende localizar posibles desviacionesrespecto a lo plani�cado y llevar a cabo las medidas oportunaspara corregirlas.

Estimación: 15 horas.

• Estudio desviaciones.

Una vez �nalizadas todas las fases del proyecto, se compararán lasestimaciones temporales realizadas al principio del mismo con lostiempos reales empleados. Los resultados de estas comparacionesservirán para observar más fácilmente las desviaciones respectoa lo estimado y que el proyectante adquiera experiencia en estalabor.

Estimación: 5 horas.

Page 21: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

1.6. PLANIFICACIÓN DEL PROYECTO 19

1.6.4. Estimaciones globales

Ahora se resume la información en cuanto a estimaciones temporales decada actividad del proyecto. Estas estimaciones se basan en las realizadas enla sección anterior sobre cada tarea.

Plani�cación inicial 68 horasAnálisis 52 horasDiseño 45 horasImplementación 105 horasDocumentación 60 horasGestión del proyecto 30 horas

Total 360 horas

En la Figura 1.2 se muestra un grá�co en el que se aprecia mejor ladistribución del tiempo total invertido en el desarrollo del presente proyecto.

Figura 1.2: Distribución temporal del trabajo

1.6.5. Distribución del trabajo

El trabajo que el proyectante dedicará a este proyecto se distribuirásemanalmente según el siguiente horario.

Page 22: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

20 CAPÍTULO 1. DOCUMENTO DE OBJETIVOS DEL PROYECTO

Horas Lunes Martes Miércoles Jueves Viernes Sábado Domingo10:00 - 11:00 x x11:00 - 12:00 x x12:00 - 13:00 x x13:00 - 14:00 x x

17:00 - 18:00 x x x x18:00 - 19:00 x x x x19:00 - 20:00 x x x x

Este horario puede sufrir modi�caciones en días festivos. Por ejemplo,durante las vacaciones de Semana Santa (semana del 2 al 8 de Abril) setrabajará en el proyecto por la mañana en lugar de por la tarde.

En la Figura 1.3 (página 23) podemos ver un diagrama de Gantt querepresenta la distribución temporal del trabajo que conlleva la realización delpresente proyecto.

1.7. Riesgos

En esta sección se detallarán los posibles problemas a los que estáexpuesto el presente proyecto. Estos problemas o riesgos alterarían el ritmonormal del proyecto pudiendo retrasar la fecha de �nalización estimada. Acontinuación se indica, para cada riesgo, la causa del mismo, la probabilidadde que suceda, el periodo en el que es más susceptible de ocurrir y el plan decontingencia para evitar el mencionado retraso de �nalización.

Estimaciones mal calculadas. La falta de experiencia del proyectanteen la realización de proyectos puede llevarle a realizar malas estimaciones encuanto al esfuerzo que le supondrá realizar una tarea, lo que conlleva un malcálculo del tiempo estimado para su �nalización.

Periodo crítico: durante todo el proyecto.

Plan de contingencia: terminar una tarea antes del tiempo previstono supone un problema. Si el tiempo invertido en una tarea supera alestimado, se asignarán horas extra de trabajo para intentar volver alplazo previsto.

Probabilidad: elevada.

Page 23: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

1.7. RIESGOS 21

Desconocimiento de las tecnologías. Es posible que surjan problemasen cuanto a la utilización de algunas de las tecnologías (a pesar de dedicarun tiempo de aprendizaje ya estimado).

Periodo crítico: especialmente durante la implementación. Perotambién durante la documentación.

Plan de contingencia: dedicar más tiempo en la familiarización conlos entornos necesarios para el desarrollo del proyecto. Se traduce entrabajar durante el tiempo inicialmente cali�cado como tiempo de ocio.

Probabilidad: media-alta.

Pérdida información. Los documentos que conforman el proyecto estánexpuestos a ser borrados accidentalmente o a su pérdida por factores externosal proyectante (fallos en el hardware, errores de software, etc.)

Periodo crítico: durante todo el proyecto.

Plan de contingencia: se realizarán copias de seguridad periódicamente.También se almacenarán varias copias de todos los documentos, endistintos ordenadores y utilizando medios online (Dropbox, correoelectrónico).

Probabilidad: media.

Baja proyectante. Riesgo derivado de la imposibilidad por parte del pro-yectante de trabajar en el proyecto. Esto puede deberse a enfermedades ocompromisos imprevistos e ineludibles.

Periodo crítico: durante todo el proyecto.

Plan de contingencia: este problema supondría el retraso de la fecha de�nalización. Se podría reajustar el calendario de trabajo para minimizarel retraso dedicado más horas de las previstas.

Probabilidad: media-baja.

Baja director de proyecto. Riesgo que representaría la ausencia dealguno de los codirectores de proyecto por enfermedad u otros motivos. Esteriesgo afectaría al proyecto siempre que el proyectante necesitase al codirectordurante dicha ausencia para solventar dudas o resolver cualquier problema.

Periodo crítico: durante todo el proyecto.

Page 24: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

22 CAPÍTULO 1. DOCUMENTO DE OBJETIVOS DEL PROYECTO

Plan de contingencia: posponer el trabajo actual y dedicarse a otraactividad del proyecto hasta la reincorporación del director. Si esto nofuese posible, supondría un retraso en la fecha de �nalización.

Probabilidad: media-baja.

Page 25: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

1.7. RIESGOS 23

Figura 1.3: Diagrama de Gantt

Page 26: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos
Page 27: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

Capítulo 2

Análisis

2.1. De�nición del sistema

La idea del presente proyecto surge a partir de una necesidad. Unanecesidad por parte del proyectante de comparar resultados procedentes dedistintos entornos de cálculo matemático.

Aunque la implementación �nal sólo se realizará para dos sistemas, unode cálculo simbólico y otro de cálculo numérico, el análisis y el diseñodel proyecto se desarrollarán pensando en una aplicación que permitainteroperar entre varios sistemas de cálculo. Lo mismo sucede con el campode aplicación de los cálculos. Se implementará un programa pensado paratrabajar sobre problemas dentro del álgebra lineal (siempre dentro delanálisis numérico). No obstante, sería posible ampliar el presente proyecto connuevas funcionalidades para abarcar otras áreas como por ejemplo álgebracomputacional, cálculo integral, cálculo diferencial, optimización, etc.

La aplicación ofrecerá la posibilidad de realizar diferentes estudios.Estos estudios consistirán en resolver un tipo de problema planteado (seconcretarán en la Sección 2.2) mediante distintos sistemas de cálculomatemático y comparar posteriormente los resultados obtenidos. El usuariopodrá elegir entre los tipos de problema a resolver que ofrezca la aplicación.Así como la forma en que desea presentar la comparación de resultados.

Se ofrecerá al usuario la posibilidad de introducir sus propios métodosy datos para personalizar los problemas a resolver. También existirá unalista de métodos y datos clásicos ya implementados para ser utilizados en losestudios en los que se precisen. Además, será posible editar los métodos ydatos ya almacenados y guardar las modi�caciones realizadas. Por último, elusuario podrá acceder y visualizar cualquier información almacenada en laaplicación de manera sencilla y rápida.

25

Page 28: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

26 CAPÍTULO 2. ANÁLISIS

2.2. Captura de requisitos

En este apartado se recogen los requisitos que la aplicación deberácumplir. Es una primera aproximación a los mismos y sólo se pretende obteneruna lista de ellos con una breve descripción de cada uno. Estarán incluidostanto los requisitos funcionales como los no funcionales. Además, constaránalgunas acciones que la aplicación no realizará y que conviene resaltar. Conello se pretende conseguir una de�nición completa de la funcionalidad de laaplicación.

2.2.1. Requisitos funcionales

A continuación se listarán los requisitos existentes en cuanto a lafuncionalidad de la aplicación. Éstos de�nirán los objetivos que debe cumplirla misma y se verán re�ejados en el diagrama de casos de uso.

Realizar estudio

Se podrán realizar diferentes estudios. La aplicación a implementarofrecerá la posibilidad de resolver los siguientes: valores propios, valoressingulares, resolución de sistemas, descomposición LDU e inversión dematrices. Como resultado de esos estudios se obtendrá una comparaciónde los datos calculados por los distintos sistemas. El usuario podrá elegirla forma en que desea que se comparen.

Introducir información

La aplicación constará de un editor mediante el cual el usuariopodrá introducir fácilmente métodos para resolver los estudios antesmencionados y los datos necesarios. Esto se hará utilizando unpseudocódigo cómodo y sencillo que uni�que los lenguajes de entradade la aplicación.

Nota: en lo sucesivo, cada uno de los algoritmos que resuelve unproblema o de�ne una matriz se denominará método y puesto que losdatos que manejará la aplicación serán matrices (o vectores) podremosreferirnos a ellos como datos o matrices. Se utilizará esta notacióndurante el resto de la memoria, evitando repeticiones sobre a quéconceptos se re�ere cada una de ellas.

Editar información

Mediante el editor antes mencionado, el usuario podrá modi�cary guardar los cambios realizados en diferentes métodos y datosalmacenados en la aplicación.

Page 29: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

2.2. CAPTURA DE REQUISITOS 27

Visualizar información

El usuario podrá visualizar de manera fácil y rápida cualquierinformación, bien sea un método o un dato, almacenados en laaplicación.

Traducir código

Será posible traducir un método o datos introducidos por el usuario yescritos en el pseudocódigo utilizado por la aplicación a los lenguajesutilizados por los diferentes sistemas de cálculo y visualizar el resultado.

2.2.2. Requisitos no funcionales

Los requisitos no funcionales que surgen en este proyecto estánrelacionados con la �uidez de interacción entre el usuario y la aplicación.No existen restricciones en el software ni el hardware a utilizar. Tampocohay requisitos en cuanto al tiempo de respuesta ni de cualquier otro tipo.

Facilidad de uso

El usuario no debe preocuparse por las características particulares delos lenguajes utilizados por cada sistema en el que se vayan a realizarlos cálculos. Por ello la información entre la aplicación y el usuariose transmitirá en pseudocódigo o de manera grá�ca (en el caso de lasmatrices).

Interfaz simple

Las interfaces serán simples y claras. Se pretende que el uso de laaplicación pueda ser intuitivo y apenas sea necesario un manual deusuario. No obstante, y si fuese necesario, se realizaría uno.

2.2.3. Funcionalidad fuera del alcance de la aplicación

Aunque sí que sea posible hacerlo (de manera poco cómoda parael usuario), la aplicación no estará pensada para realizar operacioneselementales o ser utilizada como entorno básico de trabajo matemático. Sepretende que sea una herramienta que permita la interconexión con variossistemas de cálculo (que sí están pensados como entornos de trabajo). Porlo tanto, la funcionalidad de la aplicación se centrará en trabajar con variosde esos sistemas y uni�car las entradas y salidas de datos y no en que elusuario pueda utilizar uno sólo de esos sistemas a través de la aplicación(por ejemplo, para de�nir y visualizar matrices, realizar sumas o restas deellas, etc.).

Page 30: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

28 CAPÍTULO 2. ANÁLISIS

2.3. Identi�cación de los casos de uso

A partir de los requisitos obtenidos en la sección anterior, se identi�caránlos casos de uso y se creará el diagrama de casos de uso. Únicamente existe unrol, al que llamaremos Usuario, que participa en la aplicación. A continuaciónelaboraremos la lista de casos de uso con una pequeña descripción de cadauno de ellos.

El primer grupo de casos de uso tiene que ver con los estudios de caráctermatemático que realizará la aplicación. En el Anexo �Resumen matemático�puede encontrarse un resumen descriptivo sobre los conceptos tratados.

Realizar estudio: bajo este nombre englobamos los cinco siguientes casosde uso que, aun siendo diferentes, engloban algunas característicascomunes. Realizar un estudio consistirá en introducir los datosnecesarios, elegir los métodos a utilizar y escoger el sistema decomparación de los resultados obtenidos. Para realizar ese estudio decomparación se dispondrá, entre otras herramientas, de tablas de datosy grá�cas.

Valores propios: se calcularán los valores propios de una matriz.

Valores singulares: se calcularán los valores singulares de una matriz.

Resolución de sistemas: se resolverá un sistema de ecuaciones lineales.

Descomposición LDU: se calculará la descomposición LDU de unamatriz.

Inversa de una matriz: se calculará la matriz inversa de una matrizdada.

Traducir código: se traducirá información introducida en pseudocódigoal lenguaje del sistema de cálculo elegido (o de varios sistemas elegidos).

Los dos siguientes casos de uso se engloban bajo el nombre �Crearelemento�. Ambos re�ejan la posibilidad, por parte del usuario, de introducirinformación.

Crear método: se ofrece la posibilidad de introducir un método queresuelva alguno de los problemas mencionados anteriormente o quede�na una matriz de manera implícita.

Crear matriz: introducción de datos iniciales para los estudios arealizar. Se podrá introducir una matriz de manera explícita o mediantela de�nición implícita de sus entradas (a través de un método yaalmacenado).

Page 31: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

2.3. IDENTIFICACIÓN DE LOS CASOS DE USO 29

La posibilidad de editar la información introducida en los dos anteriorescasos de uso, se re�eja en los dos siguientes. Estos se unen bajo ladenominación �Editar elemento�.

Editar método: posibilidad de modi�car y guardar los cambiosrealizados sobre uno de los métodos almacenados.

Editar matriz: se podrán modi�car y guardar las entradas o ladimensión de las matrices almacenadas.

Con el nombre �Ver elemento� de�nimos la pareja de casos de uso queofrecen la posibilidad de visualizar información guardada.

Ver método: visualización de un método o algoritmo almacenado en laaplicación.

Ver matriz: visualización de una matriz guardada. Se verá la matrizcon sus entradas de manera explícita.

En la Figura 2.1 puede verse el diagrama de casos de uso en el que sere�ejan todos estos ellos.

Page 32: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

30 CAPÍTULO 2. ANÁLISIS

Figura 2.1: Diagrama de casos de uso

2.4. Especi�cación de los casos de uso

En esta sección se especi�carán los casos de uso de�nidos en la secciónanterior y recogidos en la Figura 2.1. De esta manera se tendrá una ideamás detallada sobre el funcionamiento de la aplicación. Para explicar cadacaso de uso se utilizarán diagramas de actividad cuando sea necesario y unadescripción detallada de forma textual en el resto de casos.

Traducir código.

Precondición: el código con la información a traducir habrá sidoalmacenada en la aplicación.

Postcondición: el usuario podrá visualizar la traducción delcódigo y copiarlo si lo desea.

Page 33: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

2.4. ESPECIFICACIÓN DE LOS CASOS DE USO 31

Descripción: se traduce código almacenado al lenguaje utilizadopor alguno de los sistemas de cálculo. Esta función la realiza laaplicación cada vez que realiza un estudio, pero se quiere ofrecertambién la funcionalidad de simplemente traducir información porsi el usuario lo necesitase.

Aunque en los siguientes cinco casos de uso se le ofrece al usuario laposibilidad de elegir los sistemas de cálculo donde desea realizar el estudiocomparativo, no será así en la implementación de la aplicación. Esto se debea que la aplicación se desarrollará únicamente para dos sistemas, por lo queno es necesaria tal elección.

Otro comentario común a los cinco siguientes casos de uso tiene que vercon la acción �Comprobar que los datos son compatibles con el método�incluida en sus especi�caciones. Esta acción consiste en la comprobación desi los datos introducidos son compatibles con las entradas de los métodoselegidos (en cuanto a número, tipo de datos, etc.).

Page 34: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

32 CAPÍTULO 2. ANÁLISIS

Valores propios. La especi�cación de este caso de uso la realizamosmediante el diagrama de actividad de la Figura 2.2.

Figura 2.2: Diagrama de actividad. Valores propios

Page 35: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

2.4. ESPECIFICACIÓN DE LOS CASOS DE USO 33

Valores singulares.

Este caso de uso es similar al de Valores propios. Puede especi�carse conun diagrama de actividad como el utilizado en ese caso (ver Figura 2.2)teniendo en cuenta que en esta ocasión el estudio elegido será Valoressingulares. Aunque en este caso el resultado sean los valores singularesde una matriz, se expresarán mediante un vector, igual que en el casoanterior. Por lo tanto los resultados podrán compararse mediante losmismos métodos que los vistos para Valores propios.

Matriz inversa.

Este caso de uso puede especi�carse con un diagrama de actividad comoel utilizado en el caso Valores propios(ver Figura 2.2) teniendo en cuentaque en esta ocasión el estudio elegido será Matriz inversa. En este casoel resultado será una matriz (un resultado por cada sistema de cálculoempleado) y la comparación de los resultados se podrá realizar medianteel error relativo cometido, el error absoluto y/o la visualización directade las matrices inversas (nuevamente, una por cada sistema de cálculoempleado).

Page 36: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

34 CAPÍTULO 2. ANÁLISIS

Resolución de sistemas.

El diagrama de actividad de la Figura 2.3 conforma la especi�cacióndel caso de uso Resolución de sistemas.

Figura 2.3: Diagrama de actividad. Resolución de sistemas

Page 37: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

2.4. ESPECIFICACIÓN DE LOS CASOS DE USO 35

Descomposición LDU.

La especi�cación correspondiente al caso de uso Descomposición LDUla realizamos mediante el diagrama de actividad de la Figura 2.4.

Figura 2.4: Diagrama de actividad. Descomposicion LDU

Page 38: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

36 CAPÍTULO 2. ANÁLISIS

Crear método.

La especi�cación del caso de uso Crear método la realizaremos medianteel diagrama de actividad de la Figura 2.5.

Figura 2.5: Diagrama de actividad. Crear método

Page 39: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

2.4. ESPECIFICACIÓN DE LOS CASOS DE USO 37

Crear matriz.

El diagrama de actividad de la Figura 2.6 será la especi�cación del casode uso Crear matriz.

Figura 2.6: Diagrama de actividad. Crear matriz

Page 40: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

38 CAPÍTULO 2. ANÁLISIS

Ver método.

Precondición: el método habrá sido almacenado en la aplicación.

Postcondición: el usuario podrá visualizar el método elegido.

Descripción: será posible visualizar, y se presentará de maneraclara y cómoda, cualquier método almacenado en la aplicación,bien sea uno introducido por el usuario o uno de los que laaplicación ya incluye desde el comienzo.

Ver matriz.

Precondición: la matriz (o vector) habrá sido almacenada en laaplicación.

Postcondición: el usuario podrá visualizar la matriz elegida.

Descripción: será posible visualizar, y se presentará de maneraclara y cómoda, cualquier dato introducido en la aplicación. Estosdatos podrán ser una matriz o un vector.

Editar método.

Precondición: el método ha sido almacenado en la aplicación.

Postcondición: el método modi�cado es almacenado en laaplicación reemplazando al anterior y está disponible para serutilizado.

Descripción: se accederá al método elegido y se realizarán loscambios que se deseen en él. Una vez realizadas esas modi�cacionesse almacenará el nuevo método modi�cado reemplazando alanterior.

Editar matriz.

Precondición: la matriz ha sido almacenada en la aplicación.

Postcondición: la matriz modi�cada es almacenada en laaplicación reemplazando a la anterior y está disponible para serutilizada.

Descripción: se accederá a la matriz elegida y se realizaránlos cambios que se deseen en ella. Una vez realizadas esasmodi�caciones se almacenará la nueva matriz modi�cadareemplazando a la anterior.

Page 41: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

2.4. ESPECIFICACIÓN DE LOS CASOS DE USO 39

Nota: no se podrá modi�car una matriz creada de manera explícitapara que pase a estar formada mediante un método y viceversa.Para conseguir esto, será necesario crear una nueva matriz.

Page 42: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos
Page 43: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

Capítulo 3

Diseño

3.1. Diseño de clases

3.1.1. Diagrama de clases

En la Figura 3.1 se puede ver el diagrama que resume la información sobrelas clases necesarias para implementar la aplicación del presente proyecto.

Observemos que hay una clase Matriz que servirá para trabajar con losdatos de los problemas (matrices y vectores, que son casos particulares dematriz). También hay una clase Metodo que representará los métodos conlos que trabajará la aplicación. Esta clase engloba tanto a los algoritmos queresuelven un problema como a las de�niciones implícitas de objetos de la claseMatriz. La clase Problema es una interfaz, por lo que no tendrá implementadaninguna de sus operaciones. Un Problema está formado por uno o dos objetosMatriz y un objeto Metodo. Esta interfaz contiene los métodos comunes atodas las clases que representan los problemas matemáticos a tratar. Cadauno de esos problemas cuenta con una clase que lo representará, así tenemoslas clases: SistemaLineal, ValoresPropios, ValoresSingulares, MatrizInversa yDescomposicionLDU. Estas clases, además de implementar los métodos de lainterfaz individualmente, contienen operaciones propias que se detallan másadelante.

41

Page 44: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

42 CAPÍTULO 3. DISEÑO

Figura 3.1: Diagrama de clases.

Page 45: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

3.1. DISEÑO DE CLASES 43

3.1.2. Especi�cación del diagrama de clases

A continuación se especi�ca el diagrama de clases, detallando informaciónsobre los atributos y las operaciones incluidas en cada una de las clases deldiagrama.

Clase Matriz.

Esta clase representa una matriz, almacenando la información de susentradas y la forma en que se ha de�nido.

Figura 3.2: Clase Matriz.

Los atributos de esta clase son:

• matriz: contiene las entradas de la matriz.

• explicita: booleano que indica si la matriz ha sido creada de maneraexplícita (true) o mediante un algoritmo (false).

• nombre: String con el nombre de la matriz (la aplicación generaráun �chero de texto con la información de la matriz que tendrá estemismo nombre, ver Sección 3.2.1).

Las operaciones de esta clase son:

• Matriz(double[ ][ ] entradas, String nombre): es un constructor dela clase que tiene como parámetros las entradas de la matriz demanera explícita y el nombre de la misma.

Page 46: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

44 CAPÍTULO 3. DISEÑO

• Matriz(Metodo algoritmo, String nombre): es otro constructor dela case que tiene como parámetros un objeto Metodo en el que sede�ne la matriz de manera implícita y el nombre de la misma.

• traducir(int sistemaCalculo): devuelve un String que contiene lade�nición, escrita en el lenguaje utilizado por el sistema de cálculocuyo identi�cador es sistemaCalculo, de una matriz con las mismasentradas que la del objeto .

• getMatriz(): devuelve las entradas de la matriz.

• getExplicita(): devuelve true si la matriz ha sido creada de maneraexplícita y false en otro caso.

• setMatriz(double[ ][ ] entradas, String nombre): permite editar elnombre y/o las entradas de la matriz de manera explícita.1

• setMatriz(Metodo algoritmo, String nombre): permite editar lamatriz igual que en la operación anterior, pero en este caso lasentradas se de�nen de manera implícita mediante un algoritmo.2

• toString(): función que devuelve las entradas de la matriz enformato String.

• getn�las(): devuelve el número de �las de la matriz.

• getncolumnas(): devuelve el número de columnas de la matriz.

• getNombre(): devuelve el nombre de la matriz.

Clase Metodo.

Esta clase representa un método, bien sea un algoritmo para resolveruno de los problemas matemáticos o la de�nición implícita de unamatriz.

Los atributos de esta clase son:

• nombre: nombre del método (la aplicación generará un �cherode texto con la información del método que tendrá este mismonombre, ver Sección 3.2.1).

• tipo: código numérico que indica el tipo de problema que el métodoresuelve o si éste de�ne una matriz.

• algoritmo: String con la de�nición del método introducida por elusuario (se almacena para facilitar su posible edición por parte delusuario).

1Una matriz creada de manera explícita sólo se podrá editar mediante este método.2Una matriz creada de manera implícita sólo se podrá editar mediante este método.

Page 47: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

3.1. DISEÑO DE CLASES 45

Figura 3.3: Clase Metodo.

• entradas: array de String con las entradas del método.

• salidas: array de String con las salidas del método.

Las operaciones de esta clase son:

• Metodo(String nombre, String algoritmo, int tipo): constructorde la clase que tiene como parámetros el nombre del método, elalgoritmo introducido por el usuario (en pseudocódigo) y el tipode método. Como hemos dicho, la aplicación generará un �cherode texto asociado a cada Metodo (ver Sección 3.2.1). Pero esteconstructor sólo inicializa el objeto.

• traducir(sistemaCalculo : int): devuelve un String que contiene lade�nición del algoritmo en el lenguaje utilizado por el sistema decálculo cuyo identi�cador es sistemaCalculo.

• getNombre(): devuelve el nombre del método.

• getTipo(): devuelve el tipo de método (qué tipo de problemaresuelve o si de�ne una matriz).

• getEntradas(): devuelve las entradas del método.

• getSalidas(): devuelve las salidas del método.

• toString(): función que devuelve el texto del algoritmo(pseudocódigo introducido por el usuario).

Clase Problema (Interfaz).

Se trata de una interfaz que agrupa las operaciones comunes a lasclases que representan los problemas matemáticos. Se indicará la

Page 48: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

46 CAPÍTULO 3. DISEÑO

funcionalidad de las operaciones únicamente en esta especi�cación,omitiéndola en el resto para evitar repeticiones.

Figura 3.4: Clase Problema.

Esta clase no tiene atributos por tratarse de una interfaz.

Las operaciones de esta clase son las comunes a todas las subclases.Cada una de esas clases implementará de manera diferente estasoperaciones además de añadir alguna propia.

• solErrorRA(): devuelve al usuario los errores relativo y absolutode las dos soluciones del problema (cada una obtenida por unsistema de cálculo).

• solMostrar(): devuelve al usuario las dos soluciones del problema.

• resolver(): resuelve el problema mediante los dos sistemas decálculo escogidos e inicializa el atributo soluciones del problemaconcreto. Este método utiliza la información sobre matrices ymétodos almacenada en código MathML (ver Sección 3.2.2).

Clase SistemaLineal.

Clase que representa el problema de resolver un sistema lineal.

Los atributos de esta clase son:

• matriz: contiene la matriz (objeto Matriz) asociada al sistemalineal del problema.

• vector: contiene el vector (objeto Matriz) asociado al sistema linealdel problema.

• metodo: objeto de la clase Metodo asociado al sistema lineal delproblema.

Page 49: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

3.1. DISEÑO DE CLASES 47

Figura 3.5: Clase SistemaLineal.

• soluciones: contiene las soluciones del problema obtenidasmediante el metodo utilizando cada uno de los sistemas de cálculoescogidos. Las soluciones serán calcularas por la aplicación despuésde que el método haya sido creado. También se generará un �cherode texto con las soluciones (ver Sección 3.2.1).

• sistemasCalculo: array con los códigos numéricos que indican lossistemas de cálculo escogidos para resolver el problema.

Las operaciones de esta clase son:

• SistemaLineal(Matriz matriz, Matriz vector, Metodo metodo, int[]sistemas): constructor de la clase que de�ne el problema de unsistema lineal, formado por una matriz de coe�cientes almacenadaen matriz, un vector de términos independientes almacenado envector y un método que lo resuelve. El problema se resolveráutilizando los sistemas de cálculo indicados en el array sistemas.

• solTabla(): muestra al usuario una tabla comparando las dossoluciones del problema.

• solNumCondicion(): devuelve al usuario el número de condiciónde la matriz del problema.

• solGra�ca(): muestra al usuario una grá�ca comparativa entre lassoluciones del problema.

• solErrorRA().

Page 50: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

48 CAPÍTULO 3. DISEÑO

• solMostrar().

• resolver().

Con el �n de evitar repeticiones, la especi�cación de las operacionesque se repitan en las siguientes clases no se incluirá. Se tomarácomo referencia la especi�cación de la operación análoga de estaclase, que tendrá el mismo nombre y los mismos atributos (aunque laimplementación de la misma pueda ser ligeramente distinta). Lo mismosucederá con los atributos repetidos.

Clase ValoresPropios.

Clase que representa el problema de calcular los valores propios de unamatriz.

Figura 3.6: Clase ValoresPropios.

Los atributos de esta clase son:

• matriz.

• metodo.

• soluciones.

• sistemasCalculo.

Las operaciones de esta clase son:

• ValoresPropios(Matriz matriz, Metodo metodo, int[] sistemas):constructor de la clase que de�ne el problema de calcularlos valores propios de matriz mediante el algoritmo método.

Page 51: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

3.1. DISEÑO DE CLASES 49

El problema se resolverá utilizando los sistemas de cálculoalmacenados en sistemas.

• solTabla().

• solGra�ca().

• solErrorRA().

• solMostrar().

• resolver().

Clase ValoresSingulares.

Clase que representa el problema de calcular los valores singulares deuna matriz.

Figura 3.7: Clase ValoresSingulares.

Los atributos de esta clase son:

• matriz.

• metodo.

• soluciones.

• sistemasCalculo.

Las operaciones de esta clase son:

• ValoresSingulares(Matriz matriz, Metodo metodo, int[] sistemas):constructor de la clase que de�ne el problema de calcularlos valores singulares de matriz mediante el algoritmo método.El problema se resolverá utilizando los sistemas de cálculoalmacenados en sistemas.

Page 52: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

50 CAPÍTULO 3. DISEÑO

• solTabla().

• solGra�ca().

• solErrorRA().

• solMostrar().

• resolver().

Clase MatrizInversa.

Clase que representa el problema de calcular la matriz inversa de unamatriz dada.

Figura 3.8: Clase MatrizInversa.

Los atributos de esta clase son:

• matriz.

• metodo.

• soluciones.

• sistemasCalculo.

Las operaciones de esta clase son:

• MatrizInversa(Matriz matriz, Metodo metodo, int[] sistemas):constructor de la clase que de�ne el problema de calcular la inversade matriz mediante el algoritmo método. El problema se resolveráutilizando los sistemas de cálculo almacenados en sistemas.

• solNumCondicion().

Page 53: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

3.1. DISEÑO DE CLASES 51

• solErrorRA().

• solMostrar().

• resolver().

Clase DescomposicionLDU.

Clase que representa el problema de calcular la descomposición LDUde una matriz dada.

Figura 3.9: Clase DescomposicionLDU.

Los atributos de esta clase son:

• matriz.

• metodo.

• soluciones: array de arrays de objetos Matriz que contiene lasolución al problema obtenida mediante el metodo utilizando lossistemas de cálculo indicados en sistemasCalculo. Notemos que lasolución de este problema serán las tres matrices correspondientesa la descomposición LDU de la matriz dada (ver Anexo: Resumenmatemático).

• sistemasCalculo.

Las operaciones de esta clase son:

• DescomposicionLDU(Matriz matriz, Metodo metodo,int[] sistemas): constructor de la clase que de�ne el problema decalcular la descomposición LDU de matriz mediante el algoritmo

Page 54: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

52 CAPÍTULO 3. DISEÑO

método. El problema se resolverá utilizando los sistemas de cálculoalmacenados en sistemas.

• solNumCondicion().

• solErrorRA().

• solMostrar().

• resolver().

3.2. Diseño de la comunicación

En esta sección se va a explicar el sistema de �cheros que se emplearápara trabajar con los datos necesarios. Así como el procedimiento en que laaplicación se comunicará con los distintos sistemas de cálculo.

3.2.1. Sistema de �cheros

En este apartado explicaremos el funcionamiento de la aplicación encuanto al manejo de datos. Debido a la naturaleza de la información quese utilizará no se ha considerado necesario el uso de una base de datos. Sinembargo, sí que es importante almacenar los datos (matrices, métodos yresultados).

Entradas

La información relativa a las matrices y los métodos que el usuariopuede generar se almacenará en �cheros de texto, quedando de esta maneraguardada y pudiendo ser utilizada desde la aplicación.

El procedimiento será el siguiente:

El usuario introduce los datos necesarios para crear una matriz o unmétodo.

La aplicación genera un �chero de texto con las entradas y el nombreen caso de las matrices y con el algoritmo, el tipo y el nombre en casode los métodos.

Además, la aplicación trabajará con las clases correspondientes, ytendrá guardada la información de cada objeto para su uso.

Cuando se inicia la aplicación, se lleva a cabo de manera automáticauna inicialización de los datos (utilizando los �cheros de texto). De estaforma, la información introducida en sesiones anteriores no se pierde.

Page 55: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

3.2. DISEÑO DE LA COMUNICACIÓN 53

La información de los �cheros de texto se almacenará utilizando lenguajeMathML. Se trata de un lenguaje de marcado basado en XML. De esta formasólo es necesario generar un �chero por cada matriz o método, sin importar elnúmero de sistemas de cálculo que se vayan a emplear. Para utilizar un objeto(matriz o método) en un sistema de cálculo concreto, sólo habrá que traduciresa información al lenguaje correspondiente. Esa traducción de nuestro códigoMathML al lenguaje del sistema correspondiente se lleva a cabo mediante unafunción que habrá que programar, estas funciones suelen llamarse parser.

Nota: hay que tener en cuenta que muchas aplicaciones cuentan conherramientas que facilitan el trabajo con código XML e incluso hayprogramas capaces de importar directamente información almacenada en estelenguaje.

Salidas

Recordemos que la consulta de las matrices y métodos almacenados seráuna funcionalidad ofrecida por la aplicación. Sin embargo, las soluciones decada problema no podrán ser consultadas desde la aplicación una vez quese hayan visualizado (justo después de resolver el problema). No obstante,dichas soluciones también son almacenadas en �cheros de texto y la aplicaciónofrecerá la posibilidad de almacenar las comparaciones entre soluciones de unmismo problema (grá�cas, tablas, etc.).

3.2.2. Comunicación

En este apartado quedará re�ejada la comunicación entre la aplicación ylos distintos sistemas de cálculo matemático. En la Figura 3.10 puede verseun esquema que resume la forma en que esta relación tendrá lugar.

La aplicación genera �cheros de texto en lenguaje MathML (XML) con lasmatrices y métodos que tiene almacenados. Notemos que esta informaciónque la aplicación genera para resolver un problema no está duplicada. Noimporta el número de sistemas en los que se quiere resolver dicho problema,sólo existe un único �chero para cada matriz o método (esto facilita en granmedida la posibilidad de añadir en el futuro otros sistemas de cálculo con losque trabajar).

Después, cada sistema de cálculo traduce esa información a su propiolenguaje (mediante una función parser), ejecuta las instrucciones recibidas ygenera otro �chero de texto que contiene la solución al problema.

Las distintas soluciones son comparadas en el sistema de cálculo utilizadopara tal �n. Este sistema genera, en función de los métodos de comparación

Page 56: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

54 CAPÍTULO 3. DISEÑO

Figura 3.10: Relación entre la aplicación y los sistemas de cálculo.

elegidos por el usuario, los �cheros (texto o grá�cos) que contienen dichacomparación.

Finalmente, la aplicación presenta al usuario la comparación de resultadosesperada del problema planteado.

3.3. Diseño de interfaces

En esta sección se diseñará la interfaz grá�ca mediante la cual laaplicación se comunicará con el usuario. En primera instancia se esbozarála interfaz principal indicando los bloques en que esta se divide omitiendolos detalles. Posteriormente se presentarán prototipos de cada una de lasventanas que compondrán el conjunto de interfaces grá�cas.

3.3.1. Interfaz principal

En la Figura 3.11 podemos ver una primera aproximación a la interfazprincipal de la aplicación. La interfaz principal constará de una barra demenú en la parte superior y dos paneles en los que se listarán los datos y losmétodos almacenados en la parte izquierda. El resto del espacio disponibleestá destinado a la visualización de los datos y los métodos listados en lospaneles mencionados.

Page 57: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

3.3. DISEÑO DE INTERFACES 55

Figura 3.11: Esquema interfaz principal.

En el diseño más detallado de la Figura 3.12 observamos que los botonesdisponibles en la barra de menú son:

Estudio: se desplegará ofreciendo los posibles estudios a realizar.

Crear: ofrecerá crear una matriz o un método.

Editar: ofrecerá editar una matriz o un método.

Traducir: será posible traducir una matriz o un método almacenadosen la aplicación.

Además, al seleccionar un elemento de uno de los paneles situados a laizquierda de la interfaz, se visualizará en el panel central correspondiente.

3.3.2. Creación de elementos

A la hora de crear una matriz o un método para almacenarlos en laaplicación las interfaces serán como las de la Figura 3.13 y la Figura 3.14respectivamente. Para crear una matriz es necesario indicar el nombre quese le quiere poner, las dimensiones y la forma en que vamos a de�nir susentradas. Si se de�nen de forma implícita, será necesario indicar el métodoque de�nirá las entradas de la matriz y si se desea de�nir la matriz de maneraexplícita únicamente habrá que introducir manualmente sus entradas.

Page 58: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

56 CAPÍTULO 3. DISEÑO

Figura 3.12: Prototipo interfaz principal.

Para crear un método indicaremos su nombre y el tipo de método que es(de�ne una matriz, resuelve sistemas lineales, etc.). Además, será necesarioindicar las entradas y salidas del mismo, así como su de�nición. Para estoúltimo, el usuario contará con botones (�While�, �For�, �If� y �Funcionesespeciales�) que le ayudarán a programar el método que desea.

3.3.3. Edición de elementos

Las ventanas de edición de elementos son similares a las de creación. Sepodrá editar cualquier aspecto tanto de las matrices como de los métodosexcepto la forma de de�nición de una matriz. Es decir, existirá una ventanade edición para las matrices de�nidas de manera explícita (Figura 3.15) yotra para las de�nidas de manera implícita (Figura 3.16).

3.3.4. Traducción

Tanto en la ventana para traducir matrices, Figura 3.17, como en laventana para traducir métodos, Figura 3.18, habrá dos listas desplegables.Una para escoger el elemento (matriz o método) cuya de�nición se quieretraducir, y otra para elegir el lenguaje del sistema de cálculo al que se quieretraducir.

Page 59: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

3.3. DISEÑO DE INTERFACES 57

Figura 3.13: Prototipo crear matriz.

3.3.5. Problemas

Existirán cinco ventanas para de�nir cada uno de los problemas que,aunque serán ligeramente diferentes, tendrán los mismos elementos básicos.Todas ellas contarán con los siguientes campos a rellenar por el usuario

Elegir matriz

Elegir vector (sólo en los sistemas lineales)

Método

Sistema de cálculo 1

Sistema de cálculo 2

Además estas ventanas contarán con una lista de los métodos de comparaciónasociados a cada tipo de problema para que el usuario escoja los que desee.Los prototipos de estas ventanas se encuentran en las �guras 3.19 a 3.22. Laventana para de�nir el problema de valores singulares no se incluye porquees análoga a la ventana para valores propios.

Page 60: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

58 CAPÍTULO 3. DISEÑO

Figura 3.14: Prototipo crear método.

3.3.6. Comparaciones

En cuanto a los métodos de comparación de resultados, existirán cincoventanas diferentes correspondientes a los distintos métodos de comparación.

La ventana de comparación visual, Figura 3.23, constará únicamente dedos paneles en los que se presentarán ambas soluciones.

Para comparar soluciones mediante una tabla se utilizará una ventanacomo la de la Figura 3.24, que ofrecerá una tabla comparativa subrayandolas diferencias entre las dos soluciones.

Los números de condición se compararán mediante una ventana comola de la Figura 3.25, que es similar a la de la Figura 3.23.

Lo mismo sucede con la comparación mediante los errores relativo yabsoluto, cuya ventana puede verse en la Figura 3.26.

Por último, la Figura 3.27 muestra la ventana que consta de la grá�cacomparativa de las soluciones y de la leyenda explicativa de dicha grá�ca.

Page 61: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

3.3. DISEÑO DE INTERFACES 59

Figura 3.15: Prototipo editar matriz explícita.

3.3.7. Mensaje de error

Si en alguna de las ventanas se introduce un número de datos que nocorresponde con el escogido, un tipo de datos no compatible con el problemao se comete un error de compatibilidad de información, la aplicación se locomunicará al usuario mediante una ventana como la de la Figura 3.28.

Page 62: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

60 CAPÍTULO 3. DISEÑO

Figura 3.16: Prototipo editar matriz implícita.

Figura 3.17: Prototipo traducir matriz.

Page 63: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

3.3. DISEÑO DE INTERFACES 61

Figura 3.18: Prototipo traducir método.

Figura 3.19: Prototipo sistema lineal.

Page 64: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

62 CAPÍTULO 3. DISEÑO

Figura 3.20: Prototipo valores propios.

Figura 3.21: Prototipo matriz inversa.

Page 65: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

3.3. DISEÑO DE INTERFACES 63

Figura 3.22: Prototipo descomposición LDU.

Figura 3.23: Prototipo comparación visual.

Page 66: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

64 CAPÍTULO 3. DISEÑO

Figura 3.24: Prototipo comparación tabla.

Figura 3.25: Prototipo comparación número condición.

Page 67: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

3.3. DISEÑO DE INTERFACES 65

Figura 3.26: Prototipo comparación error relativo/absoluto.

Figura 3.27: Prototipo comparación grá�ca.

Page 68: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

66 CAPÍTULO 3. DISEÑO

Figura 3.28: Prototipo error.

Page 69: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

Capítulo 4

Implementación

4.1. Tecnologías utilizadas

Para la implementación del presente proyecto se han respetado lasdecisiones tomadas al inicio del mismo en cuanto a las tecnologías a emplear.No obstante, y debido a las di�cultades surgidas (ver apartado 4.4), se hadecidido implementar la aplicación utilizando un único sistema de cálculo.Así, se ha utilizado el lenguaje Java para programar la aplicación. Comoentorno simbólico de cálculo matemático se ha utilizado Mathematica,dejando el entorno numérico Octave para futuras ampliaciones (verapartado 4.5). Y en cuanto a la representación de la información necesaria(matrices, métodos y problemas matemáticos) se ha elegido el lenguajeMathML.

Respecto al lenguaje de programación Java, el proyectante tenía losconocimientos adecuados para realizar la implementación. La programaciónen el entorno Mathematica ha provocado algunos problemas. Pero ha sidoel trabajo de implementación relacionado con el lenguaje MathML el queha generado más problemas. En la Sección 4.2 se analiza el lenguajeMathML y en la Sección 4.4 se presentan los problemas surgidos durantela implementación.

4.2. MathML

Para almacenar la información referente a matrices y métodos utilizadospor la aplicación se escogió el lenguaje MathML. Se trata de un lenguaje demarcado basado en XML y pensado para representar objetos matemáticos.

Las ventajas que ofrece el uso de este lenguaje son la simpli�cación delsistema de �cheros a utilizar y el hecho de facilitar la ampliación de la

67

Page 70: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

68 CAPÍTULO 4. IMPLEMENTACIÓN

aplicación.El sistema de �cheros queda simpli�cado porque para cada elemento

(matriz o método) únicamente se crea un �chero de texto escrito en MathML.Éste único �chero es utilizado por cada uno de los sistemas para extraer lainformación necesaria.

El hecho de que toda la información esté almacenada en el mismolenguaje, facilita la posibilidad de trabajar con más sistemas de cálculo enel futuro. Únicamente habría que implementar las funciones que traducenesa información al lenguaje del sistema deseado. Éstas funciones se llamanparser.

Muchos sistemas de cálculo son capaces de trabajar con lenguaje XML,incluso con MathML. Sin embargo, y debido a la naturaleza de la informaciónque necesita utilizar la aplicación, ha sido necesaria la de�nición de nuevosobjetos (nuevas etiquetas) dentro de este lenguaje. De esta forma, se hacompletado el lenguaje MathML con las etiquetas necesarias.

La representación de los métodos presentes en la aplicación (métodosque resuelven los problemas matemáticos) ha sido la mayor fuente de nuevasetiquetas dentro del lenguaje MathML. A continuación se presentan algunosejemplos de representación de algunos datos (matrices y métodos) utilizandoeste lenguaje de marcado.

Ejemplo: la representación utilizada en MathML de la matriz

A =

(1 23 4

)sería:

<matrix>

<name> A </name>

<matrixrow> <mn>1</mn> <mn>2</mn> </matrixrow>

<matrixrow> <mn>3</mn> <mn>4</mn> </matrixrow>

</matrix>

Ejemplo: dado un sencillo ejemplo de método (escrito en pseudocódigo)que devuelve el máximo de las entradas de un vector:

+ Entradas: v,n

+ Método:

max=v(1)

for(i=2...n)

aux=v(i)

if(max<aux)

Page 71: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

4.2. MATHML 69

max = aux

end_if

end_for

+ Salidas: max

su representación en MathML sería:

<method>

<input>

<mi>v</mi>

<mi>n</mi>

</input>

<body>

<mi>max</mi> <mo>=</mo> <mi>v(1)</mi>

<for>

<condition>

<mi>i</mi>

<mo>=</mo>

<mn>2</mn>

<mo>,</mo>

<mi>i</mi>

<mo>&#x2264;</mo>

<mi>n</mi>

<mo>,</mo>

<mi>i</mi>

<mo>=</mo>

<mi>i</mi>

<mo>+</mo>

<mn>1</mn>

</condition>

<do>

<mi>aux</mi>

<mo>=</mo>

<mat>

<name>v</name>

<marow>

<marowini> <mn>1</mn> </marowini>

<marowfin> <mn>1</mn> </marowfin>

</marow>

<macolumn>

<macolumnini> <mn>i</mn> </macolumnini>

<macolumnfin> <mn>i</mn> </macolumnfin>

Page 72: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

70 CAPÍTULO 4. IMPLEMENTACIÓN

</macolumn>

</mat>

<if>

<condition> <mi>max</mi> <mo><</mo> <mi>aux</mi> </condition>

<do> <mi>max</mi> <mo>=</mo> <mi>aux</mn> </do>

</if>

</do>

</body>

<output>

<mi>max</mi>

</output>

</method>

Las etiquetas method, input, body y las correspondientes etiquetas de cierrehan sido de�nidas a partir de las necesidades de la aplicación. Además, ha sidonecesario de�nir etiquetas en MathML para representar estructuras comowhile, if o for; representar submatrices de una matriz; representar algunasfunciones especiales (una función que genera una matriz llena de ceros).

4.3. Métodos más relevantes

En esta sección se van a presentar los métodos más relevantes (delos implementados) de la aplicación. Se explicará su funcionamiento y susprincipales aportaciones.

Matriz(double[ ][ ] entradas, String nombre)

Constructor de la clase Matriz. Inicializa los datos del objeto querepresenta a una matriz: sus entradas y su nombre. Al tratarse delconstructor de un objeto Matriz de�nido de manera explícita, tambiéninicializa la variable que almacena dicha información.

Nota: este constructor no crea un �chero con la información de lamatriz. Esa acción se realiza desde la interfaz (ver Diseño).

Metodo(String nombre, String algoritmo, int tipo, String[ ]entradas, String[ ] salidas)

Constructor de la clase Metodo. Inicializa los datos del objeto querepresenta a un método: su nombre, el algoritmo que lo de�ne, su tipo,sus entradas y sus salidas.

Nota: este constructor no crea un �chero con la información del método.Esa acción se realiza desde la interfaz (ver Diseño).

Page 73: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

4.3. MÉTODOS MÁS RELEVANTES 71

resolver()

Método de la interfaz Problema. Cada clase de esta interfazimplementará este método acorde a sus necesidades. A continuación seexplica el funcionamiento general: se leerán los �cheros que contienenlas entradas del problema y el método que lo resuelve; se generará un�chero con las instrucciones necesarias para resolver dicho problema;se llamará a los diferentes sistemas de cálculo para que lo resuelvan yse generarán �cheros de texto con las soluciones obtenidas.

String de�nicionMetodoXML(String algoritmo, Stringentradas, String salidas)

Método que �traduce� la de�nición de un algoritmo introducida porel usuario en pseudocódigo a lenguaje MathML (XML). Tiene comoparámetros de entrada el pseudocódigo con la de�nición del algoritmo,las entradas y las salidas del método. Como salida, devuelve unString con la nueva y completa de�nición del método (que resuelve unproblema concreto) escrita en MathML. Esa información será la que sealmacene en un �chero de texto, el cual podrá ser leído e interpretadopor los diferentes sistemas de cálculo.

String de�nicionMatrizXML(double[ ][ ] entradas)

Este método �traduce� la de�nición de una matriz introducida por elusuario en pseudocódigo a lenguaje MathML (XML). Análogamenteal método anterior, tiene como entrada las entradas de la matriz ydevuelve como salida un String con la de�nición en MathML de lamatriz. Dicha de�nición será la utilizada para almacenar la matriz enun �chero de texto, que será utilizado por los diferentes sistemas decálculo.

initialize()

Este método tiene dos objetivos: volver a crear, cada vez que searranque la aplicación, los objetos de�nidos en sesiones anteriores paraque puedan volver a ser utilizados (función de guardado de datos)e inicializar (utilizando esos datos) la ventana principal donde semuestran al usuario esos datos (matrices y métodos). Primero recuperala información necesaria para volver a de�nir las matrices y lo métodoscreados en sesiones anteriores, esa información la obtiene de los �cherosde texto creados y guardados. Después, lista esos datos y los muestraen la ventana principal, con el �n de que el usuario pueda consultarlossin necesidad de volver a introducir toda esa información.

Page 74: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

72 CAPÍTULO 4. IMPLEMENTACIÓN

actualizarPaneles()

Método encargado de actualizar la ventana principal de la aplicación.Cada vez que se crea una matriz o un método, se edita una matriz oun método o se consulta un dato, los paneles que forman la ventanaprincipal deben ser actualizados para que el usuario pueda visualizar lamatriz o el método que desee. Cumple con la función básica (incluidaen los requisitos de la aplicación) de mostrar al usuario la informaciónintroducida.

4.4. Problemas

En esta sección se presentarán y analizarán los problemas surgidosdurante la implementación del presente proyecto. En cada apartado seincluirá una conclusión que resuma brevemente cada problema.

4.4.1. Lenguaje MathML (XML)

Para almacenar la información referente a matrices y métodos utilizadospor la aplicación se escogió el lenguaje MathML. Se trata de un lenguajebasado en XML y pensado para representar y trabajar con objetosmatemáticos.

El proyectante desconocía por completo la existencia de este lenguaje ala hora de iniciar el proyecto. No obstante, y tras la sugerencia por parte dela codirectora, se decidió optar por esta tecnología. Las ventajas que ofreceeran superiores a las di�cultades que se preveían.

Sin embargo, la necesidad de ampliar el lenguaje MathML no fue previstaal comienzo del proyecto, provocando esto un incremento sustancial en eltrabajo de implementación.

Problema: el proyectante ha tenido que familiarizarse y aprender ellenguaje MathML. Tanto para poder utilizarlo como para de�nir nuevasetiquetas.

4.4.2. Parser Mathematica

Como se ha visto en el apartado anterior, ha sido necesario ampliar ellenguaje MathML. Esto ha provocado que los sistemas de cálculo ya no seancapaces de trabajar directamente con este lenguaje MathML �ampliado�. Porello, ha sido necesario de�nir una función que traduzca la información de los�cheros (en MathML) al lenguaje utilizado por el sistema de cálculo. Estasfunciones suelen llamarse parser.

Page 75: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

4.5. FUNCIONALIDAD FINAL DE LA APLICACIÓN 73

Se ha implementado el parser que traduce el código MathML ampliadoal lenguaje de Mathematica. Se empleó gran parte del tiempo deimplementación en la consecución de este objetivo. Los motivos fueron:

Programación en lenguaje Mathematica: no es un lenguaje pensado (nioptimizado para tal función) para realizar este tipo de funciones. Setrata de un entorno de trabajo de cálculo simbólico de matemáticas.

Desconocimiento por parte del proyectante: tanto del lenguaje MathML(mencionado en el apartado anterior pero relacionado estrechamentecon este problema) como de algunas utilidades del sistema Mathematica(importación/exportación de archivos, tratamiento de código XML,programación �no matemática�).

Problema: programación con Mathematica.

4.4.3. Comunicación

La comunicación entre la aplicación y los diferentes sistemas de cálculoera un aspecto que preocupó desde el inicio del proyecto.

Ha sido necesario comunicarse con el sistema Mathematica. La aplicacióntenía que llamar al sistema y pasarle la información necesaria; después,recuperar los resultados para su tratamiento. Para ello, el proyectantetuvo que aprender cómo trabajar con el entorno Mathematica desde otraaplicación. También fue necesario un exhaustivo estudio del lenguaje Javapara lograr recorrer el camino opuesto: utilizar el sistema Mathematica desdenuestra aplicación. Por todo ello, fue necesario rediseñar el sistema de �cherosa emplear.

Cabe mencionar que, según pudo saber el proyectante, Mathematicaen su última versión (Mathematica 9.0) ofrece la posibilidad de ejecutarcódigo desde un programa escrito en Java (mediante el protocolo J/Link). Noobstante, el proyectante carece de dicha versión de Mathematica (es privada)y resultó imposible probar tal funcionalidad. Ni siquiera se ha con�rmado sies posible utilizar esa funcionalidad para resolver el problema de esta sección.

Problema: utilizar el entorno Mathematica desde un programa escritoen Java.

4.5. Funcionalidad �nal de la aplicación

Debido a los problemas surgidos durante la implementación de laaplicación (ver Sección 4.4) ha sido necesario un recorte en el alcance inicial

Page 76: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

74 CAPÍTULO 4. IMPLEMENTACIÓN

del proyecto. Se ha decidido implementar la funcionalidad necesaria paratrabajar con un único sistema de cálculo, Mathematica. Dejando Octave, elotro entorno considerado al inicio del proyecto, para futuras ampliaciones.

A continuación se mostrará una lista más detallada de las funcionalidadesque sí se han implementado y otra con aquellas acciones que fueron incluíasen el alcance del proyecto pero que no han sido implementadas �nalmente.

Funcionalidades implementadas:

• Crear y editar matrices de manera explícita

• Crear y editar matrices de manera implícita

• Crear y editar métodos

• Visualizar matrices y métodos creados

• Resolver problemas utilizando el entorno Mathematica

• Visualizar resultados

• Algunos métodos de comparación de resultados

Funcionalidades no implementadas:

• Traducir matrices y métodos a un determinado sistema de cálculo

• Ayuda al usuario a de�nir métodos (botones con funcionesespeciales como �While�, �For�, �If�, etc.)

• Resolver problemas utilizando el entorno Octave

• Algunos métodos de comparación de resultados (errores relativoy absoluto)

• Guardado de comparaciones de resultados

4.6. Posibles ampliaciones

La aplicación a desarrollar en este proyecto surgió de una necesidad real.A pesar del cambio en el alcance de la misma, las funcionalidades que seplani�caron estuvieron orientadas a la obtención de los objetivos previstos.No obstante, la aplicación podría ser mejorada en varios aspectos; así comosería posible añadir nuevas funcionalidades y ampliar objetivos. En estasección se presentan algunas posibles mejoras que se podrían realizar entrabajos futuros que completen al del presente proyecto.

Page 77: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

4.6. POSIBLES AMPLIACIONES 75

Completar la funcionalidad inicial.

Como se ha visto en la Sección 4.5, no se ha podido implementar demanera completa la aplicación plani�cada al inicio del proyecto. Porello, es natural pensar en completar dicha funcionalidad como primerapropuesta de trabajo futuro.

Mejorar la programación en pseudocódigo.

Los métodos que el usuario puede introducir y editar tienen unasrestricciones de código que pueden verse en el Anexo: Manual deusuario. Con el objetivo de facilitar la tarea de programación demétodos al usuario, sería conveniente ofrecer la posibilidad de trabajarcon nuevas funciones. Funciones matemáticas utilizadas normalmentecomo: potencia de un número real, determinante de una matriz, etc.

Nuevos sistemas de cálculo.

La aplicación se ideó para trabajar con dos sistemas de cálculo. Demanera que pudiese resolverse un determinado problema matemáticomediante dichos sistemas y, posteriormente, comparar ambas solucionesde una forma cómoda y sencilla para el usuario. Se pensó enimplementar la aplicación para que trabajase con Mathematica yOctave, dos conocidos sistemas de cálculo de diferente naturaleza (unosimbólico y otro numérico). No obstante, el diseño de clases y laestructura de la aplicación permiten añadir, sin la necesidad de unareestructuración, nuevos sistemas de cálculo con los que trabajar.

También sería posible una ampliación del número de soluciones acomparar. Una vez que la aplicación esté preparada para trabajar convarios sistemas de cálculo, podría implementarse la funcionalidad decomparar la solución dada por tres o más sistemas. Aunque se ha tenidoen cuenta esta posibilidad a la hora de diseñar e implementar las clases,evidentemente esta ampliación sería más costosa que la anterior.

Nuevos problemas matemáticos.

En principio se pensó en el álgebra lineal, con los cinco problemasmatemáticos escogidos, como campo sobre el que trabajar. Pero seríaposible e interesante añadir nuevos problemas de diferentes camposmatemáticos (o incluso aplicaciones a otras áreas). Por ejemplo,podrían introducirse problemas dentro del análisis matemático, para elestudio de funciones; problemas dentro de la topología, para trabajarcon variedades; problemas relacionados con economía, biología,ingeniería, etc.

Page 78: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

76 CAPÍTULO 4. IMPLEMENTACIÓN

Añadir métodos de comparación.

Al ampliar el tipo de problemas a tratar, se añadirían nuevos tiposde datos y, por tanto, nuevas necesidades en cuanto a la comparaciónde esos datos. Por ello, podría ser necesaria una ampliación en cuantoa los métodos de comparación de resultados. Sería interesante ofrecercomparación de resultados con más dígitos decimales, realizar estudiosde carácter estadístico (ofreciendo medias de resultados) o incluso otrostipos de representaciones grá�cas de los datos obtenidos como resultado(grá�cas en 3D).

Como se puede ver, el trabajo comenzado en el presente proyecto ofrecemuchas posibilidades en cuanto a mejoras y ampliaciones. De modo queel pequeño prototipo implementado podría ser, potencialmente, una granaplicación capaz de comparar diferentes resultados, obtenidos mediantedistintos sistemas de cálculo, sobre múltiples problemas. El objetivo y laaportación de dicha ampliación sería la misma que la de este proyecto:facilitar al usuario el trabajo de comparación de resultados, tarea tediosae incluso complicada en muchas ocasiones.

4.7. Pruebas

A lo largo de todo el desarrollo de la aplicación se han ido realizandodiversas pruebas o baterías de test para comprobar el funcionamiento tantodel código implementado como del sistema de �cheros utilizado. Estaspruebas pueden dividirse en cuatro tipos: pruebas unitarias, pruebas deintegración, pruebas de interfaces y pruebas �nales. A continuación, sedetallan dichas pruebas.

Pruebas unitarias.

Se probaron las pequeñas funciones implementadas de maneraindividual con el �n de veri�car que cumplían los objetivos deseados.Estas pruebas tuvieron gran importancia en la detección temprana deerrores, que hubiesen sido difíciles de localizar en una etapa más tardíade la implementación. Se llevaron a cabo baterías de test realizandollamadas a las funciones implementadas unas en Java y otras enMathematica y comprobando que se realizaban las acciones deseadas.

Ejemplos de las funciones probadas a este nivel son las encargadas dedevolver la información sobre una matriz o un método de forma legiblepara el usuario.

Page 79: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

4.7. PRUEBAS 77

Pruebas de integración.

Tan importante como que una función cumpla su cometido es lacomunicación entre las distintas funciones que conforman la aplicación.Por ello, tuvieron lugar pruebas de integración, cuyo objetivo eraprecisamente el de corroborar el correcto comportamiento de lasgrandes funciones de la aplicación (las que utilizan las pequeñasfunciones mencionadas en el apartado anterior). Así, se puso a pruebala comunicación entre pequeñas funciones y se veri�có que las salidas deunas eran válidas entradas para otras funciones cuando era necesario.

Por ejemplo, la función resolver de un objeto Problema tiene quereunir la información relativa a ese problema (entradas, método quelo resuelve, sistemas de cálculo), darle el formato adecuado y llamar alsistema de cálculo correspondiente para que resuelva el problema. Comose puede ver, es un conjunto de varias acciones que deben coordinarsecorrectamente.

Pruebas de interfaces.

Una vez realizadas las pruebas mencionadas, es necesario probar laaplicación desde su interfaz de usuario. El objeto de estas pruebas es ladetección de posibles problemas derivados de la relación entre interfazy funciones elementales. Los problemas detectados fueron de diversanaturaleza: desde errores en la obtención de información introducidapor el usuario o la presentada a éste como respuesta, hasta problemassurgidos en tiempo de ejecución que no se habrían detectado de noexistir estas pruebas.

Como ejemplo tomaremos la ventana utilizada para resolver unSistema Lineal. Una vez que el usuario ha introducido la informaciónrelativa a este problema, se debe crear un objeto de la claseSistemaLineal, resolver dicho problema (llamando al sistema decálculo correspondiente) y mostrar las comparaciones entre lassoluciones obtenidas. Como es natural, no se podrán mostrar dichascomparaciones de resultados sin antes haber calculado y guardado lassoluciones. Problemas derivados de esta situación se pudieron detectary solucionar tras realizar este tipo de pruebas.

Pruebas �nales.

Las últimas pruebas que se realizaron fueron diseñadas para serllevadas a cabo por el usuario �nal de la aplicación. De hecho, fueronrealizadas no sólo por el proyectante sino por un usuario externo yajeno al desarrollo de la aplicación. Estas pruebas se centraron en la

Page 80: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

78 CAPÍTULO 4. IMPLEMENTACIÓN

implantación de la aplicación en un ordenador y en el manejo de lamisma. Para ello, se contó con la ayuda del Anexo: Manual de usuario.

La importancia de estas pruebas radica en el comportamientoimprevisible del usuario �nal de la aplicación. Evitando la poco deseablesituación de una batería de pruebas realizadas en un sólo ordenador ypor el desarrollador de la aplicación. Cabe destacar que gracias a estaspruebas se pudieron introducir mejoras tanto en la implantación de laaplicación como en el manual de usuario.

4.8. Implantación y uso

En el Anexo: �Manual de usuario� se encuentran las instrucciones aseguir para la correcta implantación de la aplicación en un ordenador.Además, hay un manual que ayudará al usuario a utilizarla correctamente,así como ejemplos que muestran cómo programar (crear matrices y métodos)utilizando el pseudocódigo propio de la aplicación.

Page 81: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

Capítulo 5

Gestión del proyecto

5.1. Comparación entre tiempos estimados y

reales

Debido principalmente a la inexperiencia del proyectante a la hora deplani�car proyectos, a su disponibilidad de tiempo (por estar realizando susestudios de tesis al mismo tiempo) y a los problemas surgidos durante laimplementación del presente proyecto (ver apartado 4.4), existe un desfaseentre el tiempo estimado para la realización del mismo y el tiempo realempleado.

En esta sección se va a presentar un estudio comparativo que re�ejaesa diferencia temporal y explica los principales motivos de las desviacionessurgidas en cada fase del proyecto. A continuación, se muestra un listadoen el que se incluyen las horas estimadas, las horas reales y los motivos deldesfase (si existe) de cada fase.

Plani�cación inicial

• Tiempo estimado: 68 horas.

• Tiempo real: 75 horas.

Se empleó algo más del tiempo del previsto en la plani�cación delproyecto (desglose de tareas y plani�cación temporal) debido a lainexperiencia del proyectante. El mayor desvío de horas se debesin embargo al tiempo empleado en la introducción por parte delproyectante al lenguaje MathML (a pesar de que sólo se hizo unacercamiento inicial al mismo).

Análisis

79

Page 82: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

80 CAPÍTULO 5. GESTIÓN DEL PROYECTO

• Tiempo estimado: 52 horas.

• Tiempo real: 60 horas.

Aunque en principio la captura de requisitos no suponía ningúnproblema, la de�nición concreta de la funcionalidad de la aplicacióncostó algo más tiempo de lo previsto. Lo mismo sucedió con el Anexo:Resumen matemático.

Diseño

• Tiempo estimado: 45 horas.

• Tiempo real: 60 horas.

El principal problema surgido durante el diseño de la comunicaciónentre la aplicación y los sistemas de cálculo. Fue necesario pensar enel sistema de �cheros a utilizar y modi�car el diseño inicial por el que�nalmente se optó.

Implementación

• Tiempo estimado: 105 horas.

• Tiempo real: 250 horas.

La implementación es la fase del proyecto en la que la desviación dehoras es más notable. De hecho, esta desviación fue la que provocó unrecorte en el alcance del proyecto (ver sección de Implementación).

El principal motivo no fue el desarrollo de la aplicación (que tambiéncostó más tiempo del previsto), sino la comunicación con los sistemas decálculo. Tal y como se ha mencionado en la sección de Implementación,se invirtió mucho más tiempo del previsto en: estudio del lenguajeMathML, ampliación de este lenguaje con nuevas etiquetas, traduccióndel pseudocódigo a lenguaje MathML y desarrollo del parser (quetraduce el MathML ampliado al lenguaje utilizado por Mathematica).También tomó más tiempo del previsto la ejecución de códigoMathematica desde la aplicación escrita en Java, aunque para esteúltimo problema se encontró una solución satisfactoria que justi�cóel tiempo empleado.

Documentación

• Tiempo estimado: 60 horas.

• Tiempo real: 60 horas.

Page 83: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

5.1. COMPARACIÓN ENTRE TIEMPOS ESTIMADOS Y REALES 81

Aunque en el momento de la redacción de este documento todavía nose ha elaborado el material correspondiente a la defensa del proyecto,no existe apenas desviación de tiempo en esta fase.

Gestión del proyecto

• Tiempo estimado: 30 horas.

• Tiempo real: 25 horas.

Debido a la gran disponibilidad de los codirectores y a su predisposición,se ha seguido e incluso mejorado el tiempo previsto para las reunionesy seguimiento del proyecto.

En la Figura 5.1 se muestra un diagrama de barras en el que se observala diferencia de horas estimadas en cada fase del proyecto y las realmenteinvertidas.

Figura 5.1: Comparación del tiempo estimado y el tiempo real empleado.

La comparación entre las horas (h.) estimadas y las realmente invertidasen cada fase del proyecto, así como la duración total del proyecto puedenverse resumidas en la siguiente tabla.

Page 84: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

82 CAPÍTULO 5. GESTIÓN DEL PROYECTO

Estimado RealPlani�cación inicial 68 h. 75 h.Análisis 52 h. 60 h.Diseño 45 h. 60 h.Implementación 105 h. 250 h.Documentación 60 h. 60 h.Gestión del proyecto 30 h. 25 h.

Total 360 h. 530 h.

En la Figura 5.2 puede verse un grá�co en el que se aprecia mejor ladistribución del tiempo real invertido en el proyecto.

Figura 5.2: Distribución temporal real del trabajo.

Como puede verse tras esta comparación, hay una desviación sustancialentre el tiempo de horas estimadas para la realización del proyecto y lashoras �nalmente utilizadas. Por ello fue necesario volver a de�nir el alcancedel proyecto, recortando algunas de las funcionalidades �nales de la aplicación(ver la sección de Implementación para más detalles).

5.2. Distribución temporal del trabajo

Finalmente, en la Figura 5.3 podemos ver el diagrama de Gantt que recogela distribución temporal del trabajo realmente invertido en el desarrollo delproyecto.

Page 85: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

5.2. DISTRIBUCIÓN TEMPORAL DEL TRABAJO 83

Figura 5.3: Diagrama de Gantt

Page 86: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos
Page 87: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

Anexos

85

Page 88: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos
Page 89: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

Anexo A

Resumen Matemático

A.1. Introducción

Este anexo es un resumen en el que se explican las nociones matemáticastratadas en el proyecto. Cada uno de los estudios que se pueden realizarcon la aplicación se tratará en un apartado distinto: valores propios,valores singulares, resolución de sistemas, descomposición LDU e inversade una matriz. Para cada una de estas nociones se de�nirá el problemaa tratar (indicando explícitamente los datos iniciales necesarios y losresultados obtenidos), se presentarán soluciones existentes y se daránejemplos explicativos. No se pretende realizar un extenso estudio sobre estasnociones, sino que simplemente se busca de�nir los conceptos necesarios ycontextualizar estos problemas dentro de las matemáticas. Antes de pasar adesarrollar esos problemas, se de�nirán los conceptos básicos y las notacionesque se utilizarán en este anexo. También hay un apartado en el que sepresentarán distintas formas de comparar los resultados de los problemas.

A.2. De�niciones previas y notaciones

Todas las matrices que aparezcan en este resumen serán cuadradas ytendrán como entradas números reales. Como es habitual, utilizaremos detApara denotar el determinante de la matriz A.

En alguna ocasión aparecen matrices ortogonales. Recordemos que unamatriz Q es ortogonal si su matriz inversa coincide con su traspuesta; esdecir, si QT = Q−1. También utilizaremos la matriz de adjuntos. Denotamosadj(A) a la matriz de adjuntos de una matriz dada A, y está de�nida por

(adj(A))ij = (−1)i+jMji,

87

Page 90: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

88 ANEXO A. RESUMEN MATEMÁTICO

donde Mji es el determinante de la submatriz de orden n− 1 de A resultantede quitar la �la j y la columna i.

La factorización QR es una descomposición de la matriz A de la formaA = QR, donde Q es una matriz ortogonal y R es triangular superior. Es unafactorización muy útil que aparece en este resumen brevemente explicada. Noobstante, en el Capítulo 18 de [3] puede encontrarse una descripción detalladasobre la factorización QR y las operaciones utilizadas para obtenerla.

Otra herramienta que se utiliza en este resumen son las normas vectorialesy las normas matriciales. Como las más utilizadas son la norma 2 y la normain�nito, nos centraremos en estas dos sin detenernos a de�nir formalmentelas normas en general. Dados v = (v1, . . . , vn)T un vector y A = (aij)1≤i,j≤nuna matriz de orden n de�nimos, respectivamente, la norma 2 y la normain�nito de v como

‖v‖2 =√|v1|2 + . . .+ |vn|2, ‖v‖∞ = max

1≤i≤n|vi|

y, la norma 2 y la norma in�nito de A como

‖A‖2 = σmax(A), ‖A‖∞ = max1≤i≤n

n∑j=1

|aij|,

donde σmax(A) es el mayor valor singular de A (véase la Sección 5 de esteAnexo).

A.3. Métodos de comparación

La solución para cada uno de los problemas a tratar tiene un tipo de datodiferente. Por ejemplo, los valores singulares y la resolución de sistemas tienencomo solución un vector de valores reales, en los valores propios la soluciónes un vector pero de números complejos, la inversión tiene como solución unamatriz, y la solución de la descomposición LDU son tres matrices.

Para cada tipo de dato será interesante una comparación distinta. En esteapartado veremos las diferentes formas de comparar soluciones.

A.3.1. Visualización directa

Es la forma más básica y menos efectiva de comparar resultados. Consisteen la visualización directa de los distintos datos a comparar. Aunque no esun buen método para realizar una comparación �able, permite observar laestructura de los objetos a comparar y nociones que se perderían con losotros métodos.

Problemas en los que es aplicable: todos.

Page 91: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

A.3. MÉTODOS DE COMPARACIÓN 89

σi Método 1 Método 2σ1 7.3184468215 7.3184454822σ2 6.1155792164 6.1155422412σ3 1.4521814624 1.4012972101

Cuadro A.1: Valores singulares

A.3.2. Tabla de valores

Consiste en elaborar una tabla con los distintos resultados a comparar. Eneste caso, la comparación también se hace de forma visual aunque de un modomás favorable visualmente. Puede completarse subrayando las diferenciasentre los valores. Un ejemplo sería la Tabla A.1, en la que comparamos losvalores singulares de una matriz calculados por dos métodos distintos.

Problemas en los que es aplicable: Valores propios, valores singulares yresolución de sistemas.

A.3.3. Error relativo y error absoluto

Para obtener el error absoluto y el error relativo cometidos al calcularun dato, es necesario tener el valor real del dato que estamos calculando.Dado un valor escalar x y su aproximación calculada mediante ordenador xdiremos que el error absoluto cometido es

Eabs = |x− x|,

y el error relativo es

Erel =|x− x||x|

.

Observemos que, como es lógico, lo deseable es que tanto el error absolutocomo el relativo estén próximos a cero. Otra observación interesante es quehemos de�nido ambos errores utilizando el operador valor absoluto. Sinembargo existen también errores absolutos y relativos de�nidos de maneraanáloga pero utilizando una norma vectorial o matricial (por ejemplo lanorma 2 o la norma in�nito son las más utilizadas) en lugar del valor absoluto.Así podríamos calcular el error absoluto y el relativo cometidos al calcular,A, una aproximación de una matriz dada A utilizando, por ejemplo, la norma2:

Eabs = ‖A− A‖2, Erel =‖A− A‖2‖A‖2

.

Problemas en los que es aplicable: todos.

Page 92: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

90 ANEXO A. RESUMEN MATEMÁTICO

A.3.4. Número de condición de una matriz

El número de condición de una matriz nos va a informar sobre lo �buena� o�mala� que es esa matriz para el problema que consideramos. Si, por ejemploqueremos resolver un sistema de ecuaciones cuya matriz de coe�cientes esA, su número de condición nos ayudará a determinar si el sistema está bien-condicionado o mal-condicionado.

Un problema está bien-condicionado si al realizar pequeñas variacionesen los datos iniciales obtenemos variaciones pequeñas en la solución. Encambio, un problema está mal-condicionado si al realizar pequeñasvariaciones en los datos iniciales obtenemos variaciones grandes en lasolución.

De�nimos el número de condición de una matriz A como

κ(A) = ‖A‖p‖A−1‖p

Las normas más utilizadas para calcular el número de condición suelen ser lanorma 2 y la norma in�nito. Si utilizamos la norma 2, se tiene que el númerode condición es la razón entre el mayor valor singular de A y el menor valorsingular (ver Sección 5 de este Anexo),

κ(A) = ‖A‖2‖A−1‖2 =σmax(A)

σmin(A)

Problemas en los que es aplicable: descomposición LDU, inversa de unamatriz, resolución de sistemas.

A.3.5. Grá�ca

Método que consiste en representar grá�camente los resultados comopuntos. De esta forma es muy sencillo comparar los resultados de una formamuy visual. Un ejemplo de grá�ca en la que comparamos los valores singularescalculados por dos métodos distintos es la Figura A.1.

Problemas en los que es aplicable: Valores singulares y resolución desistemas. También valores propios si son todos números reales.

A.4. Valores propios de una matriz

Los valores propios siempre están ligados a otros parámetros que son losvectores propios de una matriz. Juntos, aparecen en multitud de aplicacionesen distintos campos. Por mencionar una de esas aplicaciones, diremos que la

Page 93: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

A.4. VALORES PROPIOS DE UNA MATRIZ 91

Figura A.1: Valores singulares de la matriz V cuadrada de orden 20; �+� =Método 1, �x� = Método 2.

forma en que el buscador Google indexa las páginas web para después realizaruna búsqueda se basa en un algoritmo que utiliza la descomposición en valorespropios de una matriz que contiene la información sobre esas páginas web(para más información ver [1]).

A.4.1. De�nición

Dada una matriz A cuadrada de orden n, de�nimos su polinomiocaracterístico como det(A − λIn), donde λ es la variable del polinomio eIn es la matriz identidad de orden n. Es decir, para obtener el polinomiocaracterístico de una matriz A, primero restaremos la variable λ a loselementos diagonales de A y después calcularemos el determinante de la nuevamatriz.

De�nición 1 Los valores propios de una matriz A son las raíces de supolinomio característico. Es decir, los λi (i = 1, . . . , n) que son solución dela ecuación det(A− λIn) = 0.

Si una matriz tiene el mismo valor propio repetido varias veces, diremos queese valor propio tiene multiplicidad m, siendo m > 1 la multiplicidad de esevalor propio como raíz del polinomio característico de A. En caso contrario,

Page 94: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

92 ANEXO A. RESUMEN MATEMÁTICO

diremos que el valor propio es simple. Notemos que los valores propios puedenser números complejos.

Es interesante resaltar la siguiente propiedad sobre los valores propios. Eldeterminante de una matriz es igual al producto de sus valores propios,

detA =n∏

i=1

λi.

La traza de una matriz A = (aij)1≤i,j≤n es la suma de sus elementosdiagonales: Tr(A) =

∑ni=1 aii. Se tiene que la traza coincide con la suma

de los valores propios:

Tr(A) =n∑

i=1

λi.

Asociados a los valores propios están otros entes matemáticos llamadosvectores propios. De ellos daremos únicamente la de�nición, pues aunque noson objeto de estudio en este resumen, están estrechamente ligados a losvalores propios. Un vector no nulo v es un vector propio de A asociado alvalor propio λ si Av = λv.

A.4.2. Ejemplo

Consideremos la matriz

A =

7 4 32 4 86 2 6

.

Tenemos que

det(A− λI3) = (7− λ)(4− λ)(6− λ) + 4 · 8 · 6 + 2 · 2 · 3− 6 · (4− λ) · 3−(7− λ) · 2 · 8− 2 · 4 · (6− λ)

= −λ3 + 17λ2 − 52λ+ 140.

Calculando las raíces de este polinomio de grado tres concluimos que losvalores propios de A son λ1 = 14, λ2 = 3

2+√312i y λ3 = 3

2−√312i. Recordemos

que los valores propios pueden ser números complejos incluso cuando lasentradas de la matriz son número reales.

A.4.3. Método de resolución

Veamos cómo se suelen calcular en la práctica los valores propios de unamatriz. Pero antes notemos que no es posible obtener, en general, de forma

Page 95: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

A.5. VALORES SINGULARES DE UNA MATRIZ 93

exacta los valores propios para matrices de orden superior o igual a 5. Eldeterminante de una matriz de orden mayor o igual que 5 será un polinomiodel mismo grado y no existen fórmulas para calcular las raíces exactas deesos polinomios. Por eso, los valores propios de estas matrices tendrán queaproximarse numéricamente.

Un método que se utiliza frecuentemente es el algoritmo QR para obteneruna descomposición QR de la matriz A que nos proporcione los valorespropios. Lo que se hace es, para cada k, descomponer la matriz Ak = QkRk

(A0 := A), donde Qk es una matriz ortogonal y Rk es triangular superior.Después calculamos la matriz Ak+1 := RkQk, y volveríamos a calcular ladescomposición QR de esta nueva matriz. Con este proceso, las matrices Ak

convergen hacia una matriz triangular. Observemos que todas las matrices Ak

son semejantes por la forma en que están construidas y, por tanto, tienen losmismos valores propios. Finalmente, como los valores propios de una matriztriangular son los elementos de su diagonal, ya tendríamos los valores propioscalculados (o, más precisamente, una aproximación de los mismos).

A.4.4. Entradas/salidas del problema

A la hora de calcular los valores propios de una matriz tendremos encuenta que:

Datos iniciales o entradas: A, la matriz n×n de la que queremos sabersus valores propios.

Resultado o salida: λ = (λ1, . . . , λn), un vector que contiene los nvalores propios (incluye los repetidos) de la matriz A. El vector λ estaráordenado de manera descendiente en cuanto a las partes reales de susentradas, de manera que Re(λ1) ≥ . . . ≥ Re(λn).

A.5. Valores singulares de una matriz

Los valores singulares son muy útiles dentro del álgebra lineal numérica.Son utilizados por los programas de cálculo matemático para numerosasoperaciones con matrices (cálculo del rango de una matriz, ajustes pormínimos cuadrados, cálculo de valores propios, etc.). Además tienen diversasaplicaciones en muchos campos. Por ejemplo, pueden proporcionar algoritmospara la compresión de imágenes. En [4] podemos encontrar una presentaciónmuy interesante y de carácter divulgativo sobre los valores singulares.

Page 96: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

94 ANEXO A. RESUMEN MATEMÁTICO

A.5.1. De�nición

Los valores singulares y los valores propios están relacionados de lasiguiente manera. Dada una matriz A cuadrada de orden n, los valoressingulares no nulos de A son las raíces cuadradas de los valores propios de lamatriz AAT (o los de la matriz ATA, que coinciden).

Pero para ver una de�nición alternativa de los valores singulares de unamatriz dada necesitaremos ver antes el siguiente teorema. En él se muestraque cualquier matriz con entradas reales posee una descomposición que nospermitirá de�nir los valores singulares.

Teorema A.5.1 Sea A una matriz n×n cuyas entradas son números reales.Entonces existe una descomposición

A = Q1ΣQT2 ,

donde Q1, Q2 son matrices ortogonales y Σ es una matriz n×n diagonal conelementos diagonales no negativos. Además, la unicidad de la matriz Σ estádeterminada por A. A esta descomposición la llamaremos descomposiciónen valores singulares de A.

Ahora ya estamos en situación de poder describir los valores singulares.

De�nición 2 A los elementos diagonales, σi, de la matriz Σ =diag(σ1, . . . , σn) del teorema anterior, los llamaremos valores singularesde A.

Es posible que un valor singular aparezca más de una vez en ladescomposición de una misma matriz. En ese caso diremos que el valorsingular tiene multiplicidad m si aparece m veces repetido en Σ.

A.5.2. Ejemplo

Consideremos la matriz

A =

12/65 −141/65 0174/65 68/65 0

0 0 2

= Q1ΣQT2 .

La descomposición en valores singulares de A viene dada por las matrices

Q1 =

12/13 −5/13 05/13 12/13 0

0 0 1

,Σ =

2 0 00 3 00 0 2

, Q2 =

3/5 4/5 0−4/5 3/5 0

0 0 1

.

Page 97: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

A.6. RESOLUCIÓN DE SISTEMAS DE ECUACIONES LINEALES 95

Observemos que las matrices Q1 y Q2 cumplen que su traspuesta coincide consu inversa (Q−1i = QT

i , para i = 1, 2) y, por tanto, son ortogonales. Diremosque los valores singulares de la matriz A son σ1 = 3 y σ2 = 2 y que σ2 tienemultiplicidad 2 (porque aparece dos veces en la matriz Σ).

A.5.3. Método de resolución

La manera habitual de calcular los valores singulares de una matriz enla práctica es dividir el proceso en dos pasos. Primero se reduce la matrizinicial A a una matriz bidiagonal B que tiene los mismos valores singularesque A. Una vez hecho esto, podemos calcular los valores singulares de B(y por tanto los de A) mediante una variación del conocido algoritmo QR.Diferentes métodos de obtener los valores singulares de esa matriz B daránlugar a distintos métodos de resolución de este problema.

A.5.4. Entradas/salidas del problema

Si queremos resolver el problema de calcular los valores singulares de unamatriz tendremos:

Datos iniciales o entradas: A, la matriz n×n de la que queremos sabersus valores singulares.

Resultado o salida: σ = (σ1, . . . , σn), un vector que contiene los nvalores singulares (incluye los repetidos) de la matriz A. Tal y como eshabitual presentarlo, el vector σ estará ordenado en orden descendiente,de manera que σ1 ≥ . . . ≥ σn.

A.6. Resolución de sistemas de ecuaciones

lineales

Los sistemas de ecuaciones lineales son muy importantes en muchos ydistintos campos. Basta decir que hay in�nidad de situaciones que puedenmodelizarse mediante un sistema de ecuaciones lineales. Problemas relativosa campos tan diversos como la optimización, la estimación y predicción dedatos, el procesamiento digital de señales, etc. se resuelven calculando lasolución a un sistema de ecuaciones lineales.

Page 98: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

96 ANEXO A. RESUMEN MATEMÁTICO

A.6.1. De�nición

Diremos que un sistema de ecuaciones lineales es un conjunto de variasecuaciones lineales en las mismas variables. Es decir

a11x1 + . . .+ a1nxn = b1...

......

an1x1 + . . .+ annxn = bn

(A.1)

donde x := (x1, . . . , xn)T son las variables, A =

a11 · · · a1n...

. . ....

an1 · · · ann

es la matriz

de coe�cientes y b = (b1, . . . , bn)T es el vector de términos independientes.Expresado en forma matricial, el sistema (A.1) sería

Ax = b.

Una solución del sistema (A.1) será un conjunto de valores asignados a lasvariables x1, . . . , xn tales que se satisfagan todas las ecuaciones del sistemade forma simultánea. Es decir, una asignación de valores a las variables de xtales que Ax = b.

En un sistema lineal pueden darse tres casos en función del número desoluciones que éste tenga. A continuación veremos una clasi�cación de estostres casos. Pero antes necesitamos hacer alguna notación: r = rango(A)r′ = rango(A|b). Un sistema de n ecuaciones con n incógnitas puede tener:

Una solución única: si r = r′ = n. En este caso diremos que el sistema escompatible determinado. Se caracterizan por det(A) 6= 0 (es decir,A es invertible).

In�nitas soluciones: si r = r′ 6= n. En este caso diremos que el sistemaes compatible indeterminado.

Ninguna solución: si r 6= r′. En este caso diremos que el sistema esincompatible.

Los sistemas de 2 ecuaciones con 2 incógnitas pueden interpretarse como2 rectas. Estudiar la solución de estos sistemas de ecuaciones es interpretadogeométricamente como estudiar la posición relativa de esas rectas y lassoluciones son los puntos de intersección de las rectas. Algo análogo sucedecon los sistemas de 3 ecuaciones con 3 incógnitas, pero en este caso lainterpretación geométrica de cada ecuación no es una recta sino un planoen el espacio.

Page 99: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

A.6. RESOLUCIÓN DE SISTEMAS DE ECUACIONES LINEALES 97

Existen distintos métodos para calcular la solución de un sistema lineal.Los dos más utilizados se basan en el método de Gauss-Jordan y la regla deCramer respectivamente.

El primero consiste en aplicar un proceso de eliminación Gaussiana ala matriz (A|b) hasta obtener una matriz equivalente (luego un sistemaequivalente, con la misma solución que el inicial) de la forma (A|b), donde lamatriz A es triangular superior. Después se procede de manera análoga hastalograr la matriz (D|x), donde D = diag(d1, . . . , dn) es una matriz diagonal yx = (x1, . . . , xn)T un vector. Entonces, tendremos que la solución viene dadapor xi = xi/di para i = 1, . . . , n.

El otro método más utilizado nos proporciona una fórmula explícita paracada entrada de la solución, pero su interés es sobre todo teórico ya que esmucho más costoso que la eliminación Gaussiana. Denotamos Ai a la matrizformada a partir de A en la que hemos cambiado la columna i por el vectorb. Entonces la regla de Cramer asegura que la solución x = (x1, . . . , xn)T delsistema compatible determinado Ax = b viene dada por xi = det(Ai)

det(A), para

i = 1, . . . , n.

A.6.2. Ejemplo

Queremos resolver el sistemax1 + 3x2 + 2x3 = 1

4x1 + 13x2 + 3x3 = 1

2x1 + 2x2 + 25x3 = 2

que tiene el vector de términos independientes b = (1, 1, 2)T y la matriz decoe�cientes

A =

1 3 24 13 32 2 25

.

Primero lo haremos utilizando eliminación Gaussiana. Tenemos

(A|b) ∼

1 3 2 14 13 3 12 2 25 2

∼1 3 2 1

0 1 −5 −30 0 1 −12

∼1 3 0 25

0 1 0 −630 0 1 −12

1 0 0 2140 1 0 −630 0 1 −12

.

Luego la solución del sistema es x = (241,−63,−12)T .

Page 100: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

98 ANEXO A. RESUMEN MATEMÁTICO

Utilizando la regla de Cramer, sabemos que

x1 =det(A1)

det(A)=

1

det(A)det

1 3 21 13 32 2 25

= 214,

x2 =det(A2)

det(A)=

1

det(A)det

1 1 24 1 32 2 25

= −63,

x3 =det(A3)

det(A)=

1

det(A)det

1 3 14 13 12 2 2

= −12.

Tal y como era de esperar, la solución calculada con cada uno de los métodoscoincide.

A.6.3. Método de resolución

En la práctica, para obtener la solución de un sistema de ecuacioneslineales dado, Ax = b, se suele calcular la inversa de la matriz A. De estaforma tendremos la solución calculando el producto x = A−1b.

Otra forma de calcular la solución suele ser dividir el proceso en dos pasos.Primero se calcula la descomposición A = LU , donde L es triangular inferiory U triangular superior. Así se puede pasar del sistema inicial Ax = b a otroLy = b donde la matriz de coe�cientes L es triangular inferior. Observemosque calcular la solución y de este sistema es muy fácil puesto que podemos ircalculando las entradas yi por sustitución desde la primera �la en adelante.Después, resolver el sistema Ux = y, vuelve a ser fácil porque la matriz decoe�cientes U es triangular superior.

A.6.4. Entradas/salidas del problema

Para resolver un sistema de ecuaciones lineales es importante recordar:

Datos iniciales o entradas: A, la matriz n×n de coe�cientes del sistemade ecuaciones, y b el vector n× 1 de términos independientes.

Resultado o salida: x = (x1, . . . , xn)T , el vector solución del sistemainicial Ax = b.

Page 101: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

A.7. DESCOMPOSICIÓN LDU DE UNA MATRIZ 99

A.7. Descomposición LDU de una matriz

La descomposición LDU es una de las descomposiciones matriciales másimportantes y más utilizadas. Resulta de gran utilidad en el álgebra linealnumérica, puesto que es única para una matriz invertible y se utiliza a menudopara calcular el determinante de matrices, calcular inversas, resolver sistemasde ecuaciones lineales, etc.

A.7.1. De�nición

Dada una matriz invertible cuadrada de orden n, A, diremos que ladescomposición LDU de A es

A = LDU,

donde L es una matriz triangular inferior con unos en la diagonal, U estriangular superior con unos en la diagonal y D es una matriz diagonalinvertible. Un hecho importante es que esta descomposición es única.

Sin embargo, no siempre podremos realizar esta descomposición (porejemplo porque un elemento diagonal es nulo). Una condición su�ciente esque los menores principales directores sean no nulos (det((aij)1≤i,j≤k) 6= 0para k = 1, . . . , n). A veces es necesario realizar permutaciones en las �lasy las columnas de A para poder calcular la descomposición, de modo quetendremos

PAQ = LDU, (A.2)

donde P,Q son matrices de permutación (es decir, son la matriz identidadcon las �las reordenadas).

Esta descomposición de matrices está relacionada con el proceso deeliminación Gaussiana. De hecho, la descripción en forma matricial dela eliminación Gaussiana tiene como resultado la descomposición LDU.Distintas estrategias de pivotaje darán lugar a diversas factorizaciones deltipo (A.2).

A.7.2. Ejemplo

Tenemos la matriz

A =

2 6 44 16 286 20 25

.

Si realizamos la eliminación Gaussiana sobre A hasta obtener una matriztriangular superior, obtendremos los multiplicadores correspondientes de

Page 102: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

100 ANEXO A. RESUMEN MATEMÁTICO

dicha eliminación, que son las entradas de la matriz L. Tras la fase deeliminación obtenemos las entradas de la matriz triangular superior y�nalmente descomponemos la matriz triangular superior como una diagonalmultiplicada por U , que tendrá unos en la diagonal. Así tendremos que

A =

1 0 02 1 03 1/2 1

2 0 00 4 00 0 3

1 3 20 1 50 0 1

= LDU.

A.7.3. Método de resolución

Como hemos dicho, si explicamos de forma matricial el proceso deeliminación Gaussiana, obtendremos la descomposición LDU de una matrizA. De este modo, tendremos que las entradas de la matriz L serán losmultiplicadores de la eliminación Gaussiana. Al realizar este proceso deeliminación sobre A hasta obtener B, una matriz triangular superior,tendremos L−1A = B =: DU . Este proceso permite obtener unadescomposición LU de una matriz, A = LU con L triangular inferiory U triangular superior pero sin unos en sus entradas diagonales. Ladescomposición LDU puede obtenerse a partir de esta descomposición LUde manera inmediata.

No obstante, es posible utilizar otros procesos de eliminación (por ejemploeliminación de Neville, que es muy interesante para ciertos tipos de matrices,ver [2]) que darán lugar a otras descomposiciones del tipo (A.2).

A.7.4. Entradas/salidas del problema

Para calcular la descomposición LDU de una matriz dada, tendremos encuenta que:

Datos iniciales o entradas: A invertible, la matriz n × n de la quequeremos calcular su descomposición LDU.

Resultado o salida: L, D ,U , P y Q, las matrices (de orden n) talesque PAQ = LDU , donde P,Q son matrices de permutación, L,Uson triangulares (inferior y superior respectivamente) con unos en ladiagonal, y D es una matriz diagonal.

A.8. Inversa de una matriz

Calcular la matriz inversa de una matriz dada es importante en problemasbásicos como por ejemplo resolver un sistema de ecuaciones lineales. Pero

Page 103: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

A.8. INVERSA DE UNA MATRIZ 101

la inversa de una matriz también aparece en otras muchas aplicaciones:criptografía, simulación de grá�cos 3D, etc.

A.8.1. De�nición

Diremos que una matriz A cuadrada de orden n es invertible si existe otramatriz B cuadrada de orden n tal que

AB = BA = In.

Es decir, si existe una matriz tal que al multiplicar A por esa matriz aizquierda o derecha obtengamos la matriz identidad.

De�nición 3 Dada una matriz invertible A, de�nimos la matriz inversade A, y la denotamos A−1, como la matriz que veri�ca AA−1 = A−1A = In.

La operación de inversión de matrices tiene muchas propiedades.Enunciaremos aquí algunas de ellas muy interesantes y útiles.

Proposición 1 Sean A,B matrices invertibles, entonces se cumplen lassiguientes igualdades

(i) (A−1)−1 = A.

(ii) (AB)−1 = B−1A−1.

(iii) detA 6= 0.

(iv) (AT )−1 = (A−1)T .

(v) det(A−1) = (det(A))−1.

(vi) A−1 = 1detA

adj(A), donde adj(A) es la matriz de adjuntos de A.

De hecho, la propiedad (iii) de la proposición anterior se utiliza paracaracterizar a la matrices invertibles. Una matriz es invertible si y sólo si sudeterminante es distinto de cero.

La matriz inversa de una matriz triangular superior será otra matriztriangular superior. Con las matrices triangulares inferiores se tiene lapropiedad análoga. Además, es fácil comprobar que la inversa de una matrizdiagonal invertible D = diag(d1, . . . , dn) es la matriz diagonal D−1 =diag( 1

d1, . . . , 1

dn).

Para calcular la matriz inversa de la matriz A se suele utilizar el algoritmode Gauss-Jordan, que consiste en ampliar la matriz A adjuntándole a su

Page 104: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

102 ANEXO A. RESUMEN MATEMÁTICO

izquierda la matriz identidad. De este modo, se construye la matriz (A|In) yse van realizando operaciones elementales entre �las para anular los elementosaij con i > j, igual que en la eliminación Gaussiana. Después se procede deforma análoga para anular los elementos aij con i < j. Finalmente, comoresultado se tiene que la matriz inicial (A|In) se ha convertido en (D|X)y dividiendo la �la i-ésima por di (elemento de D = diag(d1, . . . , dn)) parai = 1, . . . , n, llegamos a (In|A−1) y así tenemos calculada la inversa de A.

A.8.2. Ejemplo

Vamos a utilizar el algoritmo de Gauss-Jordan para calcular la matrizinversa de

A =

1 3 24 13 32 2 25

.

Primero ampliaremos A para tener la matriz (A|In) y después iremoshaciendo ceros bajo la diagonal principal de A1 3 2 1 0 0

4 13 3 0 1 02 2 25 0 0 1

∼1 3 2 1 0 0

0 1 −5 −4 1 00 −4 21 −2 0 1

∼1 3 2 1 0 0

0 1 −5 −4 1 00 0 1 −18 4 1

.

Procedemos análogamente para hacer ceros en los elementos sobre ladiagonal principal de A realizando las operaciones elementales entre �lasnecesarias para llegar a la matriz ampliada que tiene la inversa de A en suparte derecha,1 3 2 1 0 0

0 1 −5 −4 1 00 0 1 −18 4 1

1 3 0 37 −8 −20 1 0 −94 21 50 0 1 −18 4 1

1 0 0 319 −71 −170 1 0 −94 21 50 0 1 −18 4 1

.

A.8.3. Método de resolución

En la práctica, para calcular la inversa de una matriz dadapueden utilizarse diversos métodos. Por ejemplo, es posible calcular sudescomposición LDU y entonces tendremos

A = LDU ⇒ A−1 = U−1D−1L−1.

Page 105: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

A.8. INVERSA DE UNA MATRIZ 103

A.8.4. Entradas/salidas del problema

Recordemos que para calcular la inversa de una matriz dada tendremos:

Datos iniciales o entradas: A invertible, la matriz n × n de la quequeremos calcular su matriz inversa.

Resultado o salida: A−1, la matriz (de orden n) inversa de A; es decir,la matriz tal que AA−1 = A−1A = In.

Page 106: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos
Page 107: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

Bibliografía

[1] S. Brin, L. Page: The Anatomy of a Large-Scale Hypertextual Web SearchEngine, http://infolab.stanford.edu/ backrub/google.html

[2] M. Gasca, J.M. Peña: Total positivity and Neville elimination, LinearAlgebra Appl. 165 (1992) 25-44.

[3] N.J. Higham. Accuracy and Stability of Numerical Algorithms, seconded. SIAM, Philadelphia, PA, 2002.

[4] I. Zaballa: Valores singulares. ¾Qué son?.¾Para qué sirven?,http://www.ehu.es/izaballa

105

Page 108: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos
Page 109: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

Anexo B

Manual de usuario

B.1. Introducción

En este manual se explicará cómo implantar la aplicación en un ordenador(con sistema operativo Windows) y cómo utilizar correctamente la aplicación.Para ello, se utilizarán imágenes y ejemplos ilustrativos y se indicaránsencillos pasos a seguir para: crear y editar matrices, crear y editar métodos,visualizar datos y resolver problemas.

El uso de la aplicación es muy intuitivo, pero la introducción de datospor parte del usuario ha de realizarse utilizando un determinado lenguaje(denominado a lo largo de la memoria pseudocódigo). Por ello, se van amostrar ejemplos que presenten dicho lenguaje y ayuden al usuario a aprendereste pseudocódigo empleado.

B.2. Implantación

Para una correcta implantación de la aplicación en un ordenador y parapoder utilizar la misma es necesario realizar los siguientes pasos:

1. Copiar la carpeta �Aplicación� en la unidad C.

2. Modi�car el �chero �PathSistemas.txt� y añadir el path de tu archivo�math.exe� (el path por defecto al instalar Mathematica es análogo alque el viene).

3. Para iniciar la aplicación: ejecutar el archivo �Aplicación.jar�.

Sólo es necesario realizar estos pasos para realizar la implantación de laaplicación. Una vez implantada, sólo hay que realizar el paso 3 para iniciarla aplicación.

107

Page 110: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

108 ANEXO B. MANUAL DE USUARIO

Nota: no es necesaria la manipulación de las carpetas que hay dentro deldirectorio �Aplicación�.

B.3. Ventana Principal

La Figura B.1 muestra la ventana principal de la aplicación. Paravisualizar una matriz introducida previamente basta con seleccionarla en elpanel superior izquierdo de la ventana; las entradas de la matriz se mostraránen el panel superior derecho. Lo mismo sucede con los métodos, que seencuentran en el panel inferior izquierdo. Observemos que los métodos semuestran indicando sus entradas, sus salidas y el cuerpo del algoritmo enpseudocódigo.

Figura B.1: Ventana Principal.

Nota: la aplicación incluye algunas matrices y algunos métodos deejemplo.

Nota: observemos que los métodos aparecen listados con un códigonumérico que precede a su nombre. Este código indica de una manera rápiday cómoda el tipo de problema que ese método resuelve: 1. Sistema Lineal, 2.Valores Propios, 3. Valores Singulares, 4. Matriz Inversa, 5. DescomposiciónLDU, 6. Crear Matriz implícita.

Page 111: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

B.4. CREAR MATRICES 109

B.4. Crear Matrices

La ventana para crear una matriz puede verse en la Figura B.2. Esimportante introducir el nombre que se desea dar a la matriz, así como susdimensiones y el modo en que se van a introducir sus entradas (de maneraimplícita o explícita). A la hora de crear una matriz de manera explícitadeberemos tener en cuenta los siguientes aspectos:

las �las se separan mediante el operador punto y coma: ;

los elementos de una �la se separan mediante una coma: ,

la coma de los números decimales se representa mediante un punto: .

se pueden utilizar los espacios y saltos de línea que se deseen, dando elformato que le sea más cómodo al usuario a la hora de introducir losdatos

En la mencionada Figura B.2 puede verse un ejemplo de de�nición dematriz.

Figura B.2: Crear Matriz.

B.5. Crear Métodos

Para crear un método debemos introducir su nombre, el tipo de problemaque resuelve, sus entradas, sus salidas y el algoritmo, tal y como puede verse

Page 112: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

110 ANEXO B. MANUAL DE USUARIO

en la Figura B.3.

Figura B.3: Crear Metodo.

A continuación se presentan diferentes ejemplos de programación enpseudocódigo, que serán muy útiles a la hora de programar los métodos quese deseen introducir. Como es habitual, los operadores básicos de suma, resta,producto y cociente se representarán mediante los símbolos: +, -, *, /.

Estructura For

for(i=1;i<=n;i++)

cuerpo del for

End_For

En el ejemplo, la variable i se va incrementando en 1 en cada pasopero por supuesto podría disminuir en cada paso con la orden i--.La condición de �nalización también podría ser distinta: en lugar deutilizar menor o igual (<=), podría ser menor (<), mayor (>), mayoro igual (>=) que un número o una variable.

Estructura If

Page 113: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

B.5. CREAR MÉTODOS 111

if((i<n)&(fin==false))

cuerpo del if

else

cuerpo del else

End_Else

End_If

Como es lógico, una estructura if puede carecer de su estructura else;en este caso, simplemente habrá que omitir el cuerpo del else y laspalabras clave else, End_Else. A la hora de programar condicionesde entrada a una estructura if (o un while) conviene saber que eloperador lógico AND se representa mediante el símbolo &, el operadorlógico OR se representa mediante el símbolo |; mientras que lasconstantes booleanas se representan mediante las palabras clave true

y false respectivamente. La comparación de elementos se realizautilizando el doble igual == y para comprobar si dos elementos sondistintos se utiliza el operador !=.

Estructura While

while((encontrado!=true)|(restantes>0))

cuerpo del while

End_While

Para programar la condición de entrada a la estructura while hayque tener en cuenta las indicaciones hechas en el apartado anterior(estructura If).

Matrices

Paratrabajar con matrices contamos con la función Zeros(n,m), que sirvepara construir una matriz de ceros de n �las y m columnas. Además sepueden construir nuevas matrices, idénticas a otras existentes medianteasignación (nueva_matriz = matriz_existente). Para acceder a laentrada (i, j) de la matriz A se utiliza la sintaxis: A(i,j). Incluso sepuede acceder a una submatriz de A que contenta la �las desde i0 hastaik y las columnas desde j0 hasta jk: A(i0:ik,j0:jk).

De esta forma podremos asignar el valor 1/7 a la entrada (2, 3) dela matriz A: A(2,3)=1/7; o almacenar en la variable aux la primeracolumna de la matriz A: aux=A(1:n,1).

Page 114: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

112 ANEXO B. MANUAL DE USUARIO

B.6. Editar Matrices y Métodos

Editar una matriz o un método existente es una tarea similar a la de creardichos elementos. Al elegir editar una matriz (lo mismo sucede al editarun método o una matriz implícita) aparecerá una ventana como la de laFigura B.4. Lo primero que hay que hacer es seleccionar la matriz que sedesea editar, entonces automáticamente se rellenarán todos los campos conla información actual de dicha matriz; sólo habrá que cambiar los datos quese deseen editar y así se guardará la nueva información. Recordemos que unamatriz creada de manera explícita no puede editarse para que pase a ser unamatriz creada de manera implícita (y viceversa) y para eso será necesariocrear una nueva matriz.

Figura B.4: Editar Matriz.

B.7. Ejemplo de Problema (Sistema Lineal)

Para crear un Problema se abrirá una ventana como la de la Figura B.5.Esta ventana es para crear un problema del tipo Sistema Lineal, para otrosproblemas sería una ventana análoga.

Simplemente habrá que elegir los datos de entrada (en este caso matriz decoe�cientes y vector independiente), el método que lo resuelve (observemosque sólo se nos ofrecen los métodos del tipo de problema correspondiente),

Page 115: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

B.7. EJEMPLO DE PROBLEMA (SISTEMA LINEAL) 113

Figura B.5: Sistema Lineal.

los sistemas de cálculo en los que queremos resolverlo y los métodos decomparación de las soluciones (también se ofrecen las opciones propias decada problema).

Una vez introducida toda esa información, basta con aceptar; el sistemanos preguntará si estamos seguros de resolver el problema con los datosintroducidos y, al con�rmar, se mostrarán tantas ventanas como opcionesde comparación hayan sido seleccionadas.

Page 116: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos
Page 117: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

Anexo C

Actas de reunión

A continuación se muestran las actas de cada reunión realizada duranteel proyecto. Cabe destacar que el proyectante se encuentra realizando susestudios de tesis en la Universidad de Zaragoza mientras se desarrollael presente proyecto. Por ello, la comunicación con la codirectora delproyecto Ana Romero (Universidad de La Rioja) se ha llevado a cabomayoritariamente a través de correo electrónico. No obstante, se incluyenlas actas de las reuniones presenciales. La comunicación con el codirectordel proyecto Juan Manuel Peña (Universidad de Zaragoza) se ha realizadode manera presencial. Aunque se incluyen las actas de las reuniones, se hanobviado los informes periódicos realizados por parte del proyectante.

115

Page 118: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

116 ANEXO C. ACTAS DE REUNIÓN

Acta de reunión

Fecha: 15/01/2012Lugar: Universidad de ZaragozaHora: 13:00Asistentes: Juan Manuel Peña

Álvaro BarrerasTemas tratados: ◦ Planteamiento del proyecto

◦ Requisitos iniciales de la aplicación◦ Propuesta de la idea como proyecto

Temas pendientes: ◦ Elaborar de la propuesta de proyecto◦ Iniciar de trámites necesarios para comenzarel proyecto

Page 119: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

117

Acta de reunión

Fecha: 3/02/2012Lugar: Universidad de La RiojaHora: 18:00Asistentes: Ana Romero

Álvaro BarrerasTemas tratados: ◦ Primera toma de contacto entre proyectante

y codirectora◦ De�nición inicial del proyecto◦ Aspectos generales a tener en cuentadurante el desarrollo del proyecto◦ De�nición de requisitos de la aplicación

Temas pendientes: ◦ Elaborar el DOP

Page 120: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

118 ANEXO C. ACTAS DE REUNIÓN

Acta de reunión

Fecha: 11/04/2012Lugar: Universidad de ZaragozaHora: 13:00Asistentes: Juan Manuel Peña

Álvaro BarrerasTemas tratados: ◦ Revisión del documento de Análisis

◦ Aspectos a incluir en el Resumenmatemático◦ Primer borrador del Resumen matemático

Temas pendientes: ◦ Corregir el documento de Análisis◦ Elaborar el Anexo Resumen matemático

Page 121: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

119

Acta de reunión

Fecha: 28/05/2012Lugar: Universidad de La RiojaHora: 8:30Asistentes: Ana Romero

Álvaro BarrerasTemas tratados: ◦ Revisión de la primera versión del documento

�Diseño� del proyecto◦ De�nición del sistema de �cheros a utilizar◦ Introducción de MathML en el proyecto

Temas pendientes: ◦ Diseño del sistema de �cheros◦ Introducción del lenguaje MathML◦ Versión de�nitiva del Diseño del proyecto

Page 122: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

120 ANEXO C. ACTAS DE REUNIÓN

Acta de reunión

Fecha: 3/09/2012Lugar: Universidad de ZaragozaHora: 13:00Asistentes: Juan Manuel Peña

Álvaro BarrerasTemas tratados: ◦ Modi�cación del Resumen Matemático

◦ Correcciones del documento de �Diseño�

Temas pendientes: ◦ Versión de�nitiva del Anexo Resumenmatemático◦ Aprobación del documento de �Diseño�

Page 123: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

121

Acta de reunión

Fecha: 4/02/2013Lugar: Universidad de ZaragozaHora: 13:00Asistentes: Juan Manuel Peña

Álvaro BarrerasTemas tratados: ◦ Problemas surgidos en la Implementación

◦ Posible rede�nición del alcance �nal dela aplicación

Temas pendientes: ◦ Resolver los problemas sobre laimplementación de la aplicación◦ Redactar el documento de �Implementación�

Page 124: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

122 ANEXO C. ACTAS DE REUNIÓN

Acta de reunión

Fecha: 22/02/2013Lugar: Universidad de La RiojaHora: 18:30Asistentes: Ana Romero

Álvaro BarrerasTemas tratados: ◦ Problemas surgidos en la Implementación

◦ Solución a algunos de esos problemas◦ Rede�nición del alcance �nal de la aplicación

Temas pendientes: ◦ Aplicar solución obtenida para lacomunicación con Mathematica◦ Finalizar la implementación de la aplicación◦ Redactar el documento de �Implementación�

Page 125: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

123

Acta de reunión

Fecha: 5/04/2013Lugar: Universidad de La RiojaHora: 12:00Asistentes: Ana Romero

Álvaro BarrerasTemas tratados: ◦ Entrega del documento �Implementación�

◦ Presentación de la aplicación a la codirectora◦ Solución al problema sobre la comparacióngrá�ca de soluciones◦ Tareas pendientes para la �nalización delproyecto

Temas pendientes: ◦ Versión de�nitiva del documento�Implementación�◦ Corrección de la comparación grá�cade soluciones◦ Añadir apartado sobre pruebas del sistema

Page 126: Aplicación para la experimentación numérica y ... · experimentación numérica dentro del campo del álgebra lineal. ... de descomposición del trabajo (EDT ... comparar datos

124 ANEXO C. ACTAS DE REUNIÓN

Acta de reunión

Fecha: 8/04/2013Lugar: Universidad de ZaragozaHora: 13:00Asistentes: Juan Manuel Peña

Álvaro BarrerasTemas tratados: ◦ Presentación del documento �Implementación�

◦ Presentación del documento �Gestióndel proyecto�◦ Presentación de la aplicación al codirector

Temas pendientes: ◦ Corregir y aprobar el documento�Implementación�◦ Aprobar el documento �Gestióndel proyecto�