]> git.llucax.com Git - z.facultad/75.42/euler.git/blob - calculo.c
Se mejora la impresión de error.
[z.facultad/75.42/euler.git] / calculo.c
1 /* vim: set et ts=4 sw=4 fdm=indent fdl=1 fdn=1 fo+=t:
2  *
3  * Taller de Programación (75.42).
4  *
5  * Ejercicio Número 1:
6  * Graficador de la solución de una ecuación diferencial por el método
7  * de Euler (explícito).
8  *
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/).
12  *
13  * Creado: sáb ago 23 16:59:01 ART 2003
14  *
15  * $Id$
16  */
17
18 #include "calculo.h"
19
20 size_t resultados_calcular(Resultados* res, Real paso, Real ti, Real tf, Real f0) {
21     /* Índice para iterar. */
22     size_t i;
23     /* Calculo la cantidad de pasos necesarios según el tiempo inicial, el
24      * tiempo final y el "tamaño" del paso. */
25     size_t pasos = (size_t)((tf - ti) / paso);
26     /* Respeto la cantidad máxima de pasos admitida. */
27     if (pasos > ANCHO) {
28         pasos = ANCHO;
29     }
30     /* Agrego el valor inicial de la función (para empezar a iterar). */
31     (*res)[0] = f0;
32     /* Itero paso a paso calculando el valor de la función. */
33     for (i = 1; i < pasos; i++) {
34         /* f(t+paso) = FUNCION(paso, f(t)) */
35         (*res)[i]    = FUNCION(paso, (*res)[i-1]);
36     }
37     return pasos;
38 }
39