ProgIng - Programación en Ingeniería
Loading...
Searching...
No Matches
Ejemplo013.c
Go to the documentation of this file.
1
34
35#include <stdio.h>
36
37int main(int argc, char *argv[])
38{
39 (void)argc;
40 (void)argv;
41
42 int n, i;
43 float x; /* valor para ln(x) */
44 float lnx; /* acumulador de la serie */
45 float fct; /* f = (x-1)/(x+1) */
46 float fct2; /* f^2 */
47 float suma; /* término actual t_i = f^{2i+1}/(2i+1) */
48
49 /* Leer n >= 1 */
50 do {
51 printf("Ingres el numero de terminos: ");
52 scanf("%d", &n);
53 } while (n < 1);
54
55 /* Leer x > 0 */
56 do {
57 printf("Ingrese el valor de x: ");
58 scanf("%f", &x);
59 } while (x <= 0);
60
61 /*
62 Inicialización:
63 f = (x-1)/(x+1)
64 f2 = f^2
65 t0 = f^(1)/1 = f
66 lnx = 0
67 */
68 for (i = 0, fct = (x - 1) / (x + 1), lnx = 0, fct2 = fct * fct, suma = fct;
69 i < n;
70 i++)
71 {
72 /* Acumular término t_i */
73 lnx += suma;
74
75 /*
76 Actualizar al siguiente término:
77 t_{i+1} = t_i * f^2 * (2i+1)/(2i+3)
78 (evita recalcular potencias desde cero)
79 */
80 suma *= (fct2 * (2*i + 1)) / (2*i + 3);
81 }
82
83 /* ln(x) = 2 * serie */
84 lnx *= 2;
85
86 printf("ln(%f) = %f\n", x, lnx);
87 return 0;
88}
double fct(double x, int n)
Definition Ejemplo029.c:34
int main(void)
Definition Ejemplo_035.c:15