ProgIng - Programación en Ingeniería
Loading...
Searching...
No Matches
Ejemplo014.c File Reference

Aproximación de sen(x) con serie de Taylor calculando potencia y factorial desde cero. More...

#include <stdio.h>
Include dependency graph for Ejemplo014.c:

Go to the source code of this file.

Functions

int main (int argc, char *argv[])

Detailed Description

Aproximación de sen(x) con serie de Taylor calculando potencia y factorial desde cero.

Serie de Taylor: sen(x) = sum_{i=0}^{∞} (-1)^i * x^{2i+1} / (2i+1)!

Este programa aproxima con n términos: sen(x) ≈ sum_{i=0}^{n-1} (-1)^i * x^{2i+1} / (2i+1)!

Implementación:

  • Para cada i calcula num = x^{2i+1} y den = (2i+1)! con un ciclo interno.
Entrada
  • Un entero n >= 1.
  • Un real x.
Salida
Imprime:
sen(x) = valor
Complejidad
Tiempo: O(n^2). Memoria: O(1).
Warning
Para |x| grande, puede haber pérdida de precisión (no se hace reducción de rango). Además, el factorial crece rápido (aquí se guarda en int).

Definition in file Ejemplo014.c.

Function Documentation

◆ main()

int main ( int argc,
char * argv[] )

Definition at line 35 of file Ejemplo014.c.

36{
37 (void)argc;
38 (void)argv;
39
40 int n, i, j;
41 int den; /* (2i+1)! */
42 int signo; /* +1 o -1 */
43 float x;
44 float sx; /* acumulador de sen(x) */
45 float num; /* x^(2i+1) */
46
47 do {
48 printf("Ingrese el numero de terminos: ");
49 scanf("%d", &n);
50 } while (n < 1);
51
52 printf("Ingrese el valor de x: ");
53 scanf("%f", &x);
54
55 for (i = 0, sx = 0; i < n; i++)
56 {
57 /* signo = +1 si i par, -1 si i impar */
58 signo = 1 - 2*(i % 2);
59
60 /*
61 Calcular:
62 num = x^(2i+1)
63 den = (2i+1)!
64 multiplicando desde cero en cada término.
65 */
66 for (j = 0, num = 1, den = 1; j < (2*i + 1); j++)
67 {
68 num *= x; /* acumula potencia */
69 den *= (j + 1); /* acumula factorial */
70 }
71
72 /* Sumar el término: (-1)^i * num/den */
73 sx += (signo * num / den);
74 }
75
76 printf("sen(%f) = %f\n", x, sx);
77 return 0;
78}