Programme C : aidez moi svp !!!

Utilisateur anonyme -  
Bazcht Messages postés 5 Statut Membre -
bonjour à tous
débutante en programmation, jai tenté de rédiger un programme permettant de trouver les racines de la fonction f=(1/2) - (x^2) sur l'interval [0,1]. pour cela je veux utiliser la méthode de pas. jai donc tapé ceci :

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

float delta_x = pow ( 10 , (-8) );
double f;

int main ()
{
double x;

for ( x = 0 ; x <= 1 ; x = x + delta_x )

{
f= (0,5 - ( pow ( x , 2)));
if ( f == 0 )
printf (" %f est une racine de la fonction f \n ", x);

}

return 0;
}

Malheuresement cela ne fonctionne pas :-(
quelqu'un pourrait-il m'aider s'il vous plait :'-(

4 réponses

  1. Baztien
     
    Hello,

    Ca ne fonctionne pas parce que tu fais le test if ( f == 0 ) pour savoir si tu es sur la racine. Le problème, c'est qu'étant donné que tu travailles sur des float, le résultat ne sera jamais exactement égal à 0.

    Il faut que tu définisse une valeur epsilon petite, avec par exemple :
    float epsilon = 1e-7;

    Et modifier la comparaison avec if (abs(f)<epsilon)

    A+,
    Baztien
    0
  2. Baztien
     
    Plutot double que float
    J'avais lu le code trop vite.
    Enfin bon t'as saisi le principe je pense :-)
    0
  3. Utilisateur anonyme
     
    merci beaucoup pour ton aide :-) le programme fonctionne maintenant !!!
    0
  4. Bazcht Messages postés 5 Statut Membre
     
    C'est remoi (Baztien) j'ai du changer de pseudo pour l'inscription vu que quelqu'un avait déjà ce nom ^^

    Bon anyway, pour sortir du hs, à propos de ce type d'erreur, ça peut être évité en compilant (si tu utilises gcc) avec l'option -Wall. Ca permet de déclencher des avertissements sur ce type d'erreurs et permet souvent d'éviter de s'arracher les cheveux :-)
    0