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

Bibliothèque standard C Discussion :

Problème avec sqrt()


Sujet :

Bibliothèque standard C

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Points : 23
    Points
    23
    Par défaut Problème avec sqrt()
    Bonjour à tous.
    J'ai un programme a faire en utilisant beacoup de formule mathématiques... mais mon problème est que lorsque j'utilise sqrt (pr la racine carré), mon calcul est coupé, on ne voit que la partie entière (ex on voit: x = 1.#IND00). J'ai tt essayé, tout est en double, j'ai mm essayé x = sqrt ((double)X); mais rien a changé.
    Si vous avez des idées, elles seront les bienvenus Merci

  2. #2
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Salut,

    Pourrait on voir le code qui nous prouve ton probleme?

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Par exemple, je calcule, lors des équations bicarré dans le 4ème degré, delta. j'obtiens delta = 0
    Mon code est celui ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    else if (delta == 0) /*calcul des racines lorsque delta est nul*/
    {
            X=(-c)/(2.0*a);
            x=sqrt(X);
            x1=-sqrt(X);
            printf("les deux solutions sont %lf et %lf", x, x1);
    }
    Parfois j'obtiens X négatif, donc je prend sa racine carré donc je pense que c'est surement dû a cette erreur... je vais essayé!

  4. #4
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Toutes les variables sont des doubles?
    Personnellement je sais pas ce qu'il se passe quand on fait "-(expression)", peut etre esssayer "(expression) * -1.0" pour s'assurer qu'on reste en double ?

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    ça yè j'ai trouvé la solution, en réalité quant X était négatif ça ne marchait pas... j'ai juste mis;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (X<0)
    {
            x = sqrt(abs(X));
            x1 = -sqrt(abs(X));
    }
    Et ça marche.. Merci en tt cas de ton aide!

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 943
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 943
    Points : 5 655
    Points
    5 655
    Par défaut
    Qoi,
    Citation Envoyé par Fredo123456 Voir le message
    ça yè j'ai trouvé la solution, en réalité quant X était négatif ça ne marchait pas... j'ai juste mis;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (X<0)
    {
            x = sqrt(abs(X));
            x1 = -sqrt(abs(X));
    }
    Et ça marche.. Merci en tt cas de ton aide!
    Sauf que le résultat est probablement faux par rapport à l'équation.
    Si les cons volaient, il ferait nuit à midi.

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Non je ne pense pas, après il faut juste dire que la solution est une solution imaginaire et l'on rajoute des i aux solutions.

    printf("les deux solutions sont: i%lf et i%lf", x, x1);

    C'est comme dans le 2ème degré, quand delta est négatif, on prend la valeur absolu de delta et après on rajoute des i...

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Fredo123456 Voir le message
    C'est comme dans le 2ème degré, quand delta est négatif, on prend la valeur absolu de delta et après on rajoute des i...
    si tu le dis....
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #9
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 943
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 943
    Points : 5 655
    Points
    5 655
    Par défaut
    Fie,
    Citation Envoyé par Fredo123456 Voir le message
    Non je ne pense pas, après il faut juste dire que la solution est une solution imaginaire et l'on rajoute des i aux solutions.

    printf("les deux solutions sont: i%lf et i%lf", x, x1);

    C'est comme dans le 2ème degré, quand delta est négatif, on prend la valeur absolu de delta et après on rajoute des i...
    Oui, bien sûr. Mais comme ce n'est pas précisé dans la réponse, je suppose que ce n'est pas fait, et que le résultat affiché est donc faux.
    Si les cons volaient, il ferait nuit à midi.

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

Discussions similaires

  1. Problème avec sqrt
    Par okitrinaw dans le forum Fortran
    Réponses: 2
    Dernier message: 25/03/2014, 13h06
  2. Problème avec la fonction sqrt
    Par djoe43 dans le forum C++
    Réponses: 8
    Dernier message: 02/05/2010, 22h42
  3. Problème avec sqrt()
    Par condor_01 dans le forum C
    Réponses: 10
    Dernier message: 11/10/2007, 23h36
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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