Autorizada la entrega del proyecto del alumno: D. Antonio Gordón Romero Madrid, 24 de junio de 2008 EL DIRECTOR DEL PROYECTO Fdo.: Dr. D. Francisco Javier Rodríguez Gómez Vº Bº del Coordinador de Proyectos Fdo.: D. Eduardo Alcalde Lancharro Fecha: ……/ ……/ …… UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO TÉCNICO EN INFORMÁTICA DE GESTIÓN PROYECTO FIN DE CARRERA SOFTWARE DE APLICACIÓN DE LAS TRANSFORMADAS RÁPIDAS DE FOURIER (FFT) AUTOR: ANTONIO GORDÓN ROMERO MADRID, JUNIO DE 2008 Dedicatoria A mi familia y amigos, ya que aunque no me habéis podido ayudar en los números y fórmulas, seréis y sois la luz que me ha guiado durante todo este año de oscuridad y caídas. I Proyecto Fin de Carrera Agradecimientos Agradezco la creación y finalización de este proyecto en primer lugar a mi director de proyecto Francisco Javier Rodríguez Gómez, que confió en mí durante todo este tiempo, y nunca perdió la paciencia. Sin él este proyecto no habría llegado a buen puerto. También quiero agradecer a todas las personas tanto familiares, en especial a mi padre, como amigos que sin querer han puesto un granito de arena para conseguir que este proyecto se convierta de un trabajo pesado a un sueño que significa la culminación de una etapa en mi vida. No tengo palabras solo decir GRACIAS de todo corazón. II Software de Aplicación de la FFT Resumen El objetivo de este proyecto será la aplicación del famoso algoritmo de la Trasformada Discreta de Fourier a distintos problemas en el campo de las matemáticas y los métodos numéricos. El algoritmo de la FFT descubierto por Jean Baptiste Fourier (1768-1830), fue en un primer momento estudiado mucho antes por Gauss, quien ideo un método para descomponer una onda en armónicos simples. Fourier fue más adelante declarando que cualquier onda se puede descomponer en un sumatorio de ondas armónicas sinusoidales puras, que darían como resultado la misma señal origen, es más no hacían falta muchos sumatorios de armónicos con tan solo diez se podría describir la señal origen de manera casi perfecta. Este gran descubrimiento no fue tenido en cuenta hasta bien entrado el s. XX donde en 1965 James Cooley y John Tukey de IBM en su estudio sobre procesamiento de señales digitales redescubrieron y aplicaron esta técnica de Fourier. Esto fue el inicio de la aplicación del algoritmo de la FFT, ya que a partir de ese momento se empezó a aplicar a diversos, campos no solo en procesamiento de señales, sino en todas las ramas de la ciencia. En la actualidad el algoritmo de la FFT tiene multitud de aplicaciones. En este proyecto en especial se estudiará la aplicación de dicho algoritmo en el mundo de las Matemáticas y de Métodos Numéricos. - Multiplicación de números enteros de gran magnitud. III Proyecto Fin de Carrera - Multiplicación de polinomios de cualquier grado. - Interpolación Trigonométrica. - Aproximación rápida de Chebyshev. Como se observa son problemas que, por un lado, usan operaciones que necesitan mucho cálculo y tiempo de procesamiento y, por otro lado, hay operaciones de interpolación de funciones. Todos estos casos, en la actualidad, se resuelven con otras técnicas, que son comúnmente utilizadas por matemáticos e ingenieros. Lo interesante de este proyecto es poder tener los mismos resultados, a ser posible con numerosas ventajas aplicando el algoritmo FFT, tales como más rapidez en el cálculo. Comentar que la aplicación de Fourier a estos problemas son cada vez más utilizadas y dado que son de descubrimiento muy reciente, se pretende dar un enfoque pedagógico, como un objetivo de este proyecto. Todo ello se va a programar en una herramienta matemática de última generación muy utilizada en el ámbito académico y de investigación denominada MATLAB. Esta aplicación posee numerosas bibliotecas con más de trescientas funciones para poder hacer cualquier cálculo. Una de estas bibliotecas es la FFTW que contiene el algoritmo de la FFT y ayudará en el cálculo de los diversos módulos que se irán programando. Además, MATLAB posee una interfaz gráfica llamada GUIDE capaz de programar interfaces gráficas de usuario de manera sencilla, pudiendo hacer más accesible el programa, objetivos también del proyecto. Se diseñará el software sin adecuarse del todo a seguir una metodología típica, IV Software de Aplicación de la FFT como la que se emplea para programar aplicaciones informáticas como es la de Yourdon, sino se aplicará una más adecuada que realiza una simbiosis entre la metodología antes citada con la metodología que frecuentemente se usa para proyectos de carácter matemático, que se resume a continuación. - Una primera parte será de búsqueda de documentación. - Estudio de cada problema. - Obtención final de una lista de requisitos. - Diseño un pseudocódigo de los problemas, programándolos en MATLAB y resolviendo con ellos diversos problemas prácticos que servirán de pruebas. - Seguidamente, cuando se terminen todos los módulos, se empezará con un estudio de arquitectura y un diseño externo de la interfaz. - Finalmente se programará la interfaz gráfica de usuario (GUI). Por último, se trabajará en una guía de instalación donde se explicará de forma esquematizada pero comprensible cómo instalar y ejecutar el programa, para facilitar el aprendizaje del usuario. V Proyecto Fin de Carrera Abstract The objective of this project will be the application of the famous algorithm of the Discreet Transform of Fourier to different problems in the mathematics field and numerical methods. The algorithm of the FFT discovered by Jean Baptiste Fourier (1768-1830) had been formerly studied by Gauss, who devised a method to fragment a wave into simple harmonic waves. Fourier, however, was more advanced declaring that any wave can be fragmented into a number of pure sinusoidal harmonic waves, the sum of which will result in the same original signal, but moreover this number of elements in the sum was not necessary, only ten harmonic waves would be required to obtain the signal of origin in an almost perfect way. This great discovery was not considered until the twentieth century. In 1965 James Cooley and John Tukey of IBM while researching digital signal processing rediscovered the FFT and then applied Fourier's technique to their research. This was the beginning of the application of the algorithm of the FFT, as of that moment it began to apply to diverse fields not only in signal processing, but in all the branches of science. Nowadays when Fourier's name is heard, very few people recognize his name, although with his famous algorithm it is now possible to solve a multitude of cases. In this project especially we will study the uses of this algorithm in the world of the mathematics and numerical methods, which is summed up below: - Multiplication of whole numbers of great magnitude. - Multiplication of polynomials of any degree. VI Software de Aplicación de la FFT - Trigonometrically Interpolation. - Fast Approach of Chebyshev. As it is seen they are problems that on one hand involve operations that need much calculation and time of processing and on the other they involve operations of interpolation of functions. At the present all these cases are solved with other techniques that are commonly used by mathematicians and engineers. The interesting thing of this project is to be able to have same the results, if possible, with numerous advantages, applying the algorithm FFT, such as more speed in the calculation. Nevertheless, the application of Fourier to these problems is not used and in addition they are of very recent discovery, therefore there is no pedagogical explanation of them. As a result, this will become in extra work in the project. All of it will be to programmed in a mathematical tool of last generation, very commonly used in the academic and investigation scopes, called Matlab. This application has numerous bookstores with more than three hundred functions enabling it to make any calculation, one of those bookstores is the FFTW which contains the algorithm of the FFT and will help us in the calculation of the diverse modules that will be programmed. In addition, Matlab has an interface GUIDE which is able to program user interfaces in a simpler way. In order to develop all this it has not been possible to follow a typical methodology used to program computer science applications, as Yourdon, but a more suitable has been used; one that brings together the methodology mentioned before and the following which VII Proyecto Fin de Carrera is frequently used for mathematical projects, which is summed up below: - Firstly search of documentation. - Together with step one; there will be a study of each problem. -Then obtained in the end a list of requirements. - Third a pseudocode will be done of the problems, programming them on Matlab and solving them with problems that will serve as tests. - Next when all the modules are finished, a study of architecture and an external design of the interface will begin. - Finally the graphic user interface will be programmed. To conclude, we will work in an installation guide where we will easily explain how to install and execute, so that the end user does not have any problem. VIII Software de Aplicación de la FFT Índice Dedicatoria ................................................................................................................... I Agradecimientos........................................................................................................... II Resumen....................................................................................................................... III Abstract......................................................................................................................... VI Índice............................................................................................................................ IX 1. Introducción y motivación....................................................................................... . 1 2. Objetivos del proyecto.............................................................................................. 3 3. Análisis de requisitos................................................................................................ 7 3.1. Requisitos funcionales.................................................................................... 7 3.2. Requisitos mantenimiento.............................................................................. 16 3.3. Requisitos de fiabilidad.................................................................................. 17 4. Metodología.............................................................................................................. 18 5. Multiplicación de polinomios................................................................................... 26 5.1. Convolución.................................................................................................... 26 5.2. Multiplicación de polinomios......................................................................... 29 6. Multiplicación de enteros grandes............................................................................ 34 6.1. Multiplicación de enteros............................................................................... 34 7. Interpolación trigonométrica.................................................................................... 40 7.1. Interpolación trigonométrica.......................................................................... 40 8. Aproximación de Chebyshev.................................................................................... 52 8.1. Polinomios de Chebyshev y nodos de Chebyshev......................................... 52 8.2. Aproximación de Chebyshev.......................................................................... 53 9. Estudio de arquitectura............................................................................................. 64 9.1. Especificación de alternativa-1....................................................................... 65 9.2. Especificación de alternativa-2....................................................................... 66 9.3. Valoración de alternativas.............................................................................. 68 IX Proyecto Fin de Carrera 9.3.1. Matriz de evaluación operativa............................................................. 69 9.3.2. Matriz de evaluación técnica................................................................ 70 9.3.3. Matriz de evaluación económica.......................................................... 71 9.3.4. Valoración final de cada alternativa..................................................... 72 9.4. Elección de alternativa.................................................................................... 72 9.5. Planificación temporal del proyecto............................................................... 73 10. Diseño externo........................................................................................................ 75 10.1. Diseño de ventanas....................................................................................... 75 11. Valoración económica............................................................................................ 88 11.1. Introducción................................................................................................... 88 11.2. Técnicas de estimación de costes................................................................. 88 11.3. Costes del proyecto....................................................................................... 91 12. Conclusiones y líneas futuras................................................................................. 93 13. Bibliografía............................................................................................................. 98 Anexo I. Programación y guía de instalación...............................................................101 I.1. Bibliotecas y Funciones MATLAB.................................................................102 I.2. Guía de instalación del software.....................................................................105 CD-ROM con la aplicación y el código de los algoritmos numéricos del Software de aplicación de la Transformada Rápida de Fourier (FFT). X Software de Aplicación de la FFT 1. Introducción y motivación La Transformada Rápida de Fourier (Fast Fourier Transform) (FFT) es un algoritmo eficiente OH log L para calcular la DFT (Transformada Discreta de Fourier). Originalmente descubierta por Gauss a principios de 1800, basándose en la descomposición de señales en armónicos simples ideando un algoritmo que podía descomponer señales y verlas según el dominio de la frecuencia trabajando con ellas, no como fluctuaciones en el tiempo, sino como señales más simples, cada uno de una frecuencia diferente. Redescubierta por Cooley y Tukey en IBM durante 1960. La FFT explota las simetrías en la matriz de Fourier HWL y el teorema de la duplicación basado en el lema de DanielsonLanczos. Hoy en día la Transformada Rápida de Fourier es de gran importancia en una amplia variedad de aplicaciones, desde el tratamiento de señales digitales, como por ejemplo analizar la frecuencia independientemente de la señal que sea, reducción del ruido de las señales, tratamiento de imagen JPEG y audio como es el caso del MP3, solucionar ecuaciones diferenciales parciales (aquellas funciones que contienen derivadas con respecto a dos o más variables), multiplicación rápida de números y polinomios grandes, para los algoritmos de convolución y desconvolución (operador matemático que transforma dos funciones f y g en una tercera función que en cierto sentido representa la magnitud en la que se superponen, f y una versión trasladada e invertida de g) usado para operaciones 1 Proyecto Fin de Carrera estadísticas como el promedio móvil ponderado. Se emplea en el campo de la óptica (dispositivos ópticos 2 D y 3 D), en la ingeniería eléctrica se usa para hallar la salida de un sistema lineal, en la Física allí donde haya un sistema lineal con un "principio de superposición". Como se ve el algoritmo FFT sirve para explicar y solucionar multitud de situaciones en casi todos los campos de la ciencia moderna. La motivación del presente proyecto es realizar un software sencillo e intuitivo capaz de emplear la FFT para realizar diferentes funciones que incorpore los algoritmos que permiten solucionar los problemas científicos antes citados, como multiplicar polinomios de grado alto, resolver ecuaciones diferenciales parciales, determinar los coeficientes de Fourier y de los polinomios trigonométricos, así como el análisis y procesamiento de señales digitales. Otra de las motivaciones es el aprendizaje de programación en la herramienta matemática MATLAB ya que es un lenguaje desconocido y poco utilizado, pero con gran interés para las empresas por su potencia y funcionalidades por eso en la actualidad es de los más demandados. El conocimiento y estudio de la FFT es otra de las motivaciones del proyecto, un algoritmo poco conocido y cuya aplicación a los distintos campos de la ciencia se han descubierto muy recientemente a lo largo del siglo XX. Por último señalar que gracias al estudio de todo lo que se ha dicho anteriormente se ampliarán los conocimientos de matemáticas y métodos numéricos del estudiante. 2 Software de Aplicación de la FFT 2. Objetivos del proyecto El proyecto se inició con unos objetivos que en la medida que el tiempo ha dejado se han cumplido prácticamente en su totalidad. La principal intención del proyecto ha sido la educativa, y la de conocer poco a poco durante el curso, en mayor medida no solo la transformada de Fourier, sino las diferentes aplicaciones donde se puede aplicar, siendo un trabajo costoso y complejo, intentando mostrar a través de un software finalmente sus diferentes opciones de la manera más sencilla posible. A continuación, se comentan los objetivos del proyecto y en qué nivel se han visto satisfechos. 1º. El principal objetivo de este proyecto será diseñar una aplicación informática para Windows XP/Vista que aplique los diferentes algoritmos de la transformada rápida de Fourier (FFT), con el fin de realizar de manera práctica las funciones u operaciones que se explicarán posteriormente y que se han programado en módulos separados. Además la aplicación, desde el lenguaje de MATLAB, utilizará los algoritmos de la biblioteca de funciones FFTW para el cálculo de la transformada rápida de Fourier (FFT) en una o varias dimensiones, de tamaño arbitrario, y empleará estos algoritmos para el cálculo y aplicación en las materias reseñadas. 3 Proyecto Fin de Carrera 1.1. El estudio de la multiplicación de polinomios a través de la FFT, a simple vista parece un tema muy simple, pero se trata de conseguir multiplicar dos polinomios de grado elevado utilizando la técnica de convolución, explicando antes de modo didáctico qué es la convolución, tratando de ir desvelando la relación que existe entre ésta y la multiplicación de polinomios. Hay que destacar que MATLAB no trabaja directamente con polinomios sino que funciona con matrices. Esto que puede resultar una barrera o una limitación, en este caso, al final no lo es tanto, ya que la convolución se define de forma matricial, pudiéndose programar fácilmente con ayuda de la FFT este módulo. 1.2. El estudio de la multiplicación de enteros de gran magnitud a través de la FFT, utilizando la convolución otra vez como herramienta principal. El objetivo del módulo es multiplicar dos números enteros de gran longitud, para la utilización futura como por ejemplo en el campo de cifrado de documentos. Comentar que este módulo sigue la misma filosofía de trabajo que el anterior, además no se han encontrado tanto estudios como documentación donde se demuestre de forma didáctica y aplicada este tema, solamente encontrándose formulación matemática, consiguiéndose con éxito tras finalizar este módulo ver de forma sencilla, el funcionamiento de la convolución y su aplicación para así poderse usar de base para futuros trabajos relacionados. 1.3. Otro de los módulos tratará sobre la Interpolación Trigonométrica. Con ayuda de la FFT se podrá aproximar una función dada por medio del polinomio trigonométrico 4 Software de Aplicación de la FFT interpolador, calculándose de forma separada y diferente sus coeficientes tanto ai como bi , necesarios para la interpolación, según en el intervalo en el que se encuentre la función. El algoritmo podrá interpolar en dos intervalos, tanto en @-p , pD como en @0 , 2 pD. De este tema es posible encontrar abundante documentación, pero no así su relación con la FFT, siendo costoso su estudio. 1.4. La aproximación rápida de Chebyshev es uno de los módulos más interesantes, gracias a una función llamada Trasformada rápida del coseno (CDT), muy cercana a la FFT, pudiéndose programar la CDT a través de la trasformada rápida de Fourier, calculando los coeficientes de Chebyshev de forma fácil y sencilla, con ellos y los famosos polinomios de Chebyshev se hará una interpolación y por consiguiente una aproximación rápida a una función continua dada, todo ello en el intervalo @-1 , 1D, haciendo una trasformación si es necesario si la función se encuentra definida en otro intervalo cualquiera. Reseñándose que de este tema no hay ninguna documentación al respecto solo encontrándose mencionado en un par escaso de libros. 2º. Proponer y realizar distintos problemas de prueba que servirán como ejemplos de utilización de los distintos algoritmos después de cada explicación teórica del caso y de su correspondiente pseudocódigo. Cada módulo dispone de una serie de problemas resueltos como ejemplo de su utilización, con una serie de explicaciones de cómo funciona. 5 Proyecto Fin de Carrera 3º. Desarrollar una GUI (Interfaz Gráfica de Usuario) para la aplicación. La interfaz permite ejecutar los algoritmos en un ambiente más amigable para el usuario gracias a la herramienta que MATLAB posee llamada GUIDE, consiguiéndose así hacer una aplicación de manejo sencillo que se espera que pueda tener un buen uso didáctico, incluso sin tener grandes conocimientos de MATLAB. La dificultad en este objetivo ha sido la programación de la GUI en MATLAB, debido a la escasa documentación en este apartado ya que esta herramienta matemática no se utiliza principalmente para hacer interfaces graficas, pero sí ha sido sencillo acoplar en esa interfaz los diferentes módulos que anteriormente se diseñaron y se programaron con MATLAB. 6 Software de Aplicación de la FFT 3. Análisis de requisitos 3.1 Requisitos funcionales Prioridad Alta RF001. Diseñar Interfaz de Usuario. Se desea diseñar una interfaz de usuario, sencilla e intuitiva, para que la puedan utilizar usuarios que no entiendan MATLAB, pero que sí tengan conocimiento de matemáticas u otras ciencias relacionadas con los módulos. RF001.1. Diseñar ventana de inicio de aplicación. En la ventana de inicio estarán todos los botones para acceder a los módulos de la aplicación, con la explicación de lo que hace cada uno de ellos. Requisitos relacionados: RF001 RF001.2. Diseñar ventana módulo multiplicación de polinomios. En la ventana de este módulo se dispondrá de cajas de textos para que se puedan introducir los datos. En este caso el usuario introducirá en dos pestañas de texto los polinomios a multiplicar. La solución aparecerá en otro cuadro, y si el usuario quisiera ver la operaciones intermedias, podrá hacerlo viendo otro cuadro que no será visible por defecto. Todo estará perfectamente distribuido y explicado con ventanas de información para orientar al usuario en todo momento. 7 Proyecto Fin de Carrera Requisitos relacionados: RF001 RF001.3. Diseñar ventana módulo multiplicación de enteros. En la ventana de este módulo se dispondrá de cajas de textos para que se puedan introducir los datos. En este caso el usuario introducirá en dos pestañas los dos números enteros grandes a multiplicar. La solución aparecerá en otro cuadro de texto. Si el usuario quisiera ver la operaciones intermedias, podrá hacerlo viendo otro cuadro que no será visible por defecto. Todo ello estará perfectamente distribuido y explicado con ventanas de información para orientar al usuario en todo momento. Requisitos relacionados: RF001 RF001.4. Diseñar ventana módulo Interpolación trigonométrica. En la ventana de este módulo, se podrá escribir la función a interpolar en un cuadro de texto, antes el usuario deberá marcar una opción, entre introducir la función en forma de vector o en forma normal, acompañado con el número de puntos de la interpolación. También se tendrá que elegir el intervalo, según sea @-p , pD o @0 , 2 pD. Al hacer la interpolación saldrá el resultado y además un grafico que mostrará la aproximación, mostrándose la función que se ha introducido junto a la nueva. Las operaciones intermedias no serán visibles por defecto pero se podrán ver si el usuario así lo desea. Requisitos relacionados: RF001 RF001.5. Diseñar ventana módulo Aproximación rápida de Chebychev. 8 Software de Aplicación de la FFT Se dispondrá en esta ventana de un cuadro donde se escribirá la función que se desea aproximar por Chebyshev, además de indicar el intervalo y el número de puntos escogidos también. El módulo dará como resultado la función que se aproximará a la propuesta. Esto se podrá ver en una gráfica donde se representarán la función original y la interpolada por Chebyshev. Las operaciones intermedias no serán visibles por defecto pero se podrán ver si el usuario así lo desea. Requisitos relacionados: RF001 RF002. Diseñar módulos de aplicación. La aplicación constará de cuatro módulos que se diseñarán de manera independiente, cada módulo podrá ejecutarse de manera individual, viendo los resultados fácilmente. Cada vez que un módulo se haya terminado, se diseñará su interfaz, implantándola después en el programa principal. RF002.1. Diseñar módulo multiplicación de polinomios. Se diseñará el módulo teniendo en cuenta no solo que los polinomios se introducirán en forma de vector, sino que al final se tendrá que trasformar el vector resultante de la multiplicación en forma polinómica para que el usuario pueda verlo de forma sencilla. En este módulo no solo se ha tenido en cuenta el uso de la función fft y la propiedad de la convolución, sino que desde el principio los resultados se meterán todos en un fichero de texto, para en un futuro visualizarlos en una interfaz gráfica, por ello se va a tener que hacer una parte del diseño para poder trasformar el resultado que será un 9 Proyecto Fin de Carrera polinomio, en forma de string, ya que el módulo trabajará con variables simbólicas, y por limitaciones del software de programación, en este caso MATLAB, es imposible grabar en un fichero variables de este tipo. Requisitos relacionados: RF002 RF002.2. Diseñar módulo multiplicación de enteros. Al diseñarse el módulo de multiplicación de enteros, se tienen que tener en cuenta dos factores. Uno es que los números dados van a ir en formato string y por consiguiente se van a tener que pasar a vectores de formato long. El segundo es que los vectores tienen que operarse de forma inversa teniendo que hacer estas dos cosas en una función aparte, que se explicará a continuación. En este módulo se utilizará la función fft y la propiedad de la convolución y además el paso de todos los resultados a fichero de texto para que en un futuro se visualicen en una interfaz gráfica. Requisitos relacionados: RF002 RF002.2.1. Diseñar módulo cadena a enteros. Se programará un sencillo módulo para pasar las cadenas de números enteros en forma de string a formato long, transformándose el vector, poniendo las coordenadas de forma inversa y devolviendo el resultado para las futuras operaciones. Requisitos relacionados: RF002.2 RF002.3. Diseñar módulo Interpolación trigonométrica. 10 Software de Aplicación de la FFT Se diseñará y programará un módulo de interpolación trigonométrica donde el usuario podrá hacer la interpolación introduciendo una función continua o un vector de coordenadas pares correspondientes a los valores de una función. Según se haya introducido un intervalo u otro @-p, pD o @0, 2 pD el algoritmo hará operaciones diferentes, llamando al final al algoritmo de la fft para realizar los cálculos necesarios. Por último, se tendrá que introducir el número de puntos de la interpolación, siempre un número par de puntos. Se obtendrá al final el polinomios interpolador, guardando todas las operaciones relevantes en un archivo de texto para su futura visualización. Requisitos relacionados: RF002 RF002.4. Diseñar módulo Aproximación de Chebychev. Se programará un algoritmo capaz de calcular la aproximación rápida de Chebyshev. El usuario tendrá que introducir una función continua, junto con su intervalo @-1, 1D. Si no se introduce ese intervalo el algoritmo reajustará el intervalo para que valga. Por último, se introducirá el número de puntos. Utilizando la función de la DCT (trasformada discreta del coseno) con FFT, se calcularán los coeficientes de Chebyshev, y tras esto se llamará a otra función que calculará los polinomios de Chebyshev. El resultado será el polinomio de aproximación de Chebyshev. Todas las operaciones intermedias se guardarán en fichero de texto para futuras visualizaciones. Requisitos relacionados: RF002 RF002.4.1. Diseñar módulo polinomios de Chebychev. 11 Proyecto Fin de Carrera Se introducirá en este módulo el grado del polinomio de Chebyshev, y el módulo calculará el polinomio de ese grado, devolviendo el resultado para utilizarlo en el módulo de aproximación rápida de Chebyshev. Requisitos relacionados: RF002.4 RF002.4.2. Diseñar módulo DCT con FFT. Se sabe que la Trasformada discreta del coseno tiene relación con la Trasformada discreta de Fourier. Sabiendo esto se diseñará un algoritmo capaz de conseguir la DCT de un vector dado llamando a la función fft que posee MATLAB. Requisitos relacionados: RF002.4 Prioridad Media RF003. Mostrar gráficas de los resultados obtenidos. En las ventanas de los módulos de aproximación rápida de Chebyshev y de Interpolación Trigonométrica es interesante no solo poder ver las operaciones intermedias que hace el algoritmo y el resultado final, sino poder observar en una gráfica las aproximaciones, con la función original. Se va a introducir en la ventana de dichos módulos un apartado para ver los resultados de forma grafica, de manera sencilla y simple. Requisitos relacionados: RF001.4 Requisitos relacionados: RF001.5 12 Software de Aplicación de la FFT RF004. Mostrar ventana información sobre funciones en MATLAB. En los módulos de aproximación rápida de Chebyshev y de Interpolación Trigonométrica se pondrá en la ventana del interfaz del usuario un botón de información. En estos módulos se introduce una función como datos de entrada, pero al hacerse pueden quedar dudas de cómo se escriben algunas expresiones en el lenguaje MATLAB. Para ayudar al usuario y remediar posibles fallos en su escritura se diseñará una ventana informativa que el usuario podrá consultar en todo momento, viendo en ella de forma clara cómo se escriben las expresiones en MATLAB y solucionar así cualquier problema que pueda surgir. Requisitos relacionados: RF001.4 Requisitos relacionados: RF001.5 RF005. Mostrar ayuda de la ventana de menú. Se diseñará una pequeña ventana de ayuda que se visualizará al apretar un botón de información en la ventana principal de la aplicación, orientando al usuario y diciéndole qué posibles acciones puede hacer y así ser más cómoda la navegación por la interfaz desde el principio. Requisitos relacionados: RF001.1 RF006. Mostrar ayuda de la ventana de Multiplicación de enteros. Se diseñará una pequeña ventana de ayuda que se visualizará al apretar un botón de 13 Proyecto Fin de Carrera ayuda en la ventana de Multiplicación de enteros, guiando paso a paso al usuario. Será una guía de usuario pero de forma simplificada, con la información ordenada para que el usuario al leerla solo una vez, pueda saber qué hacer en el módulo, manejando la aplicación con soltura desde el primer momento. Requisitos realacionados: RF001.2 RF007. Mostrar ayuda de la ventana de Multiplicación de polinomios. Se diseñará una pequeña ventana de ayuda que se visualizará al apretar un botón de ayuda en la ventana de Multiplicación de polinomios, guiando paso a paso al usuario. Será una guía de usuario pero de forma simplificada, con la información ordenada para que el usuario al leerla solo una vez, pueda saber qué hacer en el módulo, manejando la aplicación con soltura desde el primer momento. Requisitos relacionados: RF001.3 RF008. Mostrar ayuda de la ventana de Interpolación Trigonométrica. Se diseñará una pequeña ventana de ayuda que se visualizará al apretar un botón de ayuda en la ventana de Interpolación Trigonométrica, guiando paso a paso al usuario. Será una guía de usuario pero de forma simplificada, con la información ordenada para que el usuario al leerla solo una vez, pueda saber qué hacer en el módulo, manejando la aplicación con soltura desde el primer momento. Requisitos relacionados: RF001.4 14 Software de Aplicación de la FFT RF009. Mostrar ayuda de la ventana de Aproximación rápida de Chebyshev. Se diseñará una pequeña ventana de ayuda que se visualizará al apretar un botón de ayuda en la ventana de Aproximación rápida de Chebyshev, guiando paso a paso al usuario. Será una guía de usuario pero de forma simplificada, con la información ordenada para que el usuario al leerla solo una vez, pueda saber qué hacer en el módulo, manejando la aplicación con soltura desde el primer momento. Requisitos relacionados: RF001.5 RF010. Mostrar ventana de Error. Se diseñará una pequeña ventana de Error para los módulos de la aplicación que sean necesarios, avisando al usuario de que ha ocurrido durante el trascurso de las operaciones algún fallo, cometido por introducirse erróneamente un dato de entrada. Se informará detalladamente el fallo escribiéndose el fichero de texto que creará el módulo para que el usuario pueda verlo en la ventana de operaciones. Requisitos relacionados: RFI001 RF011. Guardar resultados en ficheros Matlab. Se programarán los módulos de tal forma que los resultados se guardarán en ficheros de texto para su utilización en las salidas de la interfaz gráfica o para que el usuario pueda guardar una vez finalizados los cálculos los resultados para poder utilizarlos en acciones futuras. Se crearán los ficheros de manera que se podrá actualizar cada vez que se haga una nueva operación, no borrándose lo anterior. Cada módulo posee su fichero de 15 Proyecto Fin de Carrera texto individual. Requisitos realacionados: RF001.2 Requisitos realacionados: RF001.3 Requisitos realacionados: RF001.4 Requisitos realacionados: RF001.5 3.2 Requisitos mantenimiento Prioridad alta RM001. Crear guía de instalación y usuario. Se creará dentro del proyecto una guía de instalación y de usuario ya que se pueden encontrar posibles problemas al instalar el software MATLAB. Además aunque la aplicación se ha pensado de manera que para el usuario sea lo más sencilla posible se pondrá una breve guía resolviéndose así todas las dudas posibles. 16 Software de Aplicación de la FFT 3.3 Requisitos de fiabilidad Prioridad alta RFI001. Verificación de los datos de entrada. Se programarán los módulos para que el usuario no pueda introducir datos de entrada erróneos, validándolos y avisándose seguidamente si el usuario introduce una variable incorrecta por medio de una ventana de diálogo. Requisitos relacionados: RF001.2 Requisitos relacionados: RF001.3 Requisitos relacionados: RF001.4 Requisitos relacionados: RF001.5 17 Proyecto Fin de Carrera 4. Metodología Dado que el proyecto que se presenta no es un desarrollo de software estándar sino una aplicación matemática, para el cual un ingeniero en informática se podría valer de metodologías de ingeniería del software clásicas, en este caso el proyecto ha obligado a definir una metodología distinta para el diseño y programación de los diferentes módulos. En parte porque para afrontar la parte de diseño de la interfaz gráfica se ha seguido un modelo estructurado de Yourdon, que es el caso clásico en el diseño de una aplicación informática, pero solo aplicando algunas fases ya que esta metodologia posee fases que en este proyecto no tiene sentido hacerlas. Se han intentado seguir unos pasos formales y la metodología resultante se mostrará a continuación. Se han estipulado los paquetes de trabajo que se indican más adelante, además de venir definidas qué tareas se va a realizar en cada caso. 18 Software de Aplicación de la FFT Software de aplicación de la FFT WP 00 WP 01 WP 02 Gestión Conceptos Codificación Pruebas Creación Generales Algoritmos de Algoritmo GUI WP 02.1 Programación WP 03 WP 04 WP 05 Conclusiones WP 03.1 Generación de Problemas WP 04.1 WP 04.2 Estudio de Diseño Externo WP 01.1 WP 01.2 WP 01.3 WP 01.4 Búsqueda de Identificación Análisis de Diseñar información de Necesidades Requisitos Arquitectura Pseudocódico WP.00 - Gestión Definición: El paquete de Gestión no se refiere a una tarea que tardará un tiempo determinado, sino que durará todo desarrollo del proyecto hasta su finalización. Se trata de las diferentes entrevistas que se producirán a lo largo del ciclo del diseño del proyecto, programando reuniones semanales o quincenales, vigilando con esto la correcta realización de los contenidos del proyecto. Así mismo, se incluye en este paquete todo el trabajo que tenga que ver con el seguimiento del correcto funcionamiento del proyecto, como por 19 Proyecto Fin de Carrera ejemplo las fases de pruebas finales. Entradas: Entregables del proyecto en distintas fases de realización. Salidas: Las entradas revisadas y modificadas si se creyera necesario. WP.01.1 - Búsqueda de la información Definición: Antes de empezar a diseñar y programar nada se tendrá que estudiar el tema tanto de la Trasformada rápida de Fourier como del lenguaje MATLAB con el que se va a programar y las diferentes herramientas auxiliares para realizar la documentación. La información se ha buscado tanto en bibliotecas; publicaciones de libros y ensayos matemáticos y de telecomunicaciones, como en Internet, siendo esta última fuente de poca ayuda. Al contrario de lo que cabría esperar ya que todas las publicaciones ubicadas en Internet son de uso privado y restringido, por lo tanto inaccesibles. Entradas: No hay entradas ya que se trata solo de la búsqueda de información. Salidas: Será la información necesaria para poder empezar a diseñar los módulos de la aplicación. WP.01.2 - Identificación de necesidades Definición: Se trata de uno de los procesos en el ciclo de desarrollo de una aplicación en Yourdon. Una vez obtenida la información y estudiándose toda la teoría matemática a fondo, se procederá a identificar las necesidades del usuario que en un 20 Software de Aplicación de la FFT principio utilizaría la aplicación, con ayuda de las entrevistas semanales se acotará el entorno global del problema en estudio, produciéndose al final los objetivos generales del sistema. Entradas: Se tendrán en cuenta todas la ideas y propuestas que tenga el posible usuario que utilizará en un futuro la aplicación. Salidas: Serán los objetivos concretos del proyecto, el alcance, tipología de usuarios finales, restricciones, produciendo lo que se llama, documento de conceptos del sistema, que en el proyecto se ha denominado objetivos. WP.01.3 - Análisis de requisitos Definición: Una vez terminado el documento de conceptos del sistema se procederá al análisis de requisitos, en él se escribirá y analizará todo lo que el sistema hará, una vez se finalice el proyecto. Teniendo el alcance y los objetivos se clasificarán según su prioridad y la tipología del requisito. Esta parte del proyecto es una de las más importantes ya que todo lo que se apruebe aquí, será la columna vertebral del proyecto, teniendo en cuenta esto a lo largo de su diseño y desarrollo. Entradas: Se utilizarán los objetivos que se han obtenido antes en el módulo anterior como punto de partida. Salidas: Será la lista de requisitos y la estructura de los módulos para su posterior 21 Proyecto Fin de Carrera diseño y programación. WP.01.4 - Diseñar pseudocódigo Definición: Se diseñará cada módulo en pseudocódigo cumpliendo con los requisitos antes citados. Cuando se termine cada pseudocódigo se revisará, se corregirá y se pasará a la siguiente fase del ciclo de vida del proyecto, así con cada uno de los módulos. Usando un lenguaje en pseudocódigo fácil e intuitivo, basándonos en la teoría matemática se harán los diferentes algoritmos para después programarlos. Entradas: Se dispondrá de los requisitos y los documentos de teoría matemática que explican cada uno de los diferentes métodos de utilización de la FFT. Salidas: Como salida se tendrán los diseños en pseudocódigo para finalmente implantarlo en la programación. WP.02.1 - Programación Definición: Cuando se diseñe y finalice el pseudocódigo se programará el algoritmo en lenguaje MATLAB, programando también un código de prueba junto a él para poderse probar y saber si funciona de manera satisfactoria. Entradas: Basándose en los pseudocódigos se programarán los módulos. Salidas: Como salida se tendrá los módulos programados en MATLAB junto a los ficheros también en MATLAB de prueba, para saber si los cálculos se hacen correctamente 22 Software de Aplicación de la FFT y poder modificarse si fuera necesario. WP.03.1 - Generación de problemas Definición: Para poder probar los algoritmos, además de los ficheros MATLAB de prueba iniciales se dispondrá de diferentes problemas sacados de diferentes libros de Métodos Numéricos, con diferentes datos para poder saber si los módulos funcionan en todas sus casuísticas, cambiando y modificando los programas en caso de errores en su funcionamiento y volviendo a diseñar el pseudocódigo. Entradas: Como entrada se tendrá tanto los módulos programados como los diferentes problemas planteados. Salidas: Como salida se tendrá los resultados junto con los errores, que se considerarán las pruebas de la aplicación. Con ellas se mejorará el rendimiento de la aplicación y se eliminarán posibles defectos. WP.04.1 - Diseño externo Definición: Dentro del diseño externo se tendrá especial atención en el diseño de entradas, es decir, en el diseño y programación de cada una de las ventanas de la aplicación, una vez terminado todas las programaciones de los módulos en MATLAB. Se programarán las ventanas en MATLAB con la herramienta GUIDE, para hacer una interfaz de usuario intuitiva y sencilla. Entradas: Se dispondrá de los módulos en MATLAB junto con el análisis de 23 Proyecto Fin de Carrera requisitos para saber cómo se diseñarán las ventanas de la interfaz de usuario. Salidas: Como salida se tendrán los diseños de las ventanas de cada módulo, para programarlas en GUIDE. WP.04.2 - Estudio de arquitectura Definición: En esta fase se estudiará el último punto del método de Yourdon que se utilizará para seguir la metodología de diseño de una aplicación informática. En el estudio de arquitectura se tendrá el estudio de las diferentes alternativas de implantación de la aplicación. Poniendo la mejor alternativa que se utilizar a posteriori tanto Hardware como Software. En esta parte también se tendrá en cuenta la planificación que se ha seguido durante todo el año. Entradas: Tanto los requisitos como la información sobre las diferentes alternativas en la implantación a utilizar. Salidas: Especificación lógica de la solución elegida y Planificación del proyecto a desarrollar. WP.05 - Conclusiones Definición: En esta fase se redactarán las conclusiones del proyecto. Se intentará que no tengan un nivel muy avanzado y que sean de fácil comprensión con un lenguaje adaptado a personas que no necesariamente tengan que estar muy preparadas en el campo de la transformada de Fourier. El contenido de estas conclusiones será el grado de 24 Software de Aplicación de la FFT cumplimiento de los objetivos y las dificultades que se han tenido al realizar las diferentes aplicaciones del algoritmo de Fourier y las posibles mejoras y añadidos que en un futuro podría tener la aplicación. Entradas: Toda la información generada a lo largo del proyecto. Salidas: El apartado de conclusiones del proyecto. 25 Proyecto Fin de Carrera 5. Multiplicación de polinomios 5.1 Convolución 1. Definicion de Convolución y Producto de Convolución discreta de vectores. Sean x, y dos vectores de dimensión . El producto de convolución se define como el vector x * y: x* y = x0 x1 x2 x3 ... x-2 x-1 x -1 x0 x1 x2 ... x -3 x -2 x -2 x -1 x0 x1 ... x -4 x -3 ... ... ... ... ... ... ... x2 x1 y0 x3 x2 y1 x4 x3 y2 x5 x4 . y3 ... ... ... x0 x -1 y -2 x1 x0 y -1 (1) La n - ésima componente del producto de convolución x * y viene dado por las expresiones Hx * yLn = y0 xn + y1 xn-1 + ... + yn x0 + yn+1 x -1 + ... + y-1 xn+1 , n -1 j=0 j=n+1 Hx * yLn = ‚ y j xn- j + ‚ y j x +n- j = ‚ y j xk + j+k=n ‚ y j xk . j+k=+1 26 (2) Software de Aplicación de la FFT La matriz cuadrada anterior se la llama circulante (los elementos de la primera columna rotan su posición en las columnas sucesivas). También se puede ver que la primera columna es el vector x y que posee una diagonal constante y en cada diagonal paralela a ella todos los elementos son iguales. Por tanto, se puede expresar el producto de convolución como: x * y = C HxL y (3) donde C HxL es la matriz circulante generada por x. Además existe una relación entre las matrices circulantes y la transformada discreta de Fourier. Siendo C HxL matriz circulante, como consecuencia es diagonalizable (una matriz A œ Mn de dimensión n x n es diagonalizable si existe una matriz P œ Mn , denominada de paso, inversible tal que P-1 A P = D es diagonal) tomando como matriz de paso , se dice que: H L-1 C HxL = L (4) siendo L la matriz de autovalores formada por una matriz diagonal cuyos elementos diagonales son en el mismo orden los de b = DFT HxL. Es decir, L = diagH bi L. Operando resulta: C HxL = L C HxL = LH L-1 1 C HxL = L (5) Con esto se pasa a ver un teorema que permite calcular el producto de convolución empleando la transformada discreta de Fourier. 27 Proyecto Fin de Carrera ô Teorema 1. Producto de Hadamard ( b.g) Sean las transformadas discretas de Fourier b = DFT HyL = y y g = DFT HzL = z, entonces el producto de convolución x * y será: y * z = C HyL z = 1 L z = 1 L g Con esto y viendo como es la estructura de b, L = diagH bi L y del vector g se dice que el producto L g es un vector que se obtiene multiplicando b y g coordenada a coordenada, es decir, HL gLn = bn gn : b= b0 b1 ... b0 0 0 b1 L= ... ... 0 0 , b -1 b0 0 0 b1 Lg = ... ... 0 0 ... 0 ... 0 , ... ... ... b -1 g0 g1 g= , ... g -1 g0 ... 0 b0 g0 g1 ... 0 b1 g1 . = . ... ... ... ... ... b -1 g -1 b -1 g -1 Como conclusión a esto se dice que para el cálculo del producto de convolución y * z requiere obtener las DFT de los vectores y y z, se multiplican coordenada a coordenada, y luego se realiza la transformada inversa de Fourier: y*z = 1 L g = 1 H b.gL = IDFTH b.gL. 28 (6) Software de Aplicación de la FFT 5.2 Multiplicación de polinomios Se emplea la convolución para multiplicar polinomios. Sean los polinomios pHxL de grado n y qHxL de grado m. El producto pHxL qHxL es otro polinomio de grado n + m cuyos coeficientes se calculan de la siguiente forma: 1. En primer lugar se toman los vectores c p y cq que contienen los coeficientes de pHxL y qHxL respectivamente en potencias decrecientes de x y se rellenan con ceros hasta la dimensión n + m + 1. 2. El producto de convolución c p * cq es el vector de los coeficientes de pHxL.qHxL en potencias decrecientes de x que lo se llamará r. Se toman las transformadas discretas de Fourier b = DFTHc p L y g = DFT Hcq L, obteniendo: c p * cq = 1 n+m+1 n+m+1 H b.gL = IDFTH b.gL c p * cq = Hrn+m , rn+m-1 , ..., r2 , r1 , r0 LT . Por tanto, si se dispone en forma de polinomio se tiene la expresión: pHxL qHxL = rn+m xn+m + rn+m-1 xn+m-1 + ... + r2 x2 + r1 x + r0 . è Algoritmo 1. Multiplicación por convolución de polinomios grandes. Multiplicación de polinomios H* Los argumentos que recibe la función son y, 29 Proyecto Fin de Carrera H* Los argumentos que recibe la función son y, z dos vectores, donde se guardan los coeficientes de las x de cada polinomio. Se devolverá un polinomio resultado de la multiplicación realizada con la FFT *L Input HHyL, Hz LL H* Declaración variable simbólica*L x ≠ simbólica HxL H* Tamaño del primer y segundo vector *L n ≠ longitud HyL m ≠ longitud HzL H* Grado de los vectores *L grado_ 1 ≠ longitud HyL - 1 grado_ 2 ≠ longitud HzL - 1 H* Tamaño de la matriz inversa de Fourier n+m+1 *L n+m+1 ≠ n + m + 1 H* Se igualan los tañamos de los vectores, llenándolos con 0 *L For i = n + 1, n + 2, n + 3, ..., n+m+1 do yi ≠ 0 End For i = m + 1, m + 2, m + 3, ..., n+m+1 do zi ≠ 0 End H* Se hece la trasformada rápida de Fourier de cada vector *L bi ≠ fft HyL gi ≠ fft HzL H* Se multiplican las dos matrices * L ai ≠ bi µ gi H* Se hace la trasformada rápida inversa de Fourier de ai *L wi ≠ ifft HaL H* Se eliminan los ceros del final *L For i = 1, 2, 3, ..., Hgrado_ 1 + grado_ 2L do Ri ≠ wi 30 Software de Aplicación de la FFT End (* Se pasa el vector a forma polinómica *) For i = 1, 2, 3, ..., Hgrado_ 1 + grado_ 2L do Fi ≠ Ri * x Hgrado_ 1 + grado_ 2L+1-iL End For i = 1, 2, 3, ..., Hgrado_ 1 + grado_ 2L do End F ≠ SHFi L Return HHF L L Output à Ejemplo 1. Sean los polinomios pHxL y qHxL dados. Hallar el producto pHxL qHxL mediante el empleo del producto de convolución. a) b) pHxL = 2 x3 - 3 x2 + x - 55, pHxL = 4 x3 + 3 x2 + 2 x + 1, qHxL = x3 + 5 x2 - 10 x + 13. qHxL = 4 x4 - 3 x3 + 2 x2 - x + 1. à Solución apartado a) % Polinomio 1 º H2 ∗ x ^ 3 − 3 ∗ x ^ 2 + x − 55L y = @2; −3; 1; −55D; % Polinomio 2 Hx ^ 3 + 5 ∗ x ^ 2 − 10 x + 13L z = @1; 5; −10; 13D; X = Multiplicacion_de _Polinomios Hy, zL; y = 2 − 3 1 − 55 0 0 0 0 0 z = 1 5 − 10 13 0 0 0 0 0 % FFT HyL Y= −55.0000 27.3755 + 48.5750 i 28.0394 − 45.0190 i −52.0000 + 3.4641 i 33.0851 + 49.3002 i 33.0851 − 49.3002 i −52.0000 − 3.4641 i 31 Proyecto Fin de Carrera 28.0394 + 45.0190 i 27.3755 − 48.5750 i % FFT HzL Z= 9.0000 −3.4063 − 4.6242 i 4.7652 + 9.7545 i 16.5000 − 12.9904 i −17.8589 − 19.3963 i −17.8589 + 19.3963 i 16.5000 + 12.9904 i 4.7652 − 9.7545 i −3.4063 + 4.6242 i % Vector resultante del producto de convolución R= 2.0000 7.0000 −34.0000 6.0000 −324.0000 563.0000 −715.0000 % Resultado en forma polinómica 6 5 4 3 2 2 x + 7 x − 34 x + 6 x − 324 x + 563 x − 715 à Solución apartado b) % Polinomio 1 º H4 x ^ 3 + 3 x ^ 2 + 2 x + 1L y = @4; 3; 2; 1D; % Polinomio 2 º H4 x ^ 4 − 3 x ^ 3 + 2 x ^ 2 − x + 1L z = @4; −3; 2; −1; 1D; X = Multiplicacion_de _Polinomios Hy, zL; y=4 3 2 1 0 0 0 0 0 0 z = 4 −3 2 −1 1 0 0 0 0 0 % FFT HyL Y= 10.0000 32 Software de Aplicación de la FFT 6.7361 − 4.6165 i 2.5000 − 3.4410 i 2.2639 − 1.0898 i 2.5000 − 0.8123 i 2.0000 2.5000 + 0.8123 i 2.2639 + 1.0898 i 2.5000 + 3.4410 i 6.7361 + 4.6165 i % FFT HzL Z= 3.0000 1.6910 + 0.2245 i 2.5729 + 2.0409 i 2.8090 + 2.4899 i 5.9271 + 5.2043 i 11.0000 5.9271 − 5.2043 i 2.8090 − 2.4899 i 2.5729 − 2.0409 i 1.6910 − 0.2245 i % Vector resultante del producto de convolución R= 16.0000 −0.0000 7.0000 0.0000 2.0000 3.0000 1.0000 1.0000 % Resultado en forma polinómica 7 5 3 2 16 x + 7 x + 2 x + 3 x + x + 1 33 Proyecto Fin de Carrera 6. Multiplicación de enteros grandes 6.1 Multiplicación de enteros Se empleará la convolución para multiplicar enteros de gran tamaño. Sean los vectores A de dimensión n y B de dimensión m . El producto A B es otro vector C de dimensión n + m + 1 que tendrá el resultado del producto de convolución expresado de la forma siguiente: C0 100 + C1 101 + C2 102 + ... ... .. + Cn-2 10n-2 + Cn-1 10n-1 + Cn 10n . (7) Se multiplicarán dos números enteros muy grandes siguiendo los pasos siguientes: 1. En primer lugar se toman los vectores A y B que contienen las cifras de los números puestas de forma inversa, es decir las unidades irán en la primera posición del vector, las decenas en la segunda posición, etc. Se rellenarán con ceros los vectores hasta la dimensión n + m + 1. 2. Se usan las transformadas discretas de Fourier b = DFT HAL y g = DFTHBL, obteniendo: A*B = 1 n+m+1 n+m+1 Hb.gL = IDFT H b.gL A * B = HC0 , C1 , ..., Cn-2 , Cn-1 , Cn LT . Por tanto, dispuesto el resultado en el orden adecuado, se obtiene el número resultante del producto: 34 Software de Aplicación de la FFT A B = C0 100 + C1 101 + C2 102 + ... ... .. + Cn-2 10n-2 + Cn-1 10n-1 + Cn 10n . è Algoritmo 2. Multiplicación por convolución de dos números enteros grandes. Multiplicación de números enteros grandes H* Los argumentos que recibe la función son y , y z que son dos cadenas de caracteres donde se guardan los dos números. Se devolverá una variable resultado de la multiplicación realizada con la FFT *L Input HHyL, Hz LL H* Se llama a la funcion Cadena_de_Enteros_a_vector para pasa las dos cadenas de caracteres a vectores *L Y ≠ Cadena_de _Enteros _a _vector HyL Z ≠ Cadena_de _Enteros _a _vector HzL H* Tamaño del primer vector *L n ≠ longitud HY L H* Tamaño del segundo vector *L m ≠ longitudHZ L H* Tamaño de la matriz Inversa de Fourier n+m+1 *L n+m+1 ≠ n + m + 1 H* Se igualan los tañamos de los vectores, llenándolos con 0 *L For i = n + 1, n + 2, n + 3, ..., n+m+1 do Yi ≠ 0 End For i = m + 1, m + 2, m + 3, ..., n+m+1 do Zi ≠ 0 35 Proyecto Fin de Carrera End H* Se haca la trasformada rápida de Fourier de cada vector *L bi ≠ fftHY L gi ≠ fftHZL H* Se multiplican las dos matrices *L ai ≠ bi µ gi H* Se hace la trasformada rápida inversa de Fourier de ai *L wi ≠ ifftHaL H* Se convierte el vector a número *L For i = 1, 2, 3, ..., n+m+1 do Ji ≠ wi µ 10i-1 End For i = 1, 2, 3, ..., Hgrado_ 1 + grado_ 2L do J ≠ SHJi L End Return HJ L Output è Algoritmo 3. Conversión de cadena de caracteres a vector. El argumento que recibe la función y es una cadenas de caracteres donde se guarda el número. Se devolverá un vector donde se irán guardando las cifras puestas inversamente del numero dado. Conversión de cadena de caracteres a vector Input HHyLL H* Tamaño de la cadena de caracteres *L n ≠ longitud HyL H* Se pasa la cadena al vector llamando a la función str2num. *L H* Esta función transforma un caracter yHiL de la cadena a entero. *L For i = 1, 2, 3, ..., n do Vi ≠ str2numHyHn - i + 1L End 36 Software de Aplicación de la FFT Return HV L Output à Ejemplo 2. Sean dos números enteros 2.345.677.889.993.453.465.349 y 35.235.235.252.353.253.255 dados. Hallar el producto mediante el empleo del producto de convolución. à Solución a = ' 2 345 677 889 993 453 465 349 '; b = ' 35 235 235 252 353 253 255 '; S = Multiplicacion_de _Enteros Ha, bL; % FFT HaL Y= 1.0 e + 002 ∗ 1.2300 −0.0521 − 0.7968 i −0.0744 + 0.1642 i 0.2159 − 0.1268 i 0.0748 − 0.1188 i −0.0143 − 0.1135 i 0.0147 + 0.0420 i 0.0932 + 0.0110 i 0.1069 − 0.0313 i 0.0351 − 0.0257 i 0.0848 + 0.0361 i 0.1242 + 0.0130 i 0.1511 − 0.0572 i 0.0587 − 0.0892 i 0.0248 − 0.0358 i 0.0433 + 0.0208 i 0.0920 − 0.0011 i 0.0825 − 0.0193 i 0.0532 − 0.0428 i 0.0307 + 0.0187 i 0.0849 + 0.0184 i 0.0849 − 0.0184 i 0.0307 − 0.0187 i 0.0532 + 0.0428 i 0.0825 + 0.0193 i 0.0920 + 0.0011 i 0.0433 − 0.0208 i 0.0248 + 0.0358 i 0.0587 + 0.0892 i 0.1511 + 0.0572 i 0.1242 − 0.0130 i 37 Proyecto Fin de Carrera 0.0848 − 0.0361 i 0.0351 + 0.0257 i 0.1069 + 0.0313 i 0.0932 − 0.0110 i 0.0147 − 0.0420 i −0.0143 + 0.1135 i 0.0748 + 0.1188 i 0.2159 + 0.1268 i −0.0744 − 0.1642 i −0.0521 + 0.7968 i % FFT HbL Z= 70.0000 7.0736 − 43.9634 i 0.5056 − 0.3351 i 6.9568 − 13.6612 i 1.2270 − 0.5053 i 6.8344 − 7.8495 i 1.3599 − 0.0750 i 8.3503 − 5.3707 i 1.0527 − 2.4993 i 5.6105 − 3.3450 i 1.2999 + 1.6988 i 13.3073 − 1.8327 i 2.5414 − 7.7762 i 9.2568 − 2.9295 i −0.1125 − 15.6934 i −8.7465 + 1.4154 i 4.6226 + 3.0401 i 3.1238 − 3.4136 i −1.0351 − 2.3406 i −0.6865 + 2.9046 i 4.9581 + 2.6797 i 4.9581 − 2.6797 i −0.6865 − 2.9046 i −1.0351 + 2.3406 i 3.1238 + 3.4136 i 4.6226 − 3.0401 i −8.7465 − 1.4154 i −0.1125 + 15.6934 i 9.2568 + 2.9295 i 2.5414 + 7.7762 i 13.3073 + 1.8327 i 1.2999 − 1.6988 i 5.6105 + 3.3450 i 1.0527 + 2.4993 i 8.3503 + 5.3707 i 1.3599 + 0.0750 i 6.8344 + 7.8495 i 1.2270 + 0.5053 i 38 Software de Aplicación de la FFT 6.9568 + 13.6612 i 0.5056 + 0.3351 i 7.0736 + 43.9634 i % Resultado del producto de convolución S = 8.2651 e + 040 39 Proyecto Fin de Carrera 7. Interpolación trigonométrica 7.1 Interpolación trigonométrica 1. Definicion de Polinomio trigonométrico interpolador. Como se ha comentado anteriormente en la introduccíón una de las aplicaciones prácticas de la trasformada rápida de Fourier es el cálculo en un periodo T del polinomio trigonométrico que interpola una función real. m-1 Se el conjunto de 2 m puntos 8xi , yi <2i=0 que dividen uniformemente el intervalo cerrado @-p, pD, siendo las abscisas xi : ip xi = -p + m i = 0, 1, ..., 2 m - 1 (8) y sus ordenadas yi = f Hxi L. El polinomio trigonométrico interpolador que pasa por estos puntos de grado m - ésimo tiene la expresión: Sm HxL = a0 2 + am cosHm xL 2 m-1 + ‚ Hai cosHi xL + bi senHi xLL (9) i=1 siendo las constantes 8ai < y 8bi < de Sm HxL ai = bi = 1 m 1 m 2 m-1 ‚ y j cosHi x j L j=0 2 m-1 ‚ y j senHi x j L j Hi = 0, 1, 2, ..., mL (10) Hi = 1, 2, ..., m - 1L. Descripción de cálculo de los coeficientes del polinomio trigonométrico en [-p, p] 40 Software de Aplicación de la FFT El polinomio trigonométrico que interpola = 2 m = 2 p puntos en @-p, pD tiene la expresión: Sm HxL = ai = bi = 1 m 1 m a0 2 + am cosHm xL 2 2 m-1 ‚ y j cosHi x j L j=0 2 m-1 ‚ y j senHi x j L j=0 m-1 + ‚ Hai cosHi xL + bi senHi xLL, i=1 Hi = 0, 1, 2, ..., mL (11) Hi = 1, 2, ..., m - 1L. Para poder calcular los coeficientes 8ai < y 8bi < del polinomio trigonométrico interpolador nos tendremos que basar en el algoritmo de la transformada rápida de Fourier HFFT L o método de Cooley-Tukey. ô Teorema 2. Método de Cooley-Tukey El método consiste en organizar el número de puntos a usar de tal modo que sea un potencia de dos. Además no se evaluarán directamente los coeficientes 8ai < y 8bi < de la fórmula anterior, sino que se tendrá que calcular los coeficientes complejos 8ci <. La expresión de estos coeficientes complejos se deduce tomando la expresión compleja ai -  bi , cuyo valor es: ai -  bi = 1 m-1 A⁄2j=0 m y j cosHi x j L -  y j senHi x j LE, Hi = 0, 1, 2, ..., mL. Aplicando la fórmula de Euler se obtiene: ai -  bi = 1 m m-1 y j e- i x j , ⁄2j=0 Hi = 0, 1, 2, ..., mL. Como los puntos donde se interpola son @-p, pD y tienen por abscisas a 41 Proyecto Fin de Carrera x j = -p + jp m para j = 0, 1, ..., 2 m - 1, entonces: - i J-p+ jp N ai -  bi = 1 m m-1 yj e ⁄2j=0 ai -  bi = 1 m m-1 y j e- 2 p i jêH2 mL e p i ⁄2j=0 ai -  bi = 1 m m , m-1 H-1Li ⁄2j=0 y j e- 2 p i jêH2 mL Hi = 0, 1, 2, ..., mL. Tomando el valor del coeficiente complejo ci como el valor del sumatorio, por lo que la relación entre los coeficientes 8ai < y 8bi < del polinomio y 8ci < viene dada por: ai -  bi = 1 m H-1Li ci , m-1 ci = ⁄2j=0 y j e- 2 p i jêH2 mL m-1 ci = ⁄2j=0 y j W2 m -i j ô Hi = 0, 1, 2, ..., mL. Como conclusión se establece que, los coeficientes complejos 8ci < se corresponden con las componentes de la transformada discreta de Fourier c = b = DFT HyL: m-1 ci = bi = ⁄2j=0 y j W2 m -i j Hi = 0, 1, 2, ..., 2 m - 1L. m-1 Por tanto, teniendo el conjunto de = 2 m = 2 p puntos 8xi , yi <2i=0 que dividen uniformemente el intervalo cerrado @-p, pD, siendo las abscisas xi xi = -p + ip m i = 0, 1, ..., 2 m - 1, y sus ordenadas yi = f Hxi L. Si b = c = DFT HyL es la transformada discreta de Fourier del vector y, entonces el polinomio trigonométrico interpolador de grado m - ésimo que satisface Sm Hxi L = yi para i = 0, 1, 2, ..., 2 m - 1 tiene la expresión: Sm HxL = a0 2 + am cosHm xL 2 + ⁄m-1 i=1 Hai cosHi xL + bi senHi xLL 42 Software de Aplicación de la FFT siendo las constantes 8ai < y 8bi < de Sm HxL: ai -  bi = a0 = b0 , m H-1Li m bi , am = ai = H-1Li ReH bi L m bi = H-1Li -ImHbi L m bm m = e- p i m ReHbi L, = - e m ImH bi L , - p i Hi = 1, 2, ..., m - 1L. Descripción de cálculo de los coeficientes del polinomio trigonométrico en [0 2p] La transformada discreta de Fourier b = DFT HyL depende de las ordenadas yi , por lo que su valor para un vector y no dependerá de las abscisas xi . Por tanto, si se tiene una función f HxL definida en el intervalo @-p, pD y se quiere saber el polinomio trigonométrico que interpola los puntos 8xi , yi <i=0 pero para los mismos puntos equistantes en el intervalo @0, 2 pD con las mismas ordenadas yi , se debe realizar un cambio de intervalo de @-p, pD a @0, 2 pD. La nueva función gHzL definida sobre éste nuevo intervalo se obtiene con el cambio de variable x = z - p: x œ @-p, pD, z œ @0, 2 pD, z= x+p fl x = z-p f HxL fl gHzL = f Hz - pL (12) Cambiando de variable para definir el polinomio trigonométrico interpolador en @0, 2 pD se tiene la expresión de Sm HzL: 43 Proyecto Fin de Carrera a0 Sm HzL = 2 + am cosHm Hz - pLL 2 m-1 + ‚ Hai cosHi Hz - pLL + bi senHi Hz - pLLL, (13) i=1 y empleando las fórmulas trigonométricas: ai cosHi Hz - pLL = ai 8cosHi zL cosH-i pL + senHi zL senH-i pL < = H-1Li ai cosHi zL bi senHi Hz - pLL = (14) bi 8senHi zL cosH-i pL - cosHi zL senH-i pL < = H-1Li bi senHi zL se reescribe el polinomio trigonométrico: a0 Sm HzL = 2 + H-1L a0 = b0 m , ai = H-1Li bi = H-1Li m am cosHm zL 2 am = m-1 + H-1L ‚ Hai cosHi zL + bi senHi zLL i i=1 bm ReH bi L m (15) m -ImH bi L Hi = 1, 2, , ..., m - 1L. m m-1 Luego, dado el conjunto de = 2 m puntos 8xi , yi <2i=0 que dividen uniformemente el intervalo cerrado @0, 2 pD, siendo las abscisas xi xi = ip m i = 0, 1, ..., 2 m - 1, y sus ordenadas yi = f Hxi L. Y sea b = DFT HyL la transformada discreta de Fourier del vector y. El polinomio trigonométrico interpolador de grado m - ésimo que satisface Sm Hxi L = yi para i = 0, 1, 2, ..., 2 m - 1 tiene la expresión: Sm HxL = a0 2 + am cosHm xL 2 + ⁄m-1 i=1 Hai cosHi xL + bi senHi xLL siendo las constantes 8ai < y 8bi < de Sm HxL a0 = b0 , m am = bm m 44 Software de Aplicación de la FFT ai = ReHbi L , m bi = -ImH bi L , m Hi = 1, 2, ..., m - 1L. è Algoritmo 4. Polinomio trigonométrico interpolador en [-p, p] y [0, 2p] usando la FFT con el teorema de duplicación Polinomio trigonométrico interpolador en [ -p p, p ] y [ 0, p ] usando la FFT H* Los argumentos que recibe la función son y , que es la función a interpolar y0 es un parametro para saber si la función a interpolar esta es forma de vector o en forma de función N es el número de puntos y por último int que es el intervalo . Se devolverá una variable S que sera el polinomio interpolado en ese intervalo *L Input HHyL, HY0 L, HN L, HintLL H* Cálculos previos *L M ≠ N ê2 P ≠ Log2H2 * M L H* Intervalo @ -p, p D *L If int <> @0, 2 pD (* Cálculo de xi*) For i = 1, 2, 3, ..., N do Xi ,1 ≠ intH1L + HHi - 1L * intH2LL ê M End (* Cálculo de yi*) If Y0 ã 0 For l = 1, 2, 3, ..., N do Yl ,1 ≠ sustituir H y ,Xl ,1 M 45 Proyecto Fin de Carrera End Else For j = 1, 2, 3, ..., N do Yl ,1 ≠ yH jL End End (* Cálculo de Beta*) Beta ≠ fft HYL (* Primer elemento del vector "a" del polinomio de interpolacion*) a 1 ≠ BetaH1L ê M (* Último elemento del vector "a" del polinomio de interpolacion*) a M +1 ≠ Beta(M+1) / M (* Cálculo del resto del vector "a" y el vector "b"*) For t = 2, 3, ..., M do a t ≠ parte_real HH-e H p * t L * i L ê ML * parte_realHBetaHtLL bt ≠ - parte_real HH-e H p * t L * i L ê ML * parte_imaginariaHBetaHtLL End For p = 2, 3, ..., M do Z p ≠ a p * cosHHp-1L*xL + bt * sinHHp-1L*xL End (* S m es la función de interpolación*) S m ≠ Ha 1 ê 2 L + Ha M +1 * cosHM* xL ê2 L + ⁄M j=2 Z j L Else 46 Software de Aplicación de la FFT (* Intervalo @0, 2 pD*) (* Cálculo de xi*) For i = 1, 2, 3, ..., N do Xi ,1 ≠ HHi - 1L * pL ê M End (* Cálculo de yi*) If Y0 ã 0 For l = 1, 2, 3, ..., N do Yl ,1 ≠ sustituir H y ,Xl ,1 M End Else For j = 1, 2, 3, ..., N do Yl ,1 ≠ yH jL End End (* Cálculo de Beta*) Beta ≠ fft HYL (* Primer elemento del vector "a" del polinomio de interpolacion*) a 1 ≠ BetaH1L ê M (* Último elemento del vector "a" del polinomio de interpolacion*) a M +1 ≠ Beta(M+1) / M (* Cálculo del resto del vector "a" y el vector "b"*) For t = 2, 3, ..., M do a t ≠ parte_real HBetaHtL ) / M 47 Proyecto Fin de Carrera bt ≠ - parte_imaginaria HBetaHtL ê ML End For p = 2, 3, ..., M do Z p ≠ a p * cosHHp-1L*xL + bt * sinHHp-1L*xL End (* S m es la función de interpolación*) S m ≠ Ha 1 ê 2 L + Ha M +1 * cosHM* xL ê2 L + ⁄M j=2 Z j L End Return HS L Output à Ejemplo 3. Sea f HxL = xHp - xL definida en @-p, pD. Determinar el polinomio trigonométrico interpolante S4 HxL que aproxima a f HxL, aplicando la transformada rápida de Fourier HFFT L . Se tomarán = 2 m = 2 p = 8 puntos con m = 4 y p = 3. Representar las funciones f HxL y S4 HxL. à Solución y = ' HHxL ∗ Hpi − HxLLL '; % En forma de función y0 = 0; int = @−pi; piD; n = 8; x= −3.1416 −2.3562 −1.5708 −0.7854 0 0.7854 1.5708 2.3562 y = −19.7392 −12.9539 −7.4022 48 Software de Aplicación de la FFT −3.0843 0 1.8506 2.4674 1.8506 beta = −37.0110 −26.7181 + 23.8273 i −14.8044 + 9.8696 i −12.7603 + 4.0881 i −12.3370 −12.7603 − 4.0881 i −14.8044 − 9.8696 i −26.7181 − 23.8273 i a = −9.2528 6.6795 b=0 − 2.4674 5.9568 − 3.7011 1.0220 % Resultado final Sm 49 3.1901 − 3.0843 Proyecto Fin de Carrera Gráfica de f (x) = x*(pi-x) y de p (x) 10 f (x) = x*(pi-x) p (x) 5 0 Y -5 -10 -15 -20 -25 -4 -3 -2 -1 0 X 1 2 3 4 Gráficas de f HxL = x * Hp - xL y pHxL = S4 HxL Figura 1 à Ejemplo 3. Sea f HxL = 3 ê H5 - 4 * cos HxLL definida en @-p, pD. Determinar el polinomio trigonométrico interpolante S4 HxL que aproxima a f HxL, aplicando la transformada rápida de Fourier HFFT L . Se tomarán = 2 m = 2 p = 8 puntos con m = 4 y p = 3. Representar las funciones f HxL y S4 HxL. à Solución y = ' 3. ê H5 − 4. ∗ cos HxLL '; y0 = 0; int = @−pi; piD; n = 8; x = −3.1416 −2.3562 −1.5708 −0.7854 0 0.7854 1.5708 2.3562 y = 0.3333 0.3832 0.6000 1.3815 3.0000 50 Software de Aplicación de la FFT 1.3815 0.6000 0.3832 beta = 8.0627 −4.0784 2.1333 −1.2549 1.0039 −1.2549 2.1333 −4.0784 a = 2.0157 1.0196 0.5333 0.3137 0.2510 b=0 0 0 0 % Resultado final Sm Gráfica de f (x) = 3/(5-4*cos (x)) y de p (x) 3 f (x) = 3/(5-4*cos (x)) p (x) 2.5 Y 2 1.5 1 0.5 0 -4 -3 -2 -1 0 X 1 2 3 Gráficas de f HxL = 3 ê H5 - 4 * cos HxLL y pHxL = S4 HxL Figura 2 51 4 Proyecto Fin de Carrera 8. Aproximación de Chebyshev 8.1 Polinomios de Chebyshev y nodos de Chebyshev 1. Relación de recurrencia Los polinomios de Chebyshev se generan a partir de la relación de recurrencia siguiente: T0 HxL = 1 T1 HxL = x T2 HxL = 2 x2 - 1 T3 HxL = 4 x3 - 3 x ... ... .. Tk HxL = 2 x Tk-1 HxL - Tk-2 HxL (16) Hk > 2L. 2. Representación trigonométrica en @-1, 1D El polinomio de Chebyschev verifica: Tn HxL = cosHn arccosHxLL H-1 § x § 1L. (17) 3. Ceros simples en @-1, 1D y en el intervalo [a, b] El polinomio Tn HxL tiene n ceros distintos, los puntos xi , que se encuentran todos en el intervalo @-1, 1D, llamándose a estos ceros nodos o abscisas de Chebychev. El valor de estos nodos es xi = cos H2 i + 1L p 2n H0 § i § n - 1L. 52 (18) Software de Aplicación de la FFT Pero también se puede considerar los polinomios de Chebyshev definidos en un intervalo cerrado general @a, bD, para lo cual los nodos de interpolación de Chebyshev se calculan realizando el cambio de variable siguiente: x= b-a 2 x œ @-1, 1D, z+ a +b H0 § i § n - 1L 2 z œ @a, bD (19) que transforma los números xi del intervalo @-1, 1D en el correspondientes número zi del intervalo @a, bD. Por tanto, los nodos o abscisas de Chebyshev correspondientes a Tn HxL ª Tn HzL, definido en @a, bD son: xi = b-a 2 cos H2 i + 1L p 2n + a +b 2 H0 § i § n - 1L (20) 4. La extrema de Chebyshev Los polinomios Tn HxL = cosHn arccosHxLL tienen la propiedad tal que 1 § Tn HxL § 1. Además, Tn HxL toma los extremos + 1, esto es que, Tn Hx r L = ≤1 en: xr = cos qr = cosK rp O Hr = 0, 1, ... .... L. (21) porque Tn Hx r L= cos qr = cos r p = ≤ 1. 8.2 Aproximación de Chebyshev El polinomio de aproximación de Chebyshev pn HxL de grado menor o igual a n para una función f HxL definida en @-1, 1D se puede escribir como la suma ponderada de los polinomio de Chebyshev 8Tk HxL<: f HxL º pn HxL = ⁄nk=0 ck Tk HxL en la que los coeficientes 8ck < se calculan de la siguiente manera: 53 Proyecto Fin de Carrera ck = IDCT H f HxLL H0 § k § nL. (22) donde IDCT es la Transformada discreta del coseno inversa de la función f HxL, pudiéndose calcular la IDCT como 2 DCT. Se verá ahora cómo se relacionan la FFT con la DCT, ya que el objetivo es calcular la aproximación rápida de Chebyshev con la trasformada rápida de Fourier. ô Relación entre la FFT y DCT Sea la DFT la trasformada discreta de Fourier de longitud 2 usándose el vector x que se utilizaría para la DCT de longitud + 1, x = Ax0, x1, ..., xn E, entonces: 2 -1 Xr = ⁄ l=0 - donde w2 = ‰ 2 jp 2 rl xl w 2 Hr = 0, 1, 2, ..., 2 - 1L = cosI p M - j senI p M, y xn+1, xn+2, , ..., x2 n-1 son los elementos añadidos al vector original x, simétricos a xn , x2 -l ª xl Hl = 0, 1, 2, ..., L. Se obtiene la DCT de longitud + 1 enbebida dentro de la FFT de longitud 2 como se verá a continuación. 54 Software de Aplicación de la FFT 2 -1 Xr = ⁄ 2 l=0 -1 = ⁄ xl w rl l=0 2 -1 rl = ⁄ xl w ô Hr = 0, 1, 2, ..., 2 - 1L rl xl w l=0 2 -1 rl = ⁄ xl w l=0 2 -1 rl l=0 2 = ⁄ xl w -1 2 -1 + ⁄ 2 l= r H2 -lL +⁄ x l=1 2 -l rH2 L + w 2 w 2 -r l l=1 2 -r l l=1 2 -r l =2 -1 rl l=1 2 2 -1 + ⁄ xl cosI l=1 + x 2 l=1 = x0 + H-1L x + ⁄ xl H w r = 1 2 -1 2 r 2 ‹ w + ⁄ xl w rl x0 + H-1L x H ‹ x2 -l = xl L ⁄ x w + ⁄ xl w = x0 + ⁄ xl w l=0 rl xl w prl 2 -r l + w 2 L -r w 2 2 ‹ w = -1 2 M = 2 Cr HDonde Cr y Xr son valores realesL Con esto, si @C0 , C1 , ..., C D = DCTIAx0, x1, ..., xn EM son los resultados deseados de la Traformada discreta del coseno y @X0 , X1 , ..., X D = DFTIAx0, x1, ..., xn EM, siendo estos los resultados de la traformada discreta de Fourier entonces: @C0 , C1 ... .. C D = 1 2 @X0 , X1 ... .. X D. 55 Proyecto Fin de Carrera Como conclusión la tarea para programar la DCT de longitud + 1 se puede llevar a cabo programando la DFT de longitud 2 pudiendo ser implementada con un algoritmo FFT O H log L. è Algoritmo 5. Polinomios de Chebyshev Polinomio de Chebyshev de grado N H* Los argumentos que recibe la función son n , que es el grado del polinomio de Chebyshev que se desea construir, como resultado se obtendrá el polinomio de grado n *L Input HHnLL H* Inicializaciones *L t0 ≠ 1 t1 ≠ [1 0] H* Se calculan los coeficientes del polinomio. *L if n ã 0 T ≠ t0 else if Hn ã 1L T ≠ t1 else For k = 2, 3, ..., n do T ≠ @2* t1 0D - @0 0 t0 D t0 ≠ t1 t1 ≠ T End End 56 Software de Aplicación de la FFT H* Con los coeficientes se construye el polinomio. *L For i = 1, 2, ..., n + 1 do FHi,1L ≠ TH1,i L * y HHn+1L-iL End (* Sumatorio del vector para tener el polinomio completo. *) F ≠ ⁄n+1 i=1 FHi,1L Return HF L Output è Algoritmo 6. Algoritmo de la Transformada discreta del coseno DCT con la función de la Transformada rápida de Fourier Algoritmo de la DCT con FFT H* Los argumentos que recibe la función son x que es el vector al que se le va a aplicar la Trasformada Discreta del coseno por medio del algoritmo de la FFT que posee MATLAB, como resultado se obtendrá la DCT del vector*L Input HHxLL H* Se calcula la longitud del vector *L N ≠ longitudHxL H* Paso del vector de N a 2N. *L For i = 1, 2, ..., N do rHi,1L ≠ xHN -i + 1, 1L End For i = N + 1, N + 2, ..., 2 N do 57 Proyecto Fin de Carrera rHi,1L ≠ xHi- N , 1L End (* Traspuesta del vector. *) r ≠ r' (* Se llama al algoritmo de la FFT. *) C ≠ fftHrL (* Se pasa FFT a DCT. *) For i = 0, 1, ..., 2 * N - 1 do cambioHiL ≠e H- j * 2 * p * HN -0.5L * i ê H2*N L L End For j = 0, 1, ..., 2 * N - 1 do f H jL ≠ real(CH jL /cambioH jL ) End For k = 1, 2, ..., N do DHkL ≠ f HkL /,(2*N) End DH1L ≠ DH1L /,2 Return HDL Output è Algoritmo 7. Algotitmo de aproximación rápida de Chebyshev en intervalo [ -1, 1 ] Algoritmo Aproximación rápida de Chebyshev 58 Software de Aplicación de la FFT H* Los argumentos que recibe la función son int que es el intervalo de la interpolación, N que será el número de puntos y por último f es la función continua que se va a interpolar, el resultado del módulo es la función aproximada por Chebyshev *L Input HHint, N , f LL H* Declaración de la variable simbólica *L y ≠ symsH' y 'L H* Se comprueba que el intervalo es H-1;1L. *L if Hint ã H-1; 1LL H* Se calculan los nodos de Chebyshev. *L if HN ã 1L nodos ≠ @0D else For i = 0, 1, ..., N +1do nodosH1,iL ≠ cosHH2*i+1L* pL ê HH2*NL+2L End H* Evaluación en los nodos de la función a interpolar. *L For j = 1, 2, ..., N do ZH j,1L ≠ f I nodosH1, jL M End End else H* Cálculo los nodos de Chebyshev. *L if HN ã 1L nodos ≠ @0D 59 Proyecto Fin de Carrera else For i = 0, 1, ..., N +1 do nodosH1,iL ≠ HHintH2L - intH1L L ê 2L * cosHH2 * i + 1L * pL ê H2 * N L L + HHintH1L - intH2L L ê 2L End H* Evaluación en los nodos de la función a interpolar. *L For j = 1, 2, ..., N do ZH j,1L ≠ f I nodosH1, jL M End End End H* Se llama a la función de la DCT . *L C ≠ H2 ê HN + 1L L * DCT_ _con_ _FFTHZL H* Se calcula el polinomio de Chebyshev . *L For i = 1, 2, ..., N + 1 do T ≠Polinomio_De_Chebyshev_grado_n(i-1) RHi,1L ≠ CHiL * T End (*Sumatorio del vector para tener el polinomio completo. *) R ≠ ⁄n+1 i=1 RHi,1L Return HRL Output 60 Software de Aplicación de la FFT Ejemplo 4. Sea la función f HxL = e-x . a) Calcular los polinomios de Chebyshev p2 HxL y p3 HxL que aproximan la función en el intervalo @-1, 1D . b) Dibujar las funciones f HxL y el polinomio pHxL que lo aproxima. à Solución f = exp H−xL; int = @−1; 1D; N = 3; % Nodos de Chebyshev 0.9239 0.3827 − 0.3827 − 0.9239 % Sustitución de los nodos en la función f z = 0.3970 0.6820 1.4662 2.5190 % Coeficientes de Chebyshev c = 1.2661 − 0.799 0.1919 − 0.0310 % Polinomios de Chebyshev 1 y 2 ∗ y^2 − 1 4 ∗ y^3 − 3 ∗ y % Aproximación y resultado final 61 Proyecto Fin de Carrera Gráfica de f (x) = exp (-x) y de p (x) 25 f (x) = exp (-x) p (x) 20 Y 15 10 5 0 -5 -4 -3 -2 -1 0 X 1 2 3 4 Gráficas de f HxL = e-x y pHxL. Figura 3 à Ejemplo 5. Sea la función f HxL = 1 . Ix2 +1M a) Calcular los polinomios de Chebyshev p2 HxL y p3 HxL que aproximan la función en el intervalo @-1, 1D . b) Dibujar las funciones f HxL y el polinomio pHxL que lo aproxima. à Solución f = 1 ê HHx ^ 2L + 1L; int = @−1; 1D; N = 3; % Nodos de Chebyshev 0.9239 0.3827 − 0.3827 − 0.9239 % Sustitución de los nodos en la función f z = 0.5395 0.8723 0.8723 0.5395 % Coeficientes de Chebyshev c = 0.7059 0 − 0.1664 0 62 Software de Aplicación de la FFT % Polinomios de Chebyshev 1 y 2 ∗ y^2 − 1 4 ∗ y^3 − 3 ∗ y % Aproximación y resultado final Gráfica de f(x) = 1/(x 2+1) y de p(x) 1 f(x) = 1/(x 2+1) p(x) 0.95 0.9 0.85 Y 0.8 0.75 0.7 0.65 0.6 0.55 0.5 -1 -0.8 -0.6 -0.4 -0.2 Gráficas de f HxL = 0 X 1 Ix2 + 1M Figura 4 63 0.2 0.4 y pHxL. 0.6 0.8 1 Proyecto Fin de Carrera 9. Estudio de arquitectura A continuación se estudiarán las alternativas propuestas para la implantación de proyecto. De cada alternativa se propondrán tanto los elementos Software con Hardware que mejor convendrían para la realización de la aplicación, haciendo seguidamente un estudio contemplando diferentes ámbitos y sacando unas conclusiones, eligiéndose al final la mejor propuesta. Los componente software que se proponen a continuación son los básicos para desarrollar cualquier aplicación matemática. En primer lugar un sistema operativo comercial, después un procesador de textos, luego una herramienta matemática con la que se pude programar y hacer cálculos y por último un software que permita general ficheros PDF en los que se pueda presentar la documentación. En cuanto a los componentes hardware las dos alternativas propuestas son prácticamente la mismo ya que solo hace falta un ordenador para el desarrollo y ejecución de la aplicación ya sea de sobremesa o sea un ordenador portátil. Una vez se seleccione la alternativa se establecerá una planificación temporal del proyecto, viéndose cada una de las etapas que se han comentado antes en la metodología, viendo de forma aproximada el reparto de tiempo en cada una de las fases. 64 Software de Aplicación de la FFT 9.1 Especificación de alternativa-1 à TÍTULO / CÓDIGO Aplicación Software FFT con Mathematica (FFT01) Área Matemáticas y Métodos Numéricos. Antecedentes Se sabe de la implantación de otros sistema y aplicaciones matemáticas construidas con esta herramienta Mathematica obteniendo muy buenos resultados, además es una de las más importantes el sector, siendo una alternativa fiable y probada por muchos usuarios. Además es una de las mejores aplicaciones que trabaja con variables simbólicas y cálculo simbólico y muy fiable ejecutándose bajo Windows. Requisitos Se necesita de un ordenador capaz de soportar una gran cantidad de operaciones con cálculos muy pesados ya que se utilizarán variables de gran magnitud y complejidad. Además la GUI se debe programar en Java 2 SE, y se conoce la compatibilidad de las dos herramientas. Tanto Mathematica como Java se pueden integrar sin ningún problema, por eso es necesario que el sistema donde vaya a funcionar y ejecutar tenga la aplicación JDK (Java Development Kit). Por último, comentar que la documentación se haría en Microsoft Office, herramienta líder en el sector y que tendrá que estar instalada en el sistema. Necesidades Software æ Sistema Operativo Windows XP SP2 Home Edition. 65 Proyecto Fin de Carrera æ Software Ofimático Microsoft Office Vista Proffesional Edition. æ Software Matemático Mathematica 6.0. æ JDK Java 2 SE con etbeans 6.1. æ Adobe Acrobat 8 Proffesional. Necesidades Hardware æ Ordenador personal con procesador Intel Pentium IV 1,8 GHz, con 1 GB de memoria RAM, disco duro de 80 GB , tarjeta gráfica de 128 MB y unidad lectora de CD-DVD. 9.2 Especificación de alternativa-2 à TÍTULO / CÓDIGO Aplicación Software FFT con Matlab (FFT02) Área Matemáticas y Métodos Numéricos. Antecedentes 66 Software de Aplicación de la FFT La herramienta matemática Matlab es una de las más importantes en el sector, usada por usuarios que necesitan no solo potencia y rapidez en el cálculo, sino hacer módulos y aplicaciones informáticas de manera sencilla. Gracias a su cómoda interfaz GUIDE se pueden construir interfaces de usuario con la misma herramienta sin tener que utilizar otro sistema. Además es compatible con todos los lenguajes de programación, pudiendo trasportar la aplicación a cualquier otro sistema. También se conoce que se usa en el campo de los métodos numéricos y de telecomunicaciones. Requisitos Se necesita un ordenador capaz de soportar una gran cantidad de operaciones con cálculos muy pesados ya que se utilizarán variables de gran magnitud y complejidad. La documentación se hará en la herramienta Mathematica ya que se necesitan escribir multitud de fórmulas y teorías matemáticas, siendo de fácil manejo. También cuenta con opciones de procesador de textos cómoda y sencilla, pudiéndose redactar la documentación y poderla maquetar de forma elegante. Por último, el sistema deberá tener instalado Windows Vista, aunque es un sistema operativo nuevo en el mercado es totalmente compatible y funciona perfectamente tanto con Matlab como con Mathematica. Necesidades Software æ Sistema Operativo Windows Vista Home Edition. æ Software Matemático Matlab 7.0. 67 Proyecto Fin de Carrera Software Matemático Mathematica 6.0. æ PDF Creator. Necesidades Hardware æ Ordenador personal con procesador Intel Core 2 Duo 2,33 GHz, con 2 GB de memoria RAM, disco duro de 80 GB, tarjeta gráfica de 128 MB y unidad lectora de CD-DVD. 9.3 Valoración de alternativas Para saber cuál de las dos alternativas se elegirá se crearán tres matrices de evaluación, que se expondrán a continuación. Cada una tratará sobre tres aspectos de interés, evaluación operativa, técnica y económica. La matriz tendrá una serie de diferentes aspectos o características dependiendo de la organización, del negocio al que se dedica y del sistema en estudio, asignando a cada uno un peso que oscilaran entre los valores 1 y 3, siendo 1 el peso menor y por lo tanto teniendo la valoración más baja, o teniendo un 3 que será el que tendrá mayor relevancia dentro de la aplicación. Seguidamente se valorarán los parámetros tratados en cada una de las alternativas según el grado de cumplimiento que la alternativa tiene de ese parámetro dando una puntuación. Estos valores oscilan entre el 1 y el 3, siendo el 1 el valor que se refiere al poco cumplimiento del parámetro y el 3 correspondiendo a un cumplimiento perfecto. 68 Software de Aplicación de la FFT Por último, para obtener la puntuación total de la alternativa se multiplicará cada parámetro el peso con su puntuación obtenida teniendo su valor total. Seguidamente se sumarán todos los valores totales de cada uno de los parámetros teniendo el resultado final de cada alternativa. La que tenga valor más alto será a que tenga mejor valoración y por lo tanto la que se aplique al proyecto. 9.3.1 Matriz de evaluación operativa 1 ALTER@ATIVAS Parámetros ê Peso Puntuación 2 Valor Puntuación Valor Fiabilidad de los datos H3L 3 9 3 9 Facilidad de uso y manejo 2 6 3 9 Control de sistema H2L 2 4 2 4 Agilidad de la aplicación H3L 2 6 3 9 Seguridad H1L 1 1 2 2 aplicación H3L TOTAL 26 69 33 Proyecto Fin de Carrera 9.3.2 Matriz de evaluación técnica 1 ALTER@ATIVAS Parámetros ê Peso Puntuación 2 Valor Puntuación Valor Requisitos Software H3L 3 9 3 9 Requisitos Hadware H3L 2 6 3 9 Portabilidad software H3L 2 4 2 4 Compatibilidad con otros lenguajes H2L 2 4 3 6 Manejo de caracteres simbólicos H3L 3 9 2 6 3 6 3 6 2 2 2 2 1 3 3 9 2 6 3 9 Potencia de calculo H2L Mantenibilidad del sistema H1L Biblioteca con FFT H3L Opciones de creación GUI H3L TOTAL 49 70 60 Software de Aplicación de la FFT 9.3.3 Matriz de evaluación económica Costes de implantación ALTER@ATIVAS Parámetros ê Peso Puntuación 1 Valor Puntuación 2 Valor Coste de desarrollo H3L 3 9 3 9 Costes de puesta en marcha H2L 2 6 2 6 2 4 2 4 Coste de formación H1L Costes de tecnología Coste Hardware H2L 2 4 3 6 Coste Software H3L 1 3 3 9 Costes operacionales Costes de mantenimiento y mejora H1L TOTAL 2 2 28 71 2 2 36 Proyecto Fin de Carrera 9.3.4 Valoración final de cada alternativa Parámetros Alternativa 1 Alternativa 2 Parámetros Operativos 26 33 Parámetros Técnicos 49 60 Parámetros económicos 28 36 TOTAL 103 129 9.4 Elección de alternativa Como se puede ver las dos opciones son igual de válidas, pero la que se va a optar es la Alternativa 2, ya que posee mayor puntuación. Para aclarar la elección se explicarán a continuación las razones, por las que se ha elegido la segunda alternativa que son las por las que se han dado las puntaciones más altas. En primer lugar se optará por un sistema operativo Windows Vista, en un ordenador con procesador Intel Core 2 Dúo 2,33 GHz, con 2 GB de memoria RAM, ya que se necesitará mucha potencia para procesar los cálculos. No vale cualquier procesador, de hecho el programa MATLAB, no se instala en ordenadores con poca potencia, y en general también se necesita bastante memoria RAM teniendo más que suficiente con 1 ó 2 GB. En relación con la elección de la aplicación matemática entre MATLAB y Mathematica, decir que prácticamente son iguales estas dos herramientas. La diferencia fundamental por la que se ha elegido la primera, es por un lado el poder operarar con variables y operaciones simbólicas, pero lo fundamental es que posee una biblioteca de funciones FFTW con el algoritmo de la FFT. Por otro lado, MATLAB tiene bibliotecas para poder diseñar interfaces de 72 Software de Aplicación de la FFT usuario, con GUIDE, que permite integrar fácilmente los módulos y la propia interfaz GUI, sin tener que utilizar Java y con esto tener que instalar más aplicaciones extras como la JDK. Por último se ha elegido MATLAB por su potencia y calidad de representación de funciones gráficas. Para finalizar comentar la elección del procesador de textos. A pesar de que Windows Office es la mejor herramienta ofimática en general, se usará la aplicación matemática Mathematica en lugar del conocido procesador de texto, ya que este paquete matemático dispone de un procesador de textos con notación matemática que permite pueden escribir de forma sencilla, tanto fórmulas como cualquier símbolo, e integra el texto, las ecuaciones matemáticas y los gráficos de un modo profesional. Con el procesador de Office sería una tarea pesada y ardua. 9.5 Planificación temporal del proyecto El siguiente diagrama de Gantt refleja cómo se ha repartido el tiempo a lo largo del proyecto. Se han tenido en cuenta tanto los exámenes intercuatrimestrales de los días 19 al 23 de Noviembre y los segundos intercuatrimestrales del 21 al 25 de Abril, así como los exámenes de Febrero. Esto conlleva a que los días anteriores a esos periodos de exámenes tampoco se realizó ninguna actividad del proyecto. Se tendrá también en cuenta que cada día se han dedicado 4 horas, como media durante todo el año. 73 Proyecto Fin de Carrera Octubre 2007 D L M X J V S 1 2 3 4 5 6 7 8 9 10 11 12 13 4 5 6 14 15 16 17 18 19 20 11 12 13 27 18 19 20 25 26 27 21 22 23 24 28 29 30 31 Diciembre 2007 D L M X J V 2 3 4 5 6 7 9 10 11 12 13 16 17 18 19 23 30 24 31 25 26 S M X 26 L J V X V S 1 J 2 3 7 8 9 10 14 15 16 17 21 22 23 24 28 29 30 Febrero 2008 L M 1 2 3 4 5 1 2 8 6 7 8 9 10 11 12 3 4 5 6 7 8 9 14 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23 27 28 29 27 28 29 30 31 24 25 26 27 28 29 J X M D Marzo 2008 L 25 D Enero 2008 1 D Noviembre 2007 S D L Abril 2008 V S D L 1 M J X M X J V S Mayo 2008 V S D L M J X V S 1 2 3 1 2 3 4 5 2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10 9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17 16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24 23 30 24 31 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31 MEMORIA DESCRIPTIVA ANÁLISIS DE REQUISITOS PROGRAMACIÓN Y PRUEBAS RECOGIDA Y ANALISIS MÓDULOS VALORACIÓN EACONÓMICA IDENTIFICACIÓN DE NECESIDADES DISEÑO ARQUITECTURA Planificación temporal del proyecto. Figura 5 74 CONCLUSIONES Software de Aplicación de la FFT 10. Diseño externo Se describirá el diseño de cada uno de las ventanas que se han desarrollado para la aplicación dando una pequeña descripción y poniendo una captura de cada una de ellas. Como características principales indicar que se estudió en primer lugar al usuario que utilizará la aplicación, que serán no solo matemáticos sino cualquier ingeniero, por eso todas las ventanas tienen que tener un lenguaje matemático comprensible para este tipo de usuarios. Además el usuario quiere que la disposición de todos los iconos y elementos de las ventanas sean visibles y accesibles, pero no molestos, pudiendo hacer las operaciones con las menos interacciones posibles, y no acumulando en la pantalla objetos que serían molestos y desorientarían al usuario. Se disponen de un total de cinco ventanas principales, que son los pilares de la aplicación, que corresponderán a los módulos programados. Luego se programarán ventanas auxiliares que serán complementarias a éstas. 10.1 Diseño de ventanas 1. Diseño de ventana principal à NOMBRE Ventana de menú de la aplicación. Código 75 Proyecto Fin de Carrera Menu_PFC. Ventanas a las que llama -Ventana de Información (Info_0). -Ventana de Multiplicación de números esteros de gran magnitud (Módulo_1). -Ventana de Multiplicación de polinomios de cualquier grado (Módulo_2). -Ventana de Aproximación rápida de Chebyshev (Módulo_4). -Ventana de Aproximación Trigonométrica (Módulo_3). -Ventana de Salida (modaldlg). Descripción La ventana del menú es la principal de la aplicación. Posee un menú en la parte superior con el nombre de los diferentes módulos para poder acceder a cada uno de ellos, además de la opción de salida de la aplicación. En esta ventana se pondrá el nombre de la aplicación, también se pondrá el nombre del autor y del director del proyecto. Se colocará en la parte inferior de la ventana un botón de información para que el usuario acceda y se informe de las diferentes acciones que puede efectuar en el programa. Por último y para rellenar se programará una función toroide en tres dimensiones de llamativos colores que se dispondrá en medio de la ventana para hacerla mucho más atractiva y visual. 76 Software de Aplicación de la FFT Ventana Menú principal de la aplicación. Figura 6 2. Diseño de Multiplicación de números enteros de gran magnitud à NOMBRE Ventana de Multiplicación de números enteros de gran magnitud. Código Módulo_1. Ventanas a las que llama -Ventana de Ayuda (Info_1). -Ventana de Salida (modaldlg). -Ventana de Error (Error). Descripción 77 Proyecto Fin de Carrera La ventana de Multiplicación de números enteros de gran magnitud llamará al módulo Multiplicacion_de_enteros.m . En la ventana se pondrán tanto los cuadros de texto para introducir los dos números a multiplicar. También estará el cuadro de texto donde se visualizará el resultado de la operación. El botón Multiplicar será el que ejecutará la operación. Los iconos restantes tienes funciones diversas. VER OPERACIOES y OCULTAR OPERACIOES se utilizarán para poder visualizar una ventana de texto donde el usuario podrá ver los cálculos intermedios del algoritmo con más profundidad. Por último, hay tres botones situados en la parte inferior de la ventana. Salir que sirve para que desaparezca la ventana apareciendo una ventana de salida con opciones, el botón Limpiar datos que borrará los números que aparecen en los tres cuadros de texto donde se introducen los dos números enteros y el del resultado, el tercero es el de Ayuda que ofrece al usuario información sobre cómo interactuar por la ventana, con instrucciones bien enumeradas y simples. Si el usuario introduce los datos erróneamente se visualizará una ventana de Error. 78 Software de Aplicación de la FFT Ventana Multiplicación de números enteros. Figura 7 3. Diseño de Multiplicación de polinomios de cualquier grado à NOMBRE Ventana de Multiplicación de polinomios de cualquier grado. Código Módulo_2. Ventanas a las que llama -Ventana de Ayuda (Info_2). -Ventana de Salida (modaldlg). Descripción La ventana de Multiplicación de polinomios es similar a la anterior. Llamará al módulo Multiplicacion_de_polinomios.m, y dispondrá de tres cuadros de texto para la introducción de polinomios y la visualización de resultado. La operación de Multiplicación 79 Proyecto Fin de Carrera se ejecutará cuando el usuario presione al botón Multiplicar situado en la parte superior derecha de la ventana. VER OPERACIOES y OCULTAR OPERACIOES servirán para que se visualicen las operaciones intermedias del algoritmo. Por último, se pondrán tres botones en la parte inferior derecha de la ventana, el de Salir que sirve para salir de la ventana, Limpiar datos, eliminará los datos introducidos por el usuario en los cuadros de texto, y además borra el resultado para que se puedan introducir otros datos, y el tercer botón será el de Ayuda, que dispondrá de información detallada de cómo funciona este módulo de forma sencilla y enumerada. Ventana Multiplicación de polinomios. Figura 8 4. Diseño de Aproximación rápida de Chebyshev 80 Software de Aplicación de la FFT NOMBRE Ventana de Aproximación rápida de Chebyshev. Código Módulo_4. Ventanas a las que llama -Ventana de Ayuda (Info_4). -Ventana de Salida (modaldlg). -Ventana de Error (Error). -Ventana de Información funciones (Info). Descripción La ventana de Aproximación rápida de Chebyshev llamará al módulo Aprox_Chebyshev.m . En la parte superior derecha se visualizará tanto la función que introduce el usuario, como el intervalo y el número de puntos. Con ellos el módulo operará dando la aproximación. Esto ocurre al pulsar el botón Chebyshev. Dando a VER OPERACIOES u OCULTAR OPERACIOES se podrán ver los cálculos que el algoritmo ha realizado hasta obtener el resultado final. El botón Información, resuelve al usuario dudas sobre la introducción de funciones en MATLAB, apareciendo en una ventana aparte. El botón Ayuda ofrece al usuario las claves para poder moverse con soltura por la ventana y realizar las operaciones. Finalmente los iconos de Salir y Limpiar datos cumplen las mismas funciones que en las anteriores descripciones de ventanas de la aplicación. 81 Proyecto Fin de Carrera Ventana Cálculo de aproximación rápidas de Chebyshev. Figura 9 5. Diseño de InterpolaciónTrigonométrica à NOMBRE Ventana de Interpolación Trigonométrica. Código Módulo_3. Ventanas a las que llama -Ventana de Ayuda (Info_3). -Ventana de Salida (modaldlg). 82 Software de Aplicación de la FFT -Ventana de Error (Error). -Ventana de Información funciones (Info). Descripción La ventana de Interpolación Trigonométrica llamará al módulo IT.m. Esta ventana se ha provisto de un eje de coordenadas donde se visualizará de forma clara la interpolación, mostrando la función original y la interpolada de otro color. En la parte derecha al eje se dispondrá de los elementos típicos para introducir las variables: un cuadro de texto para escribir la función o vector, otro para el intervalo, un tercero para el número de puntos y la última opción será una pestaña para ejecutar las operaciones eligiendo Vector o Función. También se ha puesto un botón de información de funciones MATLAB que abrirá una ventana visualizándose todas las funciones de interés. Como en todas las ventanas se verá un botón de OCULTAR OPERACIOES y VER OPERACIOES vara visualizar las operaciones intermedias y el resultado. También se contará con el botón de Ayuda para tener claras las operaciones y pasos a realizar, el botón de Limpiar datos para introducir nuevas operaciones y el botón Salir que cerrará la ventana de Interpolación Trigonométrica. La ventana de Error se ejecutará al introducir mal alguno de los elementos de entrada como el intervalo, número de puntos, etc. 83 Proyecto Fin de Carrera Ventana Interpolación Trigonométrica. Figura 10 6. Diseño de Información sobre funciones à NOMBRE Ventana de Información sobre funciones en MATLAB. Código Info. Descripción Se ha pensado en los usuarios que no han interactuado nunca con el lenguaje MATLAB, por eso se ha construido una simple ventana donde se informa al usuario cómo se escriben algunas funciones con las que normalmente se trabaja. Esta opción solo aparecerá en los módulos donde el usuario tenga que introducir una función de cualquier 84 Software de Aplicación de la FFT tipo. Ventana Información. Figura 11 7. Diseño de Ayuda à NOMBRE Ventana de Ayuda. Código Info_1 , Info_2 , Info_3 , Info_4 . Descripción En cada uno de las ventanas principales se han añadido un botón de Ayuda, que muestra la información necesaria para navegar por la ventana que el usuario tiene abierta. 85 Proyecto Fin de Carrera En la ventana de ayuda se describe, de forma enumerada, cada paso que el usuario tiene que realizar para hacer correctamente las operaciones y ejecutar el programa satisfactoriamente. Ventana de Ayuda. Figura 12 8. Diseño de Error à NOMBRE Ventana de Error. Código Error. Descripción Cuando el usuario cometa un error al introducir datos en el programa aparecerá esta ventana de error explicando el problema detalladamente al usuario. 86 Software de Aplicación de la FFT Ventana de Error. Figura 13 9. Diseño de Salida à NOMBRE Ventana de Salida. Código modaldlg. Descripción Aparecerá esta ventana cuando el usuario desee salir de cualquiera de los módulos del programa o también cuando quiera cerrar la aplicación completamente. Ventana Salir. Figura 14 87 Proyecto Fin de Carrera 11. Valoración económica 11.1. Introducción En este apartado se detalla la valoración económica o análisis de costes de cada una de las tareas/actividades que comprenden la realización y puesta en funcionamiento del presente proyecto. El proyecto se ha descompuesto en actividades y tareas, indicadas como partidas o ítems en la valoración económica. 11.2. Técnicas de estimación de costes Las diferentes partidas o ítems que componen el proyecto y que se han incluido en este análisis de costes se detallan a continuación. 1. Especificaciones y Desarrollo Software Esta partida o ítem se ha dividido en dos grandes fases debido a su gran alcance e importancia. En primer lugar, aparece la fase de requisitos. Esta fase incluye las fases de especificación de requisitos, del análisis funcional y del plan de pruebas. En segundo y último lugar, se indica la fase de desarrollo del software. Esta fase es sin duda la que ha supuesto más coste, en términos de tiempo, y la que distingue el presupuesto del de otro proyecto que comprenda el mismo ámbito o sea del mismo tipo. Para cada una de las fases anteriores se reseñan los costes directos, expresados en 88 Software de Aplicación de la FFT meses/hombre (meses completos dedicados para cada actividad), necesarios para acometer cada una de ellas, indicándose la categoría del realizador: Jefe de Proyecto o Analista/Programador. La actividad del Jefe de Proyecto se ha estimado en un 14% respecto de la actividad del Analista/Programador. Por último, cabe destacar que no debe haber confusión con el significado de los costes unitarios aquí expresados. Estos costes representan la valoración económica que haría la empresa por poner a cargo de este proyecto a dicho Jefe de Proyecto o Analista en su caso. 2. Instalación, Pruebas e Integración del Software En este apartado se recogen los costes directos de las actividades de integración y de pruebas del software en el entorno de desarrollo y en el de explotación, incluidos los gastos adicionales, tales como los desplazamientos y las dietas. Estos costes han sido calculados del mismo modo que en el apartado anterior. 3. Equipamiento y Licencias Software Costes de todo el equipamiento e infraestructura (PCs, impresoras, RAL, comunicaciones), si fuera necesario. Asímismo, se han de especificar en este apartado las licencias necesarias para el entorno de explotación. Para la implementación de este software sólo es necesario de una licencia del lenguaje numérico y simbólico de MATLAB®, en concreto de la versión 7.0 aquí utilizada, y disponer de un PC. Cómo la venta de este software será con toda seguridad a una persona 89 Proyecto Fin de Carrera jurídica no se contempla en este presupuesto la adquisición de dicha plataforma hardware, debido a que en los tiempos presentes cualquier empresa o persona jurídica dispone de un PC, haciéndose sólo referencia a la licencia del MATLAB®. 4. Apoyo logístico (Formación) En este concepto se ampara la formación a impartir a los posibles operadores y administradores del sistema a implantar. Se incluye en la formación la entrega de toda la documentación necesaria para el curso de formación. 5. Incrementos e IVA Se parte de la suma de las partidas (1), (2), (3), y (4) formando el Coste Directo del Proyecto. A este Coste Directo se le aplican los Gastos Generales H13 %L y el Beneficio Industrial H6 %L. La suma de los conceptos de Coste Directo, Gastos Generales y Beneficio Industrial constituyen el Total Importe sin IVA. A este importe se le sumarán los impuestos correspondientes como IVA H16 %L, para la Península y Baleares, IGIC H5 %L para las islas Canarias o IPSI H3 y 4 %L para Ceuta y Melilla, respectivamente. Total Proyecto La suma del Total Importe sin IVA más la partida de Incrementos e IVA determinan el importe total del desarrollo, implantación y puesta en servicio del proyecto. 90 Software de Aplicación de la FFT 11.3. Costes del proyecto En función de lo explicado en el apartado de técnicas de estimación de costes y de la planificación vista en apartados anteriores se procede a calcular los costes estimados del presente proyecto. El importe total del proyecto asciende a 23.650, 72 € (VEI@TITRÉS MIL SEISCIE@TOS CI@CUE@TA MIL CO@ SETE@TA Y DOS CÉ@TIMOS), impuestos incluidos. El detalle de cada una de las partidas vistas en el apartado anterior, se expresa en la tabla siguente: 91 Proyecto Fin de Carrera SOFTWARE de Aplicación de la Transformada Rápida de Fourier Ítem 1 Concepto P.1 Empresa Unidad (Meses/ Hombre) Coste Unitario € Coste Total € Total por partidas € Especificaciones y Desarrollo Software a) Especificaciones P.1.1.1 P.1.1.2 Especificación de Requisitos y Análisis Funcional Jefe de Proyecto Desarrollo Inf. 0,04 8.700,70 304,52 Analista/Programador Desarrollo Inf. 0,25 6.388,78 1.597,19 Jefe de Proyecto Desarrollo Inf. 0,04 8.700,70 304,52 Analista/Programador Desarrollo Inf. 0,25 6.388,78 1.597,19 Jefe de Proyecto Desarrollo Inf. 0,14 8.700,70 1.218,10 Analista/Programador Desarrollo Inf. 1,00 6.388,78 6.388,78 Plan de pruebas b) Desarrollo software P.1.1.3 Ajuste de Curvas Lineal. Multiplicación de números enteros de gran magnitud. Multiplicación de polinomios de cualquier grado. Interpolación Trigonométrica. Aproximación rápida de Chebyshev. Subtotal 1 2 P.1.2.1 P.1.2.2 Instalación, Pruebas e Integración del Software Pruebas de integración en fábrica (Entorno de Desarrollo) Jefe de Proyecto Desarrollo Inf. 0,01 8.700,70 121,81 Analista/Programador Desarrollo Inf. 0,10 6.388,78 638,88 Jefe de Proyecto Desarrollo Inf. 0,01 8.700,70 121,81 Analista/Programador Desarrollo Inf. 0,10 6.388,78 638,88 Instalación y pruebas de aceptación en las instalaciones del cliente (Entorno de Explotación) Subtotal 2 3 P.1.3.1 P.1.4.1 MATHWORKS 1 1.410,71 1.410,71 Apoyo Logístico (Formación) Formación Aplicación Software y documentación (Curso de 6 horas a 4 personas) Desarrollo Inf. 1 2.790,83 1.410,71 2.790,83 Subtotal 4 TOTAL COSTE DIRECTO 5 1.521,37 Equipamiento y Licencias Licencia de MATLAB V. 7.0 para Windows 10 usuarios con Signal Processing Toolbox, Image Processing Toolbox, Fuzzy Logic Toolbox y Wavelet Toolbox. Mantenimiento por 1 año. Subtotal 3 4 11.410,31 2.790,83 17.133,23 Incrementos e IVA P.1.5.1 Gastos Generales Desarrollo Inf. 13% 17.133,23 2.227,32 P.1.5.2 Beneficio Industrial Desarrollo Inf. 6% 17.133,23 1.027,99 TOTAL IMPORTE SIN IVA IVA (Península y Baleares) 16% 20.388,55 3.262,17 TOTAL PROYECTO (EUROS) 92 20.388,55 23.650,72 Software de Aplicación de la FFT 12. Conclusiones y líneas futuras Durante el desarrollo de este proyecto, en el que se ha aplicado el conocimiento de los algoritmos de la Trasformada Rápida de Fourier HFFTL para su utilización práctica en diferentes problemas científicos, se ha comprobado que su programación ha sido ardua pero muy eficiente en su aplicación práctica a problemas concretos. La Trasformada Rápida de Fourier HFFTL es un algoritmo muy complejo que requiere una base matemática para su comprensión así como un conocimiento de la Transformada Discreta de Fourier HTDFL. En consecuencia, su aplicación práctica a los problemas técnicos-científicos planteados como objetivos de este proyecto va más allá del diseño e implementación de un software concreto. Esta razón ha guiado el desarrollo del presente proyecto, abrigando la esperanza de clarificar los fundamentos de la FFT, así como su amplia y la diversa aplicación de estos algoritmos en los diferentes casos que se han propuesto, facilitando un conocimiento pedagógico de un tema árido, si se analiza desde un punto de vista únicamente matemático. Por consiguiente, tras hacer un amplio recorrido por los fundamentos matemáticos de las aplicaciones de la FFT a diversos problemas técnicos, y tras haber analizado y programado los algoritmos empleados para resolver el problema concreto tratado, se establecen las conclusiones teóricas y prácticas enunciada a continuación: 1. Multiplicación de números enteros de gran magnitud. 93 Proyecto Fin de Carrera Se ha aplicado satisfactoriamente la FFT a este problema, aunque se ha encontrado en un principio dificultades ya que no se encontraba información técnica sobre este tema. A raíz de la teoría de la convolución, explicada en este proyecto, se ha investigado y estudiado hasta llegar a los resultados fijados en los requisitos. En contra de lo que cabría pensarse se han encontrado dificultades por parte del programa con el que se estaba programando, al no obtenerse con precisión las últimas cifras menos significativas del resultado. Esto es debido a que este lenguaje, aun operando internamente con números enteros de 16 dígitos decimales de precisión, al representarlos en el mayor formato posible, realiza una operación de truncamiento en su representación, visualizándolos en notación científica. El algoritmo diseñado cumple con los objetivos, pero con el inconveniente que el resultado vendrá truncado por la limitación de la representación simbólica del lenguaje MATLAB. 2. Multiplicación de polinomios de cualquier grado. En este módulo se ha tenido también que aplicar la teoría de la convolución, y al contrario del anterior, esta aplicación se ha desarrollado de manera más fácil, pudiéndose usar la FFT de manera exitosa y obteniendo los resultados esperados. El problema ha sido convertir los coeficientes del polinomio, que son los que se obtienen cuando se realizan las operaciones, en formato simbólico para su representación tanto en la interfaz de usuario como para crear el polinomio resultado como una expresión simbólica. Otro problema resuelto ha sido el verificar que el usuario ha introducido correctamente un vector, dado que este lenguaje no dispone de funciones que facilite su 94 Software de Aplicación de la FFT comprobación. Se ha resuelto explicando al usuario cómo debe introducir las expresiones de forma gráfica y sencilla. 3. Interpolación Trigonométrica. Se ha desarrollado la interpolación una función dada en dos intervalos posibles: @-p , p D y @0 , 2 pD de manera satisfactoria, introduciendo cualquier función siempre con un número par de puntos. La interpolación de un vector de puntos en lugar de una función concreta también funciona con precisión, si bien el número de puntos tiene que ser potencia de dos, debido al algoritmo de la FFT. En este módulo, por el contrario, se verifica que todos los datos introducidos son correctos. El problema de las variables simbólicas, como en el módulo anterior, se ha solucionado de la misma forma. 4. Aproximación rápida de Chebyshev. Este módulo ha sido el más complicado de diseñar y programar, puesto que no se han encontrado suficientes artículos o publicaciones que lo traten. No obstante, con la bibliografía de referencia y con los problemas ya resueltos, se ha conseguido un algoritmo que proporciona una aproximación coherente y satisfactoria. Además, esta aproximación se realiza en el intervalo @-1, 1D. 5. Interfaz gráfica de la aplicación software. Con la funcionalidad GUIDE de MATLAB se ha podido diseñar y programar una interfaz gráfica sencilla y visual, que cumple sobradamente con los objetivos del proyecto, ya que posee todos los elementos necesarios para interactuar con la aplicación. 95 Proyecto Fin de Carrera Permite esta interfaz aprender y aplicar los algoritmos de la FFT en los campos ya mencionados, de un modo inteligible y eminentemente práctico. 6. Como línea futura de análisis e investigación y como mejora posible a introducir al actual proyecto cabría reseñar: a) Incluir en el módulo de Interpolación Trigonométrica las gráficas que representen la función error cometido entre la función y el polinomio interpolador trigonométrico. b) Ampliar el módulo de la Aproximación rápida de Chebyshev para incluir la gráfica de la función error. c) Diseño, programación e implementación de las siguientes aplicaciones prácticas de la FFT: ä Cálculo de un vector por una matriz Toeplitz empleadas en el procesamiento de señales. ä Obtención del producto de una matriz circulante y un vector. ä Resolución de un sistema lineal Circulante. ä Aplicación en la Transformada Rápida Discreta del Seno HDSTL y en Transformada Rápida Discreta del Coseno HDCTL. 96 Software de Aplicación de la FFT ä Utilización de FFT en la Transformada Rápida Discreta de Hartley HDHTL. ä Resolución de Ecuaciones Diferenciales. 97 Proyecto Fin de Carrera 13. Bibliografía La siguiente relación de libros y artículos incluye el material de consulta que se ha utilizado para la realización de este proyecto. Están listados por orden alfabético de referencias. Las referencias se componen de cuatro letras y dos numéricos. Las cuatro letras hacen referencia al autor/es siendo las cuatro del primer apellido del autor, o si fuesen varios, las cuatro primeras letras del primer apellido del autor que figuran en primer lugar. Los dígitos corresponden con el año de la primera publicación. La relación de consultas es la siguiente: [BARR01] Barranco de Areba, Jesús Metodología de análisis estructurado de sistemas. Ed UPCO. Madrid 2001. [CHUE00] Chu Eleanor, George Alan. Inside the FFT Black Box. Ed CRC Press LLC .United States of America, 2000. [CUYP04] Cuypers Gert ,Ysebaert Geert, Moonen Marc, Pisoni Fabio. 98 Software de Aplicación de la FFT Chebyshev and Fourier Espectral Methods. Katholieke Universiteit Leuven, Published in proc. IEEE ICC, 2004. [DOMI05] Domínguez Víctor, Rapún María Luisa. Funciones como argumento. Recursividad Fórmulas de cuadratura. FFT. Ed Univerrsidad de Navarra.Navarra, 2005. [GARC05] García de Jalón, José Ignacio Rodríguez, Vidal Jesús. Aprenda matlab 7.0 como si estuviera en primero.. Ed. Escuela Técnica Superior de Ingeniería Industrial. Madrid 2005. [GARC98] García Alfonso, García Fernando, Gutiérrez Andrés, López Antonio, Rodríguez Gerardo, De la Villa Agustín. Cálculo I, Teoría y Problemas de Análisis matemático en una variable. Ed. CLAGSA. Madrid, 1998, 2ª Edición. [BOYD00] Boyd, John.P. Chebyshev and Fourier Espectral Methods. Dover Publications, Inc.United States of America, 2000. [RI@C01] Rincón, F. 99 Proyecto Fin de Carrera Análisis Matemático y Métodos uméricos para Informática. Ed. Dpto. Publicaciones de la E.U.I. Madrid, 2001. [RODR03] Rodríguez Gómez, Fco. Javier. Cálculo y Métodos úmericos. Teoria, Algoritmos y Problemas Resueltos Ed. UPCO. Madrid 2003. [ZULE06] Zuleta Marzal Victoria. Algoritmos y Aplicaciones de la transformada rápida de Fourier. Proyecto fin de carrera, UPCO, Madrid, 2006. URL's de Interés [1] http://toyscaos.tripod.com/matlab7.html [2] http://www.mathworks.com/ [3] http://en.wikipedia.org/wiki/Chebyshev_polynomials [4] http://en.wikipedia.org/wiki/Discrete_cosine_transform [5] http://www.hydrogenaudio.org/forums/lofiversion/index.php/t39574.html. 100 Software de Aplicación de la FFT Anexo I. Programación y guía de instalación En esta parte se tratará de las bibliotecas y dentro de ellas las funciones que ha utilizado MATLAB para realizar las operaciones en los diferentes módulos del programa. Por otro lado se detallará una pequeña guía de instalación de la aplicación, para que ayude al usuario a instalarla con éxito y pueda finalmente ejecutarla. 101 Proyecto Fin de Carrera I.1 Bibliotecas y Funciones MATLAB La bilioteca MATLAB C Math Library proporciona al usuario la capacidad para programar con MATLAB en una biblioteca con formato objeto enlazable. El principal objetivo de la C Math Library es soportar el desarrollo de aplicaciones que se puedan ejecutar y controlar por el operador como entidades independientes de cualquier otra, utilizando con ellos MATLAB y su compilador. Proporciona una amplia variedad de funciones clásicas del programa MATLAB, que se incluyen como bibliotecas objeto, abarcando entre otras las categorías siguientes en el entorno MATLAB y archivos M compilados: ä Funcionales especiales y elementales. ä Álgebra lineal numérica. ä Polinomios e interpolación. ä Métodos numéricos no lineales. ä Estadística y análisis de Fourier. ä Operaciones algebraicas y lógicas. Los algoritmos que se utilizan en esta biblioteca han sido desarrollados por un grupo de renombrados expertos en programación algorítmica de funciones de tipo matemático (álgebra lineal y cálculo numérico). Obteniéndose muchas de ellas de las bibliotecas mundialmente reconocidas LINPACK y EISPACK. La biblioteca MATLAB C 102 Software de Aplicación de la FFT Math Library contiene más de 300 funciones numéricas, lógicas y de utilidad. Todas estas funciones permiten operar con datos de tipo escalar, vectorial o matricial con la misma facilidad sintáctica. En especial se hablará de la biblioteca FFTW (llamada antes Estadística y análisis de Fourier) que posee la C Math Library. Esta biblioteca contiene todos los algoritmos de la FFT utilizados en el proyecto. Posee las siguientes funciones: fft Trasformada Discreta de Fourier. fft2 Transformada Discreta de Fourier de dos dimensiones. fftn Transformada Discreta Multidimensional. fftshift Reordena el vector X en orden creciente de frecuencia. ifft Inversa de la Trasformada Discreta de Fourier. ifft2 Inversa de la Transformada Discreta de Fourier de dos dimensiones. ifftn Inversa de la Transformada Discreta Multidimensional. Las únicas dos que se han utilizado son la fft e ifft, para ayudar a hacer las operaciones que eran necesarias. En las dos funciones los argumentos de entrada son un vector de n elementos, y el argumento de salida ha sidoa un vector de números complejos de n elementos, siendo la trasformada del vector x introducido. Otra de las biblioteca más utilizadas ha sido <string.h>. Contiene todas las funciones relacionadas con el formato string. Se ha tenido que trabajar con ellas ya que 103 Proyecto Fin de Carrera MATLAB no permite intoducir en un fichero de texto variables simbólicas, teniéndose que trasformar en caracteres todas las funciones resultantes de los módulos. strcpy Copia una cadena. strcat Concatena dos cadenas de caracteres. strcmp Compara dos cadenas o una cadena con un vector de strings, devolviendo 1 si es cierto y son iguales y 0 si no lo son. Por último, comentar que la interfaz <matplotlib.pylab> es la biblioteca que permite a MATLAB dibujar gráficas de funciones o de puntos. Es una de las bibliotecas más potentes que posee y contiene multitud de funciones relacionadas con el dibujo 2-D y 3-D . Se han utilizado en el proyecto un gran número de ellas entre las se destacan: plot Dibuja una gráfica. axes Crea un eje. title Pone un nombre al eje. zoom Amplía la función al apretar en un punto de ella. hold Tiene dos posiciones Off y On. Mantiene la función para poder dibujar otra encima. grid Dibuja una cuadrícula. xlabel Crea una etiqueta en el eje x. 104 Software de Aplicación de la FFT ylabel Crea una etiqueta en el eje y. I.2 Guía de instalación del software MATLAB V.7 (R14) Este va a ser el programa que va a ser necesario para ejecutar la aplicación al completo. Es necesario instalar el programa entero y no una versión de prueba, ya que se necesita instalar la colección completa de biblioteca que posee. Una vez instalado se procederá a explicar cómo ejecutar el programa. Se entregará la aplicación completa en un CD-ROM junto con la carpeta denominada PFC_FFT. En dicho directorio se encuentran todos los archivos con extensión .m y extensión .fig necesarios para ejecutar el programa. Además en PCF_FFT se guardarán todos los documentos de texto que se generarán en la aplicación para poder usarlos en cualquier momento. A continuaciuon se mostará como instalar el programa MATLAB: (Aviso importante: Malab funciona perfectamente con todos los microprocesadores tanto Intel como AMD, sin embargo si un ordenador usa este último se debe consultar la página del fabricante ya que se tendrá que hacer algún paso más). 1º- Se dispondrá de una carpeta llamada MATLAB(7.0). Se accede a ella. 105 Proyecto Fin de Carrera 2º- Una vez dentro de MATLAB (7.0) se entra en la carpeta MATHLAB1 y se ejecuta el instalador pulsando setup. 106 Software de Aplicación de la FFT 3º- Aparecerá una pantalla del sistema Windows Vista para verificar los permisos y se pulsa permitir (si se instala en Windows XP no se necesita esta verificación). Una vez en la pantalla de inicio de la instalación se elige la opción Install y se pulsa el botón @ext. 107 Proyecto Fin de Carrera 4º- Se procederá a poner el nombre y la compañía (se pondrá el mismo nombre para que no haya problemas). Se continúa la instalación pulsando @ext y se mostrará una pantalla donde se tiene que leer la licencia y dar finalmente a Yes y a continuación a @ext. 5º- A continuación, se elige la opción de instalación Typical, se pulsa @ext y aparecerá una pantalla donde se preguntará dónde instalar el programa. Por defecto está en C:\MATLAB7\ (se deja esta dirección por defecto), y se pulsa @ext. 108 Software de Aplicación de la FFT 6º- Seguidamente se pulsa el botón Install, y el programa empezará a instalarse. Se verá el porcentaje. Esta operación durará varios minutos. 109 Proyecto Fin de Carrera 7º- En un momento de la instalación, aproximadamente por la mitad aparecerá una ventana como la que se muestra a continuación. Para completar la instalación se indica que hay que instalar el CD2. Para ello se aprieta el botón Browser y se elige la dirección donde se encuentra la otra carpeta llamada MATHLAB2. Se abre y se pulsa el botón Select. Para terminar se pulsa la opción OK. Con esto hecho continuará la instalación. 110 Software de Aplicación de la FFT 8º- Por último, se pulsa la opción @ext y se concluye eligiendo el botón Finish. Terminándose así la instalación de MATLAB. 111 Proyecto Fin de Carrera 9º- (Esta acción se tendrá que hacer cada vez que se quiera ejecutar el programa). Con la pantalla de MATLAB abierta, en la parte superior de la ventana donde pone Current Directory: se pulsa el icono de los puntos suspensivos y se busca la carpeta PFC_FFT, pulsando por último el botón Aceptar. 112 Software de Aplicación de la FFT 10º- Una vez situados en la carpeta PFC_FFT se estará preparado para iniciar el programa con éxito. Se ejecuta escribiendo en la pantalla principal del entorno MATLAB, llamada Command Windows, el texto Menu_FFT, y se pulsa Enter: el programa del proyecto se iniciará. 113