le péché avec la série de taylor en python

C'est mon code :

import math    
x=float(( input ('x ? ' )))  
n  = 1000   #a big number 
b=0      
for i in range (n):    
   a=(((((-1)**i))*(x**((2*i)+1)))/(math.factorial((2*i)+1)))   
   b+=a     
print (b)

mais il ne fonctionne pas et affiche cette erreur:

"OverflowError: long int too large to convert to float"
  • Quelle est la question? math.factorial(1999) est trop grande pour convertir un float. Il est à environ 10^5733. La valeur max de float est sys.float_info.max, que je vais pari est d'environ 10^308 sur votre système.
  • vous pouvez calculer le as en utilisant la récursivité: a[i] = -a[i-1] x**2 / 2i / (2i + 1)
  • pour examaple quand je veux calculer le péché 30 mon entrée est performer 0.523 . mais il les "OverflowError: long int trop grand pour convertir flotter"
  • avez-vous vu mon dernier commentaire ici ?!
  • L'entrée est hors de propos, votre code calcule factorial(1999) (ainsi qu'un tas d'autres numéros qui sont trop gros pour convertir float), indépendamment de la valeur d'entrée. Lorsque vous divisez un float par un nombre entier, Python essaie de convertir l'entier à un flotteur. Il échoue.
InformationsquelleAutor Hippo | 2013-11-14