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 :

instructions mathèmatiques en c++


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations forums :
    Inscription : Janvier 2013
    Messages : 48
    Points : 16
    Points
    16
    Par défaut instructions mathèmatiques en c++
    Bonjour j'ai ces équations

    j'ai essayé de les programmer comme suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     float d2=pow(u-a,2)+pow(v-b,2);
    	 cout<<"d2=================="<<d2;
    	cout<<"\n";
     
    	float k=(1/4)*sqrt(((pow(a+u,2)-d2))*(d2-pow(e-f,2)));
    est ce que que mon code est juste ?
    une autre équation

    j'ai la programmé comme suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    float x1=((1/2)*(u+a))+((1/2)(u-a)(e-f)/d2)+(2*(v-b)*k/d2);
    	float x2=((1/2)*(u+a))+((1/2)(u-a)(e-f)/d2)-(2*(v-b)*k/d2);
    est ce que que mon code est juste ?

    lorsque j'ai l'essayé sur un exemple j'ai trouvé qu'i est impossible de calculer x1 et x2 parce que le valeur dans sqrt est négative je me dit peut être j'ai mal implémenté
    Images attachées Images attachées   

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    ben remplaces les variables par des valeurs numériques et compare (avec ta calculatrice ou autre)!
    Dernière modification par LittleWhite ; 27/10/2013 à 08h05. Motif: Pas de SMS

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations forums :
    Inscription : Janvier 2013
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Alors mon code est juste ?
    et oui ça ce que je suis entrain de faire mais je me suis dit de poser aussi le code içi peut être j'ai mal l'interprété en c++

  4. #4
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonsoir,

    Pas la peine de comparer, 1/4 = Division entière de 1 par 4.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    float k=0.25*sqrt(((pow(a+u,2.0)-d2))*(d2-pow(e-f,2.0)));

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations forums :
    Inscription : Janvier 2013
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Re
    j'ai trouvé une petite faute , k normalement est calculé comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float k=(0.25)*sqrt(((pow(e+f,2)-d2))*(d2-pow(e-f,2)))
    lorsque j'ai travaillé sur un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    d2=10000
    e=98.21
    f=1.21
    lorsque j’exécute il me donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    pow(e+f,2)=9945.87
    pow(e+f,2)-d2=-54.12
    d2-pow(e-f,2)=534.473
    
    K=-1.#IND
    j'ai cru que c'était parce qu'il y avait une valeur négative, j'ai changé un peu dans K comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float k=(0.25)*sqrt(((pow(e+f,2)-d2))*(/*d2-pow(e-f,2)*/pow(e-f,2)-d2));
    normalement il va me donnée la même résultats pour K
    mais j'ai comme résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    pow(e+f,2)=9945.87
    pow(e+f,2)-d2=-54.12
    d2-pow(e-f,2)=534.473
    k=42.52 !!!!!!!

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Avec une valeur (qui sert dans une multiplication) de
    C'est tout à fait normal que le calcul de la racine carrée échoue : on ne peut calculer la racine carrée que de valeurs positives.

    Tu dois donc veiller à avoir une valeur exclusivement positive pour ta racine carrée.

    Pour ce faire, tu peux utiliser la fonction abs qui prend la valeur absolue (et donc positive) sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float k=(1/4)*sqrt(abs(((pow(a+u,2)-d2))*(d2-pow(e-f,2))));
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Pour ce faire, tu peux utiliser la fonction abs qui prend la valeur absolue (et donc positive) sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float k=(1/4)*sqrt(abs(((pow(a+u,2)-d2))*(d2-pow(e-f,2))));
    Mais du coup, ce n’est plus la formule initiale

    Sinon dans le calcul de K, dans la formule je lis deux fois Ra et Rb alors que dans ton code ce sont deux variables différentes…

  8. #8
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Si on a une valeur négative en argument d'une racine carrée, c'est qu'on sort du domaine de définition de la fonction...dans ce cas c'est une question de maths, pas de C++...

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations forums :
    Inscription : Janvier 2013
    Messages : 48
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Salut,

    Avec une valeur (qui sert dans une multiplication) de
    C'est tout à fait normal que le calcul de la racine carrée échoue : on ne peut calculer la racine carrée que de valeurs positives.
    Oui je sais ça mais le problème c'est que dans la deuxième fois il mas donné un valeur malgré que la valeur est négative
    voir mes deux résultats , vous allez voir que dans les deux fois le valeur est négatif mais dans la deuxième fois il as donnée un résultats
    Sinon dans le calcul de K, dans la formule je lis deux fois Ra et Rb alors que dans ton code ce sont deux variables différentes
    Oui j'ai déjà réglé ça , vous pouvez voir dans mon deuxième message

  10. #10
    Membre habitué
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    Mars 2009
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Astrophysique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2009
    Messages : 312
    Points : 176
    Points
    176
    Par défaut
    Salut.

    Avec les changements que tu as fais c'est assez difficile de s'y repérer. En plus comme tu ne nous a pas décrit le contexte on a du mal à voir où tu veux aller. Pourrais-tu copier-coller un bout de code qui compile (avec les include, le main et la définition de tes variables intermédiaires) pour que l'on voit par nous même où est le problème ?

    Mais tel que tu le décris il semble effectivement que le problème mathématique n'est déjà pas clairement défini pour toi. Il y a 3 solutions si tu as une formule qui prends des racines carrées de nombres négatifs:
    1) Le code doit planter car mathématiquement ça n'a pas de sens pour ton problème
    2) C'est à la racine carrée de la valeur absolue que tu t'intéresses
    3) Tu cherches les résultats dans le plan complexe

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/12/2014, 08h02
  2. Instruction pour créer un fichier text ???
    Par Soulsurfer dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h17
  3. [Crystal Report][VB6] instruction PrintReport
    Par yyyeeeaaahhh dans le forum SDK
    Réponses: 4
    Dernier message: 29/07/2002, 14h58
  4. [TASM] Problème concernant l'instruction LGDT
    Par Ninkosen dans le forum Assembleur
    Réponses: 3
    Dernier message: 15/07/2002, 19h09
  5. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19

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