1 /* vim: set et ts=4 sw=4 fdm=indent fdl=1 fdn=1 fo+=t:
3 * Taller de Programación (75.42).
6 * Graficador de la solución de una ecuación diferencial por el método
7 * de Euler (explícito).
9 * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
10 * Puede copiar, modificar y distribuir este programa bajo los términos de
11 * la licencia GPL (http://www.gnu.org/).
13 * Creado: dom ago 24 03:12:43 ART 2003
18 /** \mainpage Taller de Programación I (75.42)
20 \section objetivo Objetivo.
21 Desarrollar un \ref main "programa" que resuelva, utilizando un
22 \ref metodo "método iterativo", una \ref funcion "función diferencial"
23 en un intervalo de tiempo dado.
24 \note Utilizar sólo funciones ANSI C.
26 \section desarrollo Desarrollo.
27 \subsection parte1 Parte 1.
28 Dada una \ref funcion "función diferencial" \f$df_{(t)}\f$,
29 desarrolle un \ref main "programa" que calcule la integral de la
30 misma utilizando el método iterativo (\ref metodo "Euler explícito"),
31 tal como se explica a continuación. Almacene estos resultados en un
32 \ref Resultados "vector".
34 \subsubsection funcion Función diferencial.
36 df_{(t)} = \frac{500 - f_{(t)}}{30}
39 \subsubsection variables Variables.
40 - \f$t_i\f$: \ref T0 "Tiempo inicial de la iteración" = 0.
42 Solicitar al usuario el ingreso de las restantes variables por
44 - \f$f_{(t)}\f$: Estado inicial del sistema.
45 - \f$t_f\f$: Tiempo final de la iteración (segundos).
46 - \f$step\f$: Paso (en segundos).
48 \subsubsection metodo Método de iteración (Euler explícito).
50 f_{(t + step)} = f_{(t)} + df_{(t)} \cdot step
53 \subsection parte2 Parte 2.
54 Grafique los primeros 70 pasos (si los hay) de la
55 \ref funcion "función" en formato texto, entre los valores máximos y
56 mínimos que tome en este intervalo, utilizando 20 líneas horizontales.
71 \section resolucion Resolución.
72 El \ref main "programa principal" se divide en FIXME N tareas principales,
73 cada una realizada por una función particular.
75 \subsection obtencion Obtención y validación de parámetros del usuario.
76 Antes de comenzar a hacer cálculos es necesario obtener los valores de
77 las \ref variables "variables" de la entrada del usuario (en este caso
78 a través de parámetros de línea de comandos). Esto es realizado
79 por la función cargar_datos().
81 \subsection integracion Integración de la ecuación diferencial.
82 Reemplazando la \ref funcion "ecuación diferencial" \f$ df_{(t)} \f$
83 en la solución por el \ref metodo "método de Euler", obtenemos
86 f_{(t + step)} = f_{(t)} + \frac{500 - f_{(t)}}{30} \cdot step
88 Resultando, en realidad, una función númerica de dos variables
89 (\f$ step \f$ y \f$ f_t \f$):
91 f_{t + step} = f_{(step, f_t)} = f_t + \frac{500 - f_t}{30} \cdot step
93 Este paso es realizado por el macro FUNCION() para que sea más
96 Todo lo que resta es iterar, paso a paso, calculando los valores de la
97 función y almacenándolos en el \ref Resultados "vector de resultados",
98 tarea realizada por la función calcular().