elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Serie de Seno(x) en Python calcula correctamente hasta sen(35)... por qué?
0 Usuarios y 3 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Serie de Seno(x) en Python calcula correctamente hasta sen(35)... por qué?  (Leído 5,660 veces)
Daor02

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Serie de Seno(x) en Python calcula correctamente hasta sen(35)... por qué?
« en: 20 Enero 2017, 21:15 pm »

Buenas! Paso a preguntar algo que no he podido entender. Estoy tratando de resolver un programa en Python que le pide al usuario un número x, a partir del cuál se va a hallar el sen(x) de ese número, en radianes, pero sin usar librerías sino siguiendo la serie matemática de:

sen(x) = (x^1)/1! - (x^3)/3! + (x^5)/5! ... (+-) (x^n)/n!

Además, el programa tiene que parar cuando la diferencia entre la serie y un nuevo término sea menor o igual a 0.001.

Así, este es el código que he hecho:

Código
  1. import math
  2.  
  3. x = float(input("Ingrese x: "))
  4.  
  5. exp = 1
  6. senox = 0
  7. comparacion = 1
  8. i = 1
  9.  
  10. while math.fabs(comparacion - senox) > 0.001:
  11.  
  12.    comparacion = senox
  13.  
  14.    if i % 2 == 0:
  15.  
  16.        senox -= (x**exp) / math.factorial(exp)
  17.  
  18.    else:
  19.  
  20.        senox += (x**exp) / math.factorial(exp)
  21.  
  22.    exp += 2
  23.    i += 1
  24.  
  25. print ("ANS:",senox)

Y funciona! Para los primeros 35 valores el resultado es bastante aproximado. Aun así, de ahí en adelante los resultados se van muy lejos de lo que en realidad son. Por ejemplo, si coloco x=45, me dice que sen(45) = -302.99513662655323, siendo que sen(45) es en realidad igual a 0.851... y no entiendo por qué? Alguno tiene alguna idea de por qué pueda pasar?

Un saludo! Gracias!

(A propósito, después del número 61 deja de calcular debido a que los números son muy grandes! Error: OverflowError: int too large to convert to float)

 :silbar: :silbar: :silbar:


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Serie de Seno(x) en Python calcula correctamente hasta sen(35)... por qué?
« Respuesta #1 en: 21 Enero 2017, 00:38 am »

Esa es una seriede taylor https://es.wikipedia.org/wiki/Serie_de_Taylor
Es solo una aproximación, y llega un punto donde da valores que no se aproximan.
Afortunadamente, las funciones trigonométricas se repiten a partir de 2*PI, así que podrías coger los valores siempre del intervalo [0, 2*PI)


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines