bonsoir,
j'ai l'énoncé suivant:
On peut calculer approximativement le sinus de x (voir définition du sinus) en effectuant la sommation des n premiers termes de la série (c'est-à-dire la somme infinie) :
Nom : sin.PNG
Affichages : 1475
Taille : 3,2 Ko

où x est exprimé en radians.
On vous demande d'écrire un code qui lit une valeur flottante (float) x en entrée et qui imprime une approximation de sin(x).

Votre code additionne les termes successifs dans la série jusqu'à ce que la valeur d'un terme devienne inférieure (en valeur absolue) à une constante ϵ (prenez ϵ=10−6). Affichez (imprimé) ensuite l'approximation ainsi obtenue.

Attention : Calculer explicitement la valeur des factorielles peut poser des soucis lorsque vous utilisez les valeurs pour des calculs avec des float. Si c'est le cas, pensez à une autre façon de faire !


la solution que j'ai proposé est la suivante mais ça ne donne pas des résultat correcte pour tout les entrées :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
import math
def fact(y):
    n=1
    for i in range(2,y+1):
        n*=i
    return n
x = float(input())
eps=10e-6
def sin(x):
    sin=x-(x**3/fact(3))+(x**5/fact(5))-(x**7/fact(7))
    if sin<abs(eps):
        return  sin
print(sin(x))