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
import math x = float(input("Ingrese x: ")) exp = 1 senox = 0 comparacion = 1 i = 1 while math.fabs(comparacion - senox) > 0.001: comparacion = senox if i % 2 == 0: senox -= (x**exp) / math.factorial(exp) else: senox += (x**exp) / math.factorial(exp) exp += 2 i += 1 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)