Somme qui déclenche une division par zéro

Résolu
Clemarze Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33769 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 !

A voir également:

4 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

C'est quoi, "mon erreur"?

Quand tu partages du code, merci de tenir compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Si tu veux comprendre ce que fait ton code, tu pourrais ajouter print(i) dans ta boucle.

0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 

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
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
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 

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