]> git.llucax.com Git - z.facultad/75.42/euler.git/blobdiff - documentacion.h
Se mejora la impresión de error.
[z.facultad/75.42/euler.git] / documentacion.h
index a5c1b2bf67f33124192c98fcffdbf505d7ec3ebe..23615ce79fa856426b4c22fd630c758d7e5cf5c5 100644 (file)
@@ -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).
  *
  * $Id$
  */
 
-/** \mainpage Taller de Programación I (75.42)
+/** \mainpage Trabajo Práctico I
+
+\htmlonly
+También puede ver <a href="../latex/refman.pdf">este documento en formato
+PDF</a>.
+\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:
         \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$
 
         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 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.
+
+        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 corridas Corridas de ejemplo.
+        A continuación se presentan corridas del programa junto a los parámetros
+        con los cuales ha sido llamado.
+
+        <tt>\$ ./tp1 2</tt>
+        \verbinclude corrida_2.txt
+        <tt>\$ ./tp1 2 -200 -150</tt>
+        \verbinclude corrida_2__200__150.txt
+        <tt>\$ ./tp1 0 10</tt>
+        \verbinclude corrida_0_10.txt
+        <tt>\$ ./tp1 2 200 -150</tt>
+        \verbinclude corrida_2_200__150.txt
+        \anchor inestable <tt>\$ ./tp1 50 5000</tt>
+        \verbinclude corrida_50_5000.txt
+
+\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".
 
 */