Desarrollo de la serie sen(x)

De Ejercicios


Contenido

Enunciado

Realiza un programa análogo al anterior que emplee una función de C para calcular sen(x), cuyo desarrollo en serie es:

imagen:Seno.JPG

Soluciones

Programa en C por Angel

 /* fichero serie3.c */
 #include <stdio.h>
 #include <math.h>
 void main(void) {
   int i, n;
   double x, serie1, serie2, frac=1;
   double fac(int);
   double pot(double, int);
   printf("Este programa calcula el valor del seno.\n");
   printf("Introduce el valor del angulo en radianes: ");
   scanf("%lf", &x);
   serie2=x;
   serie1=0.0;
   frac=x;
   i=2;
   while (serie1!=serie2) {
      serie1=serie2;
      n=2*i-1;
      frac=-frac*(x*x/(n*(n-1)));
      serie2+=frac;
      i++;
   }
   printf("\nValor estimado: %20.16e\n", serie2);
   printf("Valor exacto: %20.16e\n", sin(x));
   printf("Numero de terminos utilizados: %d\n", i);
 }

Comentario

En este programa cada fracción que se añade a la serie se calcula también a partir del anterior. Se tiene en cuenta que los distintos términos cambian de signo alternativamente, y que cada uno es el anterior multiplicado por x al cuadrado, y dividido por (2*i-1)*(2*i-2).


Solucion en Pseudocódigo

 ALGOTIRMO serie3
 ENTRADAS:
    x:REAL
 SALIDAS:
    serie2:REAL
 VARIABLES:
    i:ENTERO
    n:ENTERO
    serie1:REAL
    frac:REAL
 
 INICIO
 
    frac<--1
    ESCRIBIR "Este programa calcula el valor del seno."
    ESCRIBIR "Introduzca el valor del ángulo en radianes: "
    LEER x
 
    serie2<--x
    serie1<--0.0
    frac<--x
    i<--2
 
    MIENTRAS serie1<>serie2 HACER
        serie1<--serie2
        n<--2*i-1
        frac<-- (-frac)*((x*x)/(n*(n-1)))
        serie2<--serie2+frac
        i<--i+1
    FIN_MIENTRAS
 
    ESCRIBIR "Valor estimado: ", serie2
    ESCRIBIR "Valor exacto: ", ''seno(x)''
    ESCRIBIR "Número de términos utilizados: ", i
 
 FIN

Comentario

Para este ejemplo suponemos que existe una función seno que nos devuelve el valor real del seno de un número.

Programa en Matlab

%Programa SenoAproximado
%Descripción: Calcula de forma aproximada el valor de sen(x). 
%Entradas:Valor de x para calcular el seno.
%Salidas:El valor del seno en ese x.
%Variables:
%   serie,fact,pos: ENTEROS
%   texto: ARRAY (o cadena) DE CARACTERES
%   x: REAL
disp('Este programa calcula el valor del seno');
x = input('Introduce el valor del ángulo en radianes:' );
serie = 0;
fact = x;
pos = 1;
while (fact+serie)~=serie
    serie = serie+fact;
    pos = pos+1;
    fact = (-1)^(pos+1)*x^(2*pos-1)/factorial(2*pos-1);
end
disp( ['Valor estimado:', num2str(serie)] );
disp( ['Valor exacto:', num2str(sin(x))] );
disp( ['Utilizados' num2str(pos) 'términos'] );
Navegación
icono.png);" href="/mcdiaz/docencia/ejercicios/index.php?title=P%C3%A1gina_Principal" title="Portada [z]" accesskey="z">
Tipos de soluciones