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

 C++ Discussion :

Approximation de pi


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Par défaut Approximation de pi
    Bonjour tous le monde

    Bon je suis nouveau au domaine de programmation
    J'ai cherché partout mais je ne trouve toujours pas une solution a mon problème :
    Il y a différentes façons de calculer π en mathématique. L’une d’elle est la méthode des séries infinies, on vous demande de calculer π en utilisant la série ci-dessous :
    π = 4Σ((-1)k/(2k+1)) ; k= 0, k  ∞
    et en vérifiant votre résultat contre 3.14159. Afficher la valeur de k pour obtenir le résultat
    J'ai réussi à écrire ce code, mais je suis sure qu'il n'est pas correct : j ai vraiment besoin d'aide et merci d'avance

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #include<iostream>
    #include<cmath>
    #include<iomanip>
     
    using namespace std;
     
    int main (void)
    {
    	double puiss(1) , terme(1) , division , somme ,epsilon , pi , valeur;
     
    	int k , i;
    	cout.setf(ios::fixed);
    	epsilon = 0.00001;
    	somme = 0;
    	k = 0;
    	do
    	{
    		k++ ;
    		puiss = puiss * (-1) ;
    		terme = 2*k +1 ;
    		division = puiss / terme;
    		for ( i =1 ; i <= k ; i++)
    			somme += division ;
    		pi = 4* somme ;
    		valeur = fabs( 3.14159- pi );
    	}
    	while( valeur < epsilon );
    	cout << k << endl;
    	cout << setw(7) << setprecision(5) << pi << endl;
    	return 0;
    }

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour et bienvenue sur le forum

    J'ai réussi à écrire ce code, mais je suis sure qu'il n'est pas correct
    Pourquoi dis tu cela ?
    Tu as eu un bug ? Il faut le donner
    Tu as eu un résultat incorrect ? Il faut le donner aussi

    En C++, prend l'habitude de déclarer une variable par ligne, de ne le faire que lorsque tu en as besoin et de l’initialiser tout de suite. Utilise const pour les constantes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const double epsilon = 0.00001;
    int k = 0;
    (...)
    const double terme = 2*k +1;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for ( i =1 ; i <= k ; i++)
        somme += division;
    Ce que tu fais s'appelle une multiplication...
    Je suppose que ce n'était pas ça que tu voulais faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while( valeur < epsilon );
    Tu es sur de vouloir continuer le calcul "tant que le différence est inférieure à epsilon" (et donc arrêter quand la différence est plus grande que epsilon) ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Par défaut
    pour les declaration t'as bien raison c'est ce que je dois faire

    Mais quand je compile ca me donne la valeur

    k=1 et pi = -1.3333

    mais moi j'ai besoin de trouvé le k pour que pi sois egale a 3.14159 je pense pas que j'ai erreur dans le epsilon et l'affichage vers la fin .. mais je sais que j'ai foiré quelque part dans les somme et division ce problème m'a pris deux jours mais toujours aucun résultat j'arrive juste pas a trouvé l'erreur

    et pour la dernière ligne de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while( valeur < epsilon );
    quand j essaye l'inverse rien ne s,affiche j'imagine que cava vers des calcul infini

    Merci pour votre réponse rapide

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Oui, le calcul implémenté n'est pas le même que la formule donnée.
    Méthode pour résoudre le problème : prend une feuille de papier et un crayon et déroule la formule pour k=0, k=1, k=2, etc. Exécute ensuite ton algorithme sur la feuille de papier, en notant pour chaque ligne de ton code la valeur prise par tes variables.
    Tu trouveras ce qui est différent entre les 2

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Par défaut
    ca c'est une leçon que tu ma donné merci

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Ce qui veut dire que tu as réussit à résoudre ton problème ?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    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
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #include<iostream>
    #include<cmath>
    #include<iomanip>
     
    using namespace std;
     
    int main (void)
    {
    	const double epsilon = 0.0009;
    	const double pi1 = 3.14159;
    	int k = 0 ;
    	double somme = 0.0;
    	double pi2 =0.0;
    	double val=0.0;
    	cout.setf(ios::fixed);
     
    	while ( fabs(val) <= epsilon )
    	{
    		somme += ((pow(-1.0, k)/(2*k+1))) ;
     
    		val = pi1 - 4*somme;
    			k++;
    	}
    	pi2 = 4*somme;
    	cout << k << endl;
    	cout << setw (7) << setprecision(5) << pi2 <<endl;
    	return 0;
    }
    Bon j'en peux plus la hahaha ca commence a devenir chiant

Discussions similaires

  1. Approximation foireuse
    Par TonyEgg62 dans le forum C++
    Réponses: 8
    Dernier message: 26/04/2006, 16h43
  2. [MySQL] Implémenter une fonction de recherche approximative
    Par Chromatic dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 28/02/2006, 11h54
  3. [ImageMagick] Détection des couleurs approximative d'une image ?
    Par SkyDev dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 18/01/2006, 14h17
  4. probleme requete recherche approximative
    Par Immo dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/08/2005, 16h18
  5. [Astuce] Approximation de racines carrées
    Par Smortex dans le forum Assembleur
    Réponses: 16
    Dernier message: 18/05/2004, 06h17

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