X-Git-Url: https://git.llucax.com/z.facultad/75.42/euler.git/blobdiff_plain/977e05b75c7af07b8b733b0ce17c0f9e5cefa13b..cd5e734a119e8827615d5a51820d048f32efdcae:/documentacion.h
diff --git a/documentacion.h b/documentacion.h
index a5c1b2b..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 FIXME N 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). Esto es realizado
- por la función cargar_datos().
+ a través de parámetros de línea de comandos). Esta tarea es realizada
+ 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,7 +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á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
+ \ref inestable "inestable".
*/