Ejercicio obligatorio 1
Fecha de entrega: Jueves 5 de septiembre
Introducción
Sabemos del CBC que una función puede desarrollarse según el polinomio de Maclaurin como \(f(x) = \sum_{n=0}^\infty \frac{f^{(n)}(0)}{n!} x^n\). Como generalmente no tenemos el tiempo suficiente para sumar infinitos términos suele ser recomendable establecer un valor máximo \(N\) tal que \(n \leq N\) y recortar la serie a una cantidad finita de términos, así ya no tendremos un resultado exacto sino que aproximado.
Para calcular el factorial podemos utilizar la fórmula de Stirling que aproxima al factorial como \(n! \approx \sqrt{2\pi n} \left(\frac ne\right)^n\).
Con estas dos aproximaciones podemos calcular de manera sencilla cualquier función que sepamos derivar.
Supongamos que queremos calcular la función \(f(x) = \sin(x)\). La derivada del seno es el coseno y la del coseno es menos seno, por lo que las derivadas sucesivas son cíclicas. Pero para el polinomio de Maclaurin en realidad necesitamos estas derivadas evaluadas en el \(0\). Como \(\sin(0) = 0\) y \(\cos(0) = 1\) entonces la serie de derivadas tendrá valores sólo en sus términos impares.
Haciendo un conveniente cambio de variables podemos aproximar \(\sin(x) \approx \sum_{n=0}^N \frac{(-1)^n}{(2n+1)!} x^{2n+1}\).
Factorial
Se pide implementar la función double factorial(unsigned int n);
que
calcule el factorial de n
utilizando la fórmula de Stirling.
Seno
Se pide implementar la función
double seno(double x, unsigned int n_max);
que calcule el seno de x
mediante los n_max
primeros términos
del desarrollo de Maclaurin.
Tabla del seno
Dadas las siguientes definiciones:
#define INICIO -10
#define FIN 10
#define PASO 0.001
#define N_MAX 10
Se pide implementar un programa que calcule la tabla de \(\sin(x)\) entre
los valores INICIO
\(\leq x \leq\) FIN
con intervalos de
PASO
desarrollando N_MAX
términos de la serie para cada valor.
El programa deberá imprimir en formato CSV las columnas \(x_i\) y \(\sin(x_i)\) para cada uno de los valores.
Graficación
Se pide graficar los valores que genera el programa como salida en el software de su preferencia (planilla de cálculos, octave, gnuplot, etc.)
Validación
Se pide calcular por otro método el problema planteado (esto puede ser analíticamente, mediante otro software, etc.) y comparar la gráfica generada por este método con la gráfica generada por nuestro programa.
Entrega
- Deberá entregarse:
El código fuente del programa desarrollado.
El gráfico del seno con los valores extraidos de este programa.
Una pequeña interpretación de las diferencias o similitudes entre los valores obtenidos y los valores esperados.
La entrega se realiza por correo a la dirección algoritmos9511entregas en gmail.com (reemplazar en por arroba).
El ejercicio es de entrega individual.