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

Aproximación de sen(x) con Taylor usando producto por término (sin factorial entero explícito). More...

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

Go to the source code of this file.

Functions

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

Detailed Description

Aproximación de sen(x) con Taylor usando producto por término (sin factorial entero explícito).

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

Para cada i, el término: x^{2i+1}/(2i+1)! = Π_{k=1}^{2i+1} (x/k)

Este programa calcula cada término como un producto: fct = (x/1)*(x/2)*...*(x/(2i+1)) y alterna el signo con (-1)^i.

Entrada
  • Un entero n >= 1.
  • Un real x.
Salida
Imprime:
sen(x) = valor
Complejidad
Tiempo: O(n^2). Memoria: O(1).
Note
Evita factorial como entero, pero sigue recalculando cada término desde cero.

Definition in file Ejemplo015.c.

Function Documentation

◆ main()

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

Definition at line 35 of file Ejemplo015.c.

36{
37 (void)argc;
38 (void)argv;
39
40 int n, i, j;
41 int signo;
42 float x;
43 float sx; /* acumulador */
44 float fct; /* término positivo: x^(2i+1)/(2i+1)! */
45
46 do {
47 printf("Ingrese el numero de terminos: ");
48 scanf("%d", &n);
49 } while (n < 1);
50
51 printf("Ingrese el valor de x: ");
52 scanf("%f", &x);
53
54 for (i = 0, sx = 0; i < n; i++)
55 {
56 signo = 1 - 2*(i % 2); /* +1, -1, +1, -1... */
57
58 /*
59 fct = Π_{k=1}^{2i+1} (x/k)
60 Se implementa con j=0..2i:
61 multiplica x/(j+1)
62 */
63 for (j = 0, fct = 1; j < (2*i + 1); j++)
64 fct *= (x / (j + 1));
65
66 sx += (signo * fct);
67 }
68
69 printf("sen(%f) = %f\n", x, sx);
70 return 0;
71}
double fct(double x, int n)
Definition Ejemplo029.c:34
Here is the call graph for this function: