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

Pascal Discussion :

Valeur approchée de la constante PI par la méthode de Wallis


Sujet :

Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Par défaut Valeur approchée de la constante PI par la méthode de Wallis
    Bonjour,
    y a-t-il quelqu'un qui peut m'aider ?
    Je cherche la valeur approchée de la constante PI par la méthode de Wallis
    [PI = 2*(2/1 * 2/3 * 4/3 * 4/5 * 6/5 * 6/7 * ....)]
    Voilà ma proposition, théoriquement ça marche mais sur la machine elle m'affiche 0.00000000
    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
    18
    19
    20
    21
    22
    uses wincrt;
    const
    eps=10E-6;
    var
    p1,p2:real;
    i,n,d:integer;
    begin
        p2:=2;
        i:=2;
        n:=2;
        d:=3;
        repeat
            p1:=p2;
            p2:=p2*(n/d);
            if (i mod 2=0) then
                n:=n+2
                else
                d:=d+2;
            i:=i+1;
        until abs(2*p2-2*p1)<eps;
        write('La valeur approchée est : ',2*p2:0:10);
    end.
    merci d'avance.

  2. #2
    Membre chevronné
    Homme Profil pro
    .
    Inscrit en
    Juin 2002
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2002
    Messages : 239
    Par défaut
    Bonjour.

    La formule de Wallis donne une suite qui converge vers Pi, mais cette suite converge très lentement vers Pi.

    Pour obtenir une précision de 10E-6, il faut calculer un nombre énorme de termes.
    Ce nombre est supérieur à 2^16 = 65536.

    La variable n est déclarée comme une variable entière ; elle est donc stockée sur deux octets c'est-à-dire sur 16 bits.
    Comme cette variable n est initialisée à 2 puis incrémentée de 2 une fois sur deux, elle finit par atteindre la valeur 65536, c'est-à-dire qu'elle est remise à 0.
    Et quand n vaut 0, p2 prend la valeur 0 aussi.
    L'algorithme s'arrête alors et affiche le résultat obtenu, à savoir 0.

    Pour éviter ce problème, on peut :

    1) demander une précision inférieure, par exemple 10E-1, afin que la variable n n'atteigne pas la valeur 65536.

    2) déclarer la variable n comme un longint ( elle sera alors stockée sur 4 octets ), voire même la déclarer comme un real.
    Il faut faire de même pour la variable d, sinon d va passer de 65535 à 1 et le résultat sera faux.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Par défaut
    merci beaucoup

  4. #4
    Invité de passage
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1
    Par défaut Réponse à Bzinfo
    tes variables N et D doivent être déclarées en tant que LONGINT car leurs incrémentation pour une telle précision 0.000001 dépassent nécessairement la limite sup des entiers

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    on peut aussi éviter le modulo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var
      p: Double;
      i: Integer;
      n: Double;
    begin
      p := 2;
      for i := 1 to 100000 do // choix du nombre d'itération
      begin
        n := 2 * i;
        p := p * n/(n-1) * n/(n+1);
      end;
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

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

Discussions similaires

  1. [WD12] Valeurs des constantes définies par WD/WB/WM
    Par =JBO= dans le forum WinDev
    Réponses: 3
    Dernier message: 22/10/2009, 12h19
  2. Exercice de calcul de valeur approchée
    Par annoussa dans le forum Pascal
    Réponses: 8
    Dernier message: 22/10/2006, 10h51
  3. Réponses: 6
    Dernier message: 22/08/2006, 15h37
  4. Modifier une valeur dans un fichier sans passer par l'éditeur
    Par elkhy dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 09/06/2006, 00h15
  5. valeur d'un champ text modifié par une variable en parametre
    Par klimero dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 21/04/2006, 10h39

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