IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Calculer approximativement le sinus d'un nombre x


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Janvier 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert sécurité informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2020
    Messages : 16
    Points : 18
    Points
    18
    Par défaut Calculer approximativement le sinus d'un nombre x
    Bonjur à tous j'ai un exercice à faire que j'ai mis en pièce jointe voilà ce que j'ai fait je n'arrive pas à trouver le même résultat pouvez-vous m'aidez svp merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from math import factorial
     
    x = float(input())
    t, n, s = 1, 0, 0
     
    while abs(t) > 1e-6:
        t = (-1)**n * x**(2*n+1) / factorial(2*n+1)
        s += t
        n += 1
     
    print(s)
    Images attachées Images attachées  

  2. #2
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 55
    Points : 64
    Points
    64
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from math import factorial
     
    x = float(input())
    t, n, s = 1, 0, 0
     
    while abs(t) > 1e-6:
         t = (-1)**n * x**(2*n+1) / factorial(2*n+1)
         s += t
         n += 1
    # après la boucle while et aligné sur le while (ce que je ne peux pas obtenir avec l"éditeur???)
    s-=t
    print(s)
    Ainsi, le script donne le résultat demandé.

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Calculer comme ça conduit à refaire une partie des calculs à chaque terme, et c'est dommage.

    Il faut calculer par itération. Chaque terme se déduit facilement du précédent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def sin2(x, eps=1.0E-6):
        """Calcul du sinus de x
        """
        t = x # 1er terme
        s = t # 1ère somme
        n = 0 # 1er indice
        while abs(t)>eps:
            n += 1 # nouvel indice
            t *= -x*x/(2*n*(2*n+1)) # nouveau terne calculé à partir du précédent
            s += t # nouvelle somme
        return s
    Avec la précision proposée par l'exo de 1.0E-6, cela donne:
    0.7173560930426808

    Si je pousse la précision à 1.0E-16 (puisque Python calcule avec les flottants "double" du C):
    0.7173560908995229

    Et si je compare avec le sinus du module math de Python, cela donne:
    0.7173560908995228

    Bizarrement, je ne retrouve pas le résultat annoncé dans l'exo, mais mon calcul conduit au résultat de Python (ainsi que de la calculatrice de mon téléphone ;-))
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Bizarrement, je ne retrouve pas le résultat annoncé dans l'exo, mais mon calcul conduit au résultat de Python (ainsi que de la calculatrice de mon téléphone ;-))
    C'est parce que le dernier terme ajouté est < 1e-6, il faut juste "bouger" quelques lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    def sin2(x, eps=1.0E-6):
        """Calcul du sinus de x
        """
        t = x # 1er terme
        s = 0 # 1ère somme
        n = 0 # 1er indice
        while abs(t)>eps:
            s += t # nouvelle somme
            n += 1 # nouvel indice
            t *= -x*x/(2*n*(2*n+1)) # nouveau terne calculé à partir du précédent
        return s
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calculer la racine carrée d'un nombre d'une façon particulière
    Par Roud9 dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 29/09/2010, 03h11
  2. Nombre premiers et calculer la racine carrée d'un nombre
    Par Roud9 dans le forum Débuter avec Java
    Réponses: 19
    Dernier message: 21/09/2010, 17h55
  3. Calcul des racines nième d'un nombre complexe donné
    Par lucaordi dans le forum Débuter
    Réponses: 4
    Dernier message: 02/08/2008, 21h01
  4. Calculer la racine quelconque d'un nombre
    Par badkiller3100 dans le forum Langage
    Réponses: 5
    Dernier message: 12/09/2007, 17h51
  5. Calcul de la factorielle d'un nombre naturel
    Par Sadgunner dans le forum Pascal
    Réponses: 9
    Dernier message: 20/06/2006, 21h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo