Somme qui déclenche une division par zéro

Résolu
Clemarze Messages postés 2 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

J'ai cet exercice à réaliser :

Donner la valeur approchée avec au moins 5 chiffres significatifs de S_{{610}} où

\displaystyle S_N=\sum_{k=1}^N {-\frac{\sin \left( 3.0\cdot k \right)}{k}}

Voici mon programme :

import math

S1 = 1
i = 1
for i in range(610):
  S1 = S1 + (-math.sin(3 * i) / i)
print(S1)

Mais je ne comprends pas mon erreur. Serait-il possible de me dire où elle est s'il vous plaît ?

En vous remerciant !

4 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     

    Bonjour,

    Si je lance ton code j'obtiens :

    In [1]: import math
       ...: 
       ...: S1 = 1
       ...: i = 1
       ...: for i in range(610):
       ...:   S1 = S1 + (-math.sin(3 * i) / i)
       ...: print(S1)
    ---------------------------------------------------------------------------
    ZeroDivisionError                         Traceback (most recent call last)
    Cell In [7], line 6
          4 i = 1
          5 for i in range(610):
    ----> 6   S1 = S1 + (-math.sin(3 * i) / i)
          7 print(S1)
    
    ZeroDivisionError: float division by zero

    On voit que la seule division est "/ i" et effectivement en itérant sur range(610), tu itères sur les valeurs {0, 1, 2, ... 609}.

    Il faut donc itérer sur range(1, 611) pour considérer les valeurs {1, 2, ... 610}.

    Bonne chance

    0
  2. Clemarze
     

    J’ai rajouté un print à mon programme et cela me dit que la division n’est pas bonne et qu’on ne peux pas diviser par un flotant. Je ne m’y connais pas trop je ne sais pas comment remédier à ce problème ? 

    0
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     

    Peux-tu reporter l'erreur exacte (avec un copier coller) et indiquer quelle version de python tu utilises ? Si tu es en python2 je t'invite à passer en python3. Car comme tu peux le voir ci-dessous, il ne devrait pas y avoir d'erreur

    (mando@silk) (~) $ ipython3
    Python 3.10.9 (main, Dec  7 2022, 13:47:07) [GCC 12.2.0]
    Type 'copyright', 'credits' or 'license' for more information
    IPython 8.5.0 -- An enhanced Interactive Python. Type '?' for help.
    
    In [1]: import math
       ...: 
       ...: S1 = 1
       ...: i = 1
       ...: for i in range(1, 611):
       ...:   S1 = S1 + (-math.sin(3 * i) / i)
       ...: print(S1)
    0.9283835846497664
    

    Bonne chance

    0