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

Algorithmes et structures de données Discussion :

Calculer cos(x) avec une série


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 155
    Points : 90
    Points
    90
    Par défaut Calculer cos(x) avec une série
    Bonjour,

    J'essaie de créer une fonction qui calcule la valeur du cosinus d'un nombre x (x appartient à ]-Pi, Pi[ ) gràce à la série :

    (Somme de n=0 à +oo) cos(x) = (-1)^n . (x^{2n}) / (2n!)

    (au fait, il n'y a pas moyen d'utiliser des formules Latex sur le forum ?)

    Voilà mon algo. (c'est un tout premier jet bien sûr) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    n = 0
    terme_1 = 1
    terme_2 = 1
    terme_3 = 1
    terme_final = 1
     
    do
    {
        terme_1 = terme_1 * (-1)
        terme_2 = terme_2 *(n * n)
        terme_3 = terme_3 *(2 *n)
     
         terme_final = terme_1 * terme_2 / terme_3
         reponse = reponse + terme_final
         n = n + 1
    } while (terme_final < precision)
    Voilà, la où le mat blesse c'est que 0! = 1 or avec mon code ici ça donnera 0 (car 0*0)
    Auriez vous une idée de comment contourner le problème ? Je pourrais bien sûr contourner avec un

    if (n = 0) ...

    mais ça ne serait pas très élégant.

    Voilà, sinon si vous avez des remarques à faire sur l'algo je veux bien aussi ...

    merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 155
    Points : 90
    Points
    90
    Par défaut
    En fait pour terme_3 ça ne va pas, ce que j'ai mis est faux.

    Il va faloir que je trouve autre chose je pense.

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Points : 635
    Points
    635
    Par défaut
    Je ne sais pas si j'me trompe ou pas, mais si tu commence avec tes 3 termes égaux à 1, alors ils correspondent à n=0, donc tu dois commencer ta boucle à n=1

    (-1)^0 = 1
    x^0 = 1
    0! = 1

    Donc à partir de là (n=1) tu n'as plus de problème

    En espérant que c'que j'ai écris soit correct ...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 155
    Points : 90
    Points
    90
    Par défaut
    Ah oui bien vu ça

    Je vais essayer mais je pense tout de même qu'il va faloir que je retravaille terme_3.

    merci

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 155
    Points : 90
    Points
    90
    Par défaut
    Et mince, je suis complètement à côté en fait
    Je dois tout refaire, j'ai été un peu vite ...

    meci

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 155
    Points : 90
    Points
    90
    Par défaut
    Je pense que j'y suis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    terme_1 = 1
    terme_2 = 1
    terme_3 = 1
    terme_final = 1
    reponse = 1
    i = 0
     
    do
    {
       terme_1 = terme_1 * (-1)
       terme_2 = terme_2 * X*X
       terme_ 3 = terme_3 * 1/( (i + 1)(i + 2) )
       terme_final = terme_1*terme_2/terme_3
       reponse = reponse + terme_final
       i = i + 2
    }while (terme_final < precision)
    J'essaierai ça tantôt ...

  7. #7
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Voilà qui me plaît nettement plus !!!!
    (dans la première solution X n'apparaissait même pas : cosinus devenait constant... Génant pour un "Evariste Gallois" !!!! )

    --
    Jedaï

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 155
    Points : 90
    Points
    90
    Par défaut
    En effet, j'ai été tellement vite que j'étais complètement à côté.
    Me suis dit que j'allait faire en sorte que personne ne remarque cette énorme bourde mais c'est raté

    Bon allez je traduis ça en C++ et je vois si ça fonctionne.

    merci bien

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 155
    Points : 90
    Points
    90
    Par défaut
    Quelques petites fautes pas bien importantes sont passées, mais en gros j'y étais. Voici la version finale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    terme_1 = 1 
    terme_2 = 1 
    terme_3 = 1 
    terme_final = 1 
    reponse = 1 
    i = 0 
     
    do 
    { 
       terme_1 = terme_1 * (-1) 
       terme_2 = terme_2 * X*X 
       terme_ 3 = terme_3 * 1/( (i + 1)(i + 2) ) 
       terme_final = terme_1*terme_2*terme_3 
       reponse = reponse + terme_final 
       i = i + 2 
    }while (abs(terme_final) > precision)
    Et si vous avez encore quelques remarques à faire, c'est toujours le bienvenu

    merci !

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Pour LaTeX, tu peux toujours écrire la formule puis l'afficher sous la forme d'une image

    En ce qui concerne la forumle, tu ne t'es pas trompé de côté pour la somme, par hasard ?
    Sinon, je te conseille de commencer par faire la somme des plus petits nombres, donc par n jusque 0.

  11. #11
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    il y a des algo de calcul plus rapide que les developpments limités.

    http://www.trigofacile.com/maths/tri...dic/cordic.htm

    http://www-fourier.ujf-grenoble.fr/~degraeve/iter.pdf

    et d'autres encore plus rapide.....

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 155
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par Nemerle
    il y a des algo de calcul plus rapide que les developpments limités.
    Oui mais ce n'est pas grave. Mon but ici c'est de m'entraîner à l'algorithmique de base (et de m'amuser par la même occasion).
    J'essaierai probablement ces méthodes la après.

    Citation Envoyé par Miles
    tu ne t'es pas trompé de côté pour la somme
    Que veut tu dire par là ? Les résultats qui sont fournis sont corrects en tout cas.

    Citation Envoyé par Miles
    Pour LaTeX, tu peux toujours écrire la formule puis l'afficher sous la forme d'une image
    Oui, bonne idée

    merci

  13. #13
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut Re: Calculer cos(x) avec une série
    il veut dire que

    Citation Envoyé par Évariste Galois
    (Somme de n=0 à +oo) cos(x) = (-1)^n . (x^{2n}) / (2n!)
    n'est pas "correct": c'est

    cos(x) = (Somme de n=0 à +oo) [ (-1)^n . (x^{2n}) / (2n!) ]

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 155
    Points : 90
    Points
    90
    Par défaut
    Ah oui en efft.
    Avec Latex :



    mais je suis obligé de stocker l'image sur mon ftp. Il n'y a pas une place infinie donc pour les prochains topics je devrais supprimer les images au fur et à mesure ...

    EDIT: Je ne sais pas pourquoi le mot ftp s'est mit en hyperlien

  15. #15
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    [hors sujet]
    Pour les images, il existe des sites de ce genre pour le stockage.

    Pour l'hyperlien de ftp, c'est parce qu'il y a un point après, et que c'est interprété comme le début d'une URL.
    [/hors sujet]

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 155
    Points : 90
    Points
    90
    Par défaut
    [hors sujet]
    En effet mais le programme de stockage ne fonctionne apparament pas sur win 98 (eeet non, mon ordi n'est pas tout neuf . Je compte bien en acquérir un nouveau mais ce n'est pas pour tout de suite ...)
    [/hors sujet]

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/05/2011, 21h47
  2. [XL-2007] calculer un rang avec une condition
    Par pepsister dans le forum Excel
    Réponses: 1
    Dernier message: 16/06/2010, 09h24
  3. comment calculer la somme d'une série
    Par osabri dans le forum Débuter
    Réponses: 10
    Dernier message: 14/03/2010, 16h27
  4. Calcul d'ombrage avec une lumiere de type spot
    Par zeeman dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 13/06/2007, 15h38
  5. Réponses: 2
    Dernier message: 17/10/2006, 10h54

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