Marcando la diferencia

Serie de Taylor y la Función Seno! RESPUESTA AL ARTICULO Y PROPUESTA DEL CODIGO DE LA FUNCION SENO QUE DEJAMOS PLANTEADO MESES ATRÁS


 
 
Referencia: Se explica La Serie de Taylor y en particular hacemos notar la posibilidad de cálculo de las funciones trigonométricas mediante funciones “factoriales”, fáciles de representar en un sistema de cómputos.  Animamos al lector que aún no ha realizado la programación de las funciones trigonométricas para que los desarrollen, es una buena experiencia al poder comprobar esta capacidad. Un tema a tener en cuenta es la precisión deseada, que se refiere principalmente al número de iteraciones dentro de la función.  Se deja al lector la libertad de elegir la plataforma  y herramienta que más sea de su agrado.   Podrías utilizar por ejemplo un sistema operativo Linux y programarlo en C. o utilizar una calculadora HP  o cualquier calculadora programable, puedes comparar tus resultados con las implementadas por la herramienta en sí…   

         

 Texto Extraido: Wikipedia – Se deja para animar al lector el desarrollo de esta función.  En algunas semanas se incluirá el código en lenguaje C.         

         

En hora buena!!!!          

Respondiendo a lo que habiamos prometido hace unos meses Cumplimos en dejar el Código en Lenguaje C de la Función Seno!!!          

Es realmente  simple construir esta función interesante.          

https://i2.wp.com/i42.tinypic.com/xb9r36.gif          

CODIGO DE LA FUNCION SENO EN LENGUAJE C.            

POR SER ESTE LENGUAJE DIDACTICO Y DEL CONOCIMIENTO EN AMBIENTE TECNOLOGICO.          

#include <math.h> //libreria de funciones matematicas, para este caso para habilitar el uso de pow: funcion de calculo de potencias.          

int factorial (int valor) //Función Factorial de un Número Entero
 {  int factor,i;
    factor=1;  // Incluimos Multipliación por 1. Según definición pero no hace falta
    for (i=1;i<=valor;i++) {factor=factor*i; }
    return (factor);  // retorna el factorial de un número.
}
// Funcion Seno                      
float Seno(float valor) //sen (x)=x-((x^3)/3!)+((x^5)/5!)-((x^7)/7!)+((x^9)/9!)….
{
    // Declaración de variables
      float resultado;
      int i, posicion, precision;
   
     //Asignaciones iniciales de los valores
      resultado= valor; // valor al que será aplicado las Sumas algebraicas del calculo.
      precision=45; // Por ejemplo elegimos un valor de precision de 45 ciclos.
                

  // Calculo de la Función seno propiamente Dicha.  
      for(i=1; i<=precision; i++)
      {
          posicion = i * 2 + 1; //Recorrer Valores Impares          

          if(i%2==0) // Segun Signo Positivo
                    resultado += pow(valor, posicion) / factorial(posicion);
         
       else // Segun Signo Negativo
  
                    resultado -= pow(valor, posicion) / factorial(posicion);
      }
    
       return (resultado); // retorna el valor del seno en Radianes.
}
void main(void//Bloque principal de ejecución
{       float angulo_radian;
        angulo_radian = Seno(3.14);
}          

            

          

            

DESCRIPCION MATEMATICA DEL MISMO.          

EL LINK DEL ARTICULO ANTERIOR:          

https://ramaucsa.wordpress.com/2010/06/15/serie-de-taylor-y-la-funcion-seno/

6 comentarios

  1. Chayan

    El programa No Funciona… Lo Pongo a Imprimir angulo_radian Y Sale: -1.#IND

    8 octubre, 2011 en 6:58 PM

    • WALTER ESCURRA

      si no te funciona podes cambiar todos los float por double, lo probe en otras herramientas y funciona, barbaroo!!! en principio no lo probe, ahora me tome tiempo para verlo y si funciona correctamente, cuando lo escribi ni lo habia probado con ningun compilador, despues lo estuve observando y no tiene errores ni sintacticos ni tecnicos, ni matematicos, esta excelente, ahora lo pase a otro lenguaje y sigue funcionando barbaro, solo le ajuste el factorial para retornar float, y todo funciona con float, sino te parece, podes aumentarlo a double, y la precision la seteé a 12😉 probe con algunos angulos en radianes y los checkeé con una calculadora científica, y es correcto su desempeño….

      SI UNO QUIERE PROFUNDIZAR EL EN TEMA, ME GUSTARIA QUE SE DEFINA EL % DE ERROR COMPARANDOLA CON ALGUNA CALCULADORA DE PRECISION….
      EN CUANTO A LOS DECIMALES QUE NO SE APROXIMAN…. ESO DEPENDE DE LOS CICLOS DE CPU EN ALGUNOS CASOS, EXISTEN OTRAS FORMAS OPTIMIZADAS INCLUSO LLEVARLO HASTA LENGUAJE MAQUINA PARA TENER MEJOR RESULTADO, YO PLANTEO COMO REALIZAR LOS CALCULOS A NIVEL DE ALGORITMOS MATEMATICOS CONOCIDOS PARA QUE SE PUEDA ENTENDER COMO FUNCIONAN ESTOS TIPOS DE CALCULOS, QUE COMO SE PLANTEA PARA EL CASO DE CALCULOS TRIGONOMÉTRICOS…. NO VALDRIA LA PENA QUE LO ESCRIBIERA EN ENSAMBLADOR PORQUE NO PODRIAN ENTENDER CON FACILIDAD… AUNQUE SOY AMANTE DE LOS CODIGOS ENSAMBLADORES, AUNQUE HACE TIEMPO QUE NI LOS MIRO, DESDE QUE ESTOY ENFOCADO AL MUNDO DE LA ELECTROTECNIA, LA INFORMATICA PASO A SEGUNDO PLANO😉
      PERO EN ESTE MUNDO TODO ESTA RELACIONADO ASI QUE ESTO QUE DEJO AQUÍ ES MUY UTIL DESDE CUALQUIE PUNTO DE VISTA QUE DESEAN MIRARLOO…

      10 noviembre, 2012 en 9:20 PM

  2. El código que se ha incluido en un pseudo-C, por eso al compilar te dará error, era solo válido para explicar el algoritmo, y dejamos a los lectores que desarrollen en sus herramientas y lenguajes de su predilección como se explico con anterioridad. En otro momento se puede volver a incluir en el mismo documento, la versión en lenguaje C, para que lo compiles directamente, pero como el objetivo fue solo mostrar como se realiza el algoritmo, estamos en contacto, gracias!!!

    8 octubre, 2011 en 7:44 PM

  3. D&S

    excelente

    25 octubre, 2012 en 5:49 PM

  4. Alancito O-o

    me marca error en
    void main(void) //Bloque principal de ejecución
    { double angulo_radian;
    angulo_radian = Seno(3.14);
    }

    26 septiembre, 2014 en 11:50 AM

    • lo debes definir como float no como double ya que la funcion seno está definida como float o realizar algun cast.

      void main(void) //Bloque principal de ejecución
      { float angulo_radian;
      angulo_radian = Seno(3.14);
      }

      en el ejemplo está así, por esa misma cuestión, salvo que cambies la función que reciba double y tus calculos estén en double…

      Espero te sirva la info!!

      29 septiembre, 2014 en 1:41 PM

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s