lunes, 5 de octubre de 2015

Seno y coseno en series de Taylor para lenguaje Python.





Seno y coseno en series de Tayor aplicados en lenguaje Python.


     Autor: Michel Muñoz.

Competencia(s): Desarrrollo de software, programación en lenguaje Python.
                                                Aplicación efectiva matemática.

      Palabras clave: Programación, Python, Taylor.








Contextualización y descripción de la actividad:

            En el presente blog desarrollare entradas acerca de la programación, hablaré sobre diversas competencias básicas exigidas en mi universidad. Específicamente en el ramo de "Taller de integración" trabajamos acerca de cómo realizar un proyecto de manera correcta, bajo supervisores y ayuda de nuestros profesores

         Dentro del ramo tenemos que crear un repositorio, donde evidenciemos el trabajo ya realizado antes que subjetiva mente ha significado  en el aporte de nuestros conocimientos. Para realizar la tarea de repositorio como primera entrada escogí la activada de laboratorio n° 3 "Seno y coseno en series de taylor" del ramo de Programación 1 que trabajamos el primer semestre desde junio y presentamos en julio del 2015.

Introducción:

      En junio la profesora Marcella Bizama encargada del ramo de Programación 1, hizo la tercera evaluación  de laboratorio, donde debíamos trabajar con contenido básico de Python. En este tercer laboratorio se nos designo el  "Seno y coseno de en series númericas" donde debíamos cumplir con requisitos mínimos para ser presentado y luego poder defender nuestro trabajo.

   Python es un lenguaje de programación de sintaxis clara y sencilla, sí quieres saber como funciona puedes aprenderlo, 100% recomendado para los iniciados como yo en el mundo de la programación. Sólo trabajaremos en este lenguaje esta entrada -por mientras -y trabajaré en la versión de python 2.7.10 descargada desde el sitio oficial: https://www.python.org/

Descripción del trabajo:

Competencias a desarrollar:

- Desarrollo de software.
- Ciencia de la ingeniería.
- Programación en lenguaje Python.

Habilidades blandas (genéricas):

- Gestión del conocimiento.

Otros:

Curso: Programación 1.
Profesora: Maercella Bizama.        
Año: 2015.                 


-----------------------------------------------------------------------------------------------------------

Universidad Católica de Temuco.

Actividad

La actividad evaluada que nos designo la profesora:

Captura de pantalla acerca de la actividad desginada.


        Hay que mencionar que la profesora nos comunico que la serie numérica  a la cual se refería provenían de Brook Taylor (Siglo XVII). Primero veremos que es una serie numérica enfocada en la trigonométria (específicamente sólo en seno y coseno) y luego procederemos a como llevarlo a la programación. 
        
        La trigonometría (el estudio de los ángulos del triangulo en sus inicios) nos sirve en diversas materias de estudio como la cartografía, la astronomía, topografía, navegación, etc.
Dentro de lo básico se encuentra en seno y coseno que son las razones entre dos lados de un triangulo rectángulo:

Información proveniente de la web disfrutadelasmatematicas,com

       
Función seno:
sin(θ) = Opuesto / Hipotenusa
Función coseno:
cos(θ) = Adyacente / Hipotenusa
Un ejemplo de utilización puede ser esta, que tiene que ver con el ámbito del estudio de la física:

Sabiendo la  distancia entre la persona y el arbol, el angulo del triangulo formado podremos saber la altura del árbol, o si tenemos el angulo y la altura del árbol con la de la persona podemos calcular la hipotenusa, o también con las razones entre sus lados(seno y coseno) todo gracias a la trigonometría,
       
¿Y entonces para qué nos sirve la serie de Taylor? 

      La función de esta serie es que podamos calcular una aproximación del seno y coseno sin utilizar la división tradicional y demostrar por que una serie de sucesivas sumatorias si funcionan y pueden servir (y mucho).

Las siguientes sumatoria de series son:

 Como podemos ver la aproximación consta de una sumatoria, que parte desde 0 en n y puede ser calculada infinitamente(nos da un resultado más aproximado) pero que en un lenguaje de programación, (ya que trabajaremos con float, un tipo de dato que tiene sus límites) en este caso en particular  calcularé hasta n=99 veces la suma. Para el seno y coseno tenemos un x que va a ser el grado del angulo del triangulo rectángulo, dentro de nuestra dos sumatorias tenemos en común un factorial y (-1) elevado a nuestro numero de repeticiones. Estas repeticiones nos darán una suma negativa y otra positiva, dándonos un resultado decimal (negativo o positivo dependiendo del caso).

Finalmente ¿Cómo llevamos estas series a la programación en lenguaje python..?

Empezaremos desde los recursos básicos y funciones necesarias para cumplir con los requerimientos mínimos que nos puso la profesora :

(cada vez que salga una lista enumerada y en otra fuente es código de programación en python)
"#" signifcara un comentario dentro del codigo.

  1. import math #para comprobar resultados 
  2. bandera = True #será el switch de encendido/apagado del código

  3. def factorial(x):#definimos factoriales a utilizar en el código 
  4.            factorial = 1: #iniciamos en 1 
  5.            while (x >1):
  6.                      factorial = factorial * x  #ira multiplicando 
  7.            x = x - 1                  # y restando 1
  8.     return factorial                            #que nos retornará el factorial

  9. resultados = [] #para guardar nuestros resultados en una array
  10. ds
  11. while bandera: #hacemos el menú
  12.       
  13.     print "M&M COOMPANY LTDA." #mi compañía ficticia
  14.     print "Que funcion trigonometrica desea utilizar?"
  15.     print "1-Calcular el SENO"
  16.     print "2-Calcular el COSENO"
  17.     print "3-Ver resultados anteriores"
  18.     print "4-Finalizar programa"
  19. opcion_menu=float(raw_input("Digite su opción:  "))#Opcion a   
  20.                                      #utilizar dentro del menú
  21.  
  22. #trabajaremos por ahora creando la función SENO.
  23. #MENU 1
  24.     if opcion_menu == 1: #si se escoge el menú 1
  25.        #pedira al usuario que ingrese el angulo del rectangulo
  26.          
  27.        grado = float(raw_input("Ingrese grado del triangulo:"))
  28.        repeticiones = 99.0 #las 99 repeticiones
  29.             decimales = int(raw_input("con cuantos decimales desea ver?  "))
  30.             sumatoria = 1.0 #definí las variables necesarias
  31.             contador = 0.0
  32.             seno = 0.0
  33.              #y ahora comienza el trabajo, enumerare el trabajo               a realizar en una imagen

  34.                          #estableci un contador para                                     repeticiones exactas
  35.              while(contador < repeticiones): 
  36.                contador += 1  
  37.     #parte 1   dividendo = float((grado**(2.0*contador+1.0)))
  38.                divisor = float(factorial(2.0*contador+1.0))
  39.                sumatoria = float((dividendo/divisor))
  40.     #parte 2   if (contador % 2  == 0):
  41.                    seno += sumatoria 
  42.                else:
  43.                    seno -= sumatoria
  44.             senofinal=seno+grado
  45.    #parte 3 senofinal=str(round(senofinal, decimales))
  46.             grado=str(grado)
  47.             print "EL seno del grado",grado," es igual a ",senofinal

  48.             resultados.append("El seno del grado "+ grado + " es igual " + senofinal)

  49.     #MENU 2
  50.     if opcion_menu == 2:
  51.             grado=float(raw_input("Ingrese grado del triangulo:  "))
  52.             repeticiones = 99.0
  53.             decimales = int(raw_input("con cuantos decimales desea ver?  ")) 

  54.             sumatoria = 1.0
  55.             contador = 0.0
  56.             coseno = 0.0
  57.             cosenofinal = 0.0
  58.             while(contador < repeticiones):
  59.                 dividendo = float((grado**(2*contador)))
  60.                 divisor = float((factorial(2*contador)))
  61.                 sumatoria = float((dividendo/divisor))
  62.                 contador = contador+1

  63.                 if (contador % 2 == 0):
  64.                     coseno += sumatoria
  65.                 else:
  66.                     coseno -= sumatoria

  67.             cosenofinal= (coseno*(-1))
  68.             cosenofinal=str(round(cosenofinal, decimales))
  69.             grado=str(grado)
  70.             print "EL coseno del grado",grado," es igual ",cosenofinal
  71.             
  72.             resultados.append("El coseno del grado "+ grado + " es igual a " + cosenofinal)
  73.         

  74.     menu3=True #menu que mostrará el arreglo con los resultados
  75.     #MENU 3
  76.     if opcion_menu==3:
  77.         while menu3:
  78.             print resultados
  79.             sub_menu3=int(raw_input("Ingrese 1 para salir: "))
  80.             if sub_menu3 == 1:
  81.                 menu3= False
  82.        
  83.        
  84.     #MENU 4 si esta opcion es marcada se cerrara el programa
  85.     if opcion_menu==4:
  86.         print "Goodbye"
  87.         bandera=False #la bandera que mantendia funcionando                            #se apaga y con ello el codigo
#fin de codigo.




Reflexión de la actividad:

     Con a actividad realizada reuní los conocimientos aprendidos  y los aplique sobre una problemática mas amplia, además aprendí materia respectiva a las sumatorias y series de Taylor.
Finamente a creación de software fue efectiva y el trabajo  realizado de manera estructurada y ordenada. Con lo nuevo que aprendí me di cuenta que el lenguaje  Python puede servir para solucionar problemáticas reales.



Descarga de código:

     Lo comparto con todos los que  quieran utilizar, difundir y compartir. Se encuentra mejor organizado, ya que, el blog no deja escribir lineas largas. Saludos visitantes!





-----------------------------------------------------------------------------------------------------------

Universidad Católica de Temuco.


    


   







No hay comentarios:

Publicar un comentario