X-Git-Url: https://git.llucax.com/z.facultad/75.42/euler.git/blobdiff_plain/e8be4543c7b27b4f68517e8b12acc895388997f2..cd5e734a119e8827615d5a51820d048f32efdcae:/documentacion.h?ds=inline diff --git a/documentacion.h b/documentacion.h index efae98d..c791966 100644 --- a/documentacion.h +++ b/documentacion.h @@ -1,8 +1,8 @@ -/* vim: set et ts=4 sw=4 fdm=indent fdl=1 fdn=1 fo+=t: +/* vim: set et ts=4 sw=4 fdm=indent tw=80 fdl=1 fdn=1 fo+=t: * * Taller de Programación (75.42). * - * Ejercicio Número 1: + * Trabajo Práctico Número 1: * Graficador de la solución de una ecuación diferencial por el método * de Euler (explícito). * @@ -15,10 +15,19 @@ * $Id$ */ -/** \mainpage Taller de Programación I (75.42) +/** \mainpage Trabajo Práctico I + +\htmlonly +También puede ver este documento en formato +PDF. +\endhtmlonly + +\latexonly +También puede ver este documento en formato HTML en html/index.html. +\endlatexonly \section objetivo Objetivo. - Desarrollar un \ref main "programa" que resuelva, utilizando un + Desarrollar un \ref tp1.c "programa" que resuelva, utilizando un \ref metodo "método iterativo", una \ref funcion "función diferencial" en un intervalo de tiempo dado. \note Utilizar sólo funciones ANSI C. @@ -26,7 +35,7 @@ \section desarrollo Desarrollo. \subsection parte1 Parte 1. Dada una \ref funcion "función diferencial" \f$df_{(t)}\f$, - desarrolle un \ref main "programa" que calcule la integral de la + desarrolle un \ref tp1.c "programa" que calcule la integral de la misma utilizando el método iterativo (\ref metodo "Euler explícito"), tal como se explica a continuación. Almacene estos resultados en un \ref Resultados "vector". @@ -37,7 +46,7 @@ \f] \subsubsection variables Variables. - - \f$t_i\f$: \ref T0 "Tiempo inicial de la iteración" = 0. + - \f$t_i\f$: Tiempo inicial de la iteración = 0. Solicitar al usuario el ingreso de las restantes variables por línea de comandos: @@ -69,14 +78,15 @@ \endverbatim \section resolucion Resolución. - El \ref main "programa principal" se divide en 3 tareas principales, + El \ref tp1.c "programa principal" se divide en 3 tareas principales, cada una realizada por una función particular. \subsection obtencion Obtención y validación de parámetros del usuario. Antes de comenzar a hacer cálculos es necesario obtener los valores de las \ref variables "variables" de la entrada del usuario (en este caso a través de parámetros de línea de comandos). Esta tarea es realizada - por la función cargar_datos(). + por la función cargar_datos(). En el archivo carga.c y carga.h puede + encontrarse esta función y otras funciones relacionadas a esta tarea. \subsection integracion Integración de la ecuación diferencial. Reemplazando la \ref funcion "ecuación diferencial" \f$ df_{(t)} \f$ @@ -95,27 +105,79 @@ Todo lo que resta es iterar, paso a paso, calculando los valores de la función y almacenándolos en el \ref Resultados "vector de resultados", - tarea realizada por la función calcular(). + tarea realizada por la función resultados_calcular(). En el archivo + calculo.c y calculo.h puede encontrarse esta función y otras funciones + relacionadas a esta tarea. \subsection impresion Impresión del gráfico por pantalla. Finalmente todo lo que queda es graficar por pantalla el resultado de la función. Para esto se va imprimiendo línea por línea, chequeando qué punto de la función cae en cada rango de valores representados por una línea. Esta tarea es realizada por la función resultados_graficar(). + En el archivo grafico.c y grafico.h puede encontrarse esta función y + otras funciones relacionadas a esta tarea. + + \subsection corridas Corridas de ejemplo. + A continuación se presentan corridas del programa junto a los parámetros + con los cuales ha sido llamado. + + \$ ./tp1 2 + \verbinclude corrida_2.txt + \$ ./tp1 2 -200 -150 + \verbinclude corrida_2__200__150.txt + \$ ./tp1 2 20a0 -150 + \verbinclude corrida_2_20a0__150.txt + \$ ./tp1 2 200 -150 + \verbinclude corrida_2_200__150.txt + \anchor inestable \$ ./tp1 50 5000 + \verbinclude corrida_50_5000.txt + +\section requerimientos Requerimientos y modo de uso. + \subsection plataforma Plataforma y compilador. + Este trabajo práctico fue realizado y probado bajo la plataforma Debian + GNU/Linux sid. El compilador utilizado fue GNU GCC versión 3.3.1. + El ejecutable entregado corre bajo esta esta plataforma y u uso se + describe en la \ref uso "sección siguiente". + + De todas formas, al estar programado sólo utilizando funciones ANSI C, + debería poder compilarse bajo cualquier plataforma y compilador que + soporte este estándar. + + \subsection uso Modo de uso. + El programa debe ser llamado desde un intérprete de comandos. Acepta + parámetros opcionales pasados como argumento: + \verbatim ./tp1 [paso [tf [f0]]] \endverbatim + Donde: + - \c paso es el paso a utilizar. Si no se especifica se usa un + \ref DEFAULT_PASO "valor por omisión". + - \c tf es el tiempo final en el cual se intentará evaluar la + función (no siempre será posible porque si el paso es muy + pequeño uede no llegarse a este tiempo final). Si no se + especifica se usa un \ref DEFAULT_TF "valor por omisión". + - \c f0 es el valor inicial (en \ref DEFAULT_T0 "el tiempo inicial") + de la función. Si no se especifica se usa un + \ref DEFAULT_F0 "valor por omisión". \section conclusiones Conclusiones. Realmente no se me presentaron muchos problemas para resolver el TP. El único problema que tuve fue realizando el \ref impresion "gráfico", en ciertas circunstancias (por problemas de redondeo) el valor máximo de la función no era graficado. Esto se solucionó incluyendo una línea más al - gráico, con el rango que va desde el máximo de la función (en realidad desde - el mínimo más 20 pasos verticales) hasta el máximo más un paso vertical. - Es por esto que en realidad se grafican 21 pasos. Podría haber graficado 20 - pasos pero el código quedaría menos claro (o tendría que poner la constante - \ref ALTO en 19 en vez de 20). + gráfico, con el rango que va desde el máximo de la función (en realidad + desde el mínimo más 20 pasos verticales) hasta el máximo más un paso + vertical. Es por esto que en realidad se grafican 21 pasos. Podría haber + graficado 20 pasos pero el código quedaría menos claro (o tendría que + poner la constante \ref ALTO en 19 en vez de 20). + + El programa también fue pensado para aceptar como parámetros el caracter + utilizado para dibujar un \ref DEFAULT_PUNTO "punto" de la función y un + espacio en \ref DEFAULT_BLANCO "blanco", así como el + \ref DEFAULT_T0 "tiempo inicial". Por problemas de tiempo, no pude + terminar de implementar estas características extra. Otro detalle que cabe ser mencionado es que para valores altos del - \ref variables "step" (mayores a 30), la solución se vuelve inestable. + \ref variables "step" (mayores a 30), la solución se vuelve + \ref inestable "inestable". */