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 :'-(
A voir également:

4 réponses

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
Baztien
 
Plutot double que float
J'avais lu le code trop vite.
Enfin bon t'as saisi le principe je pense :-)
0
Utilisateur anonyme
 
merci beaucoup pour ton aide :-) le programme fonctionne maintenant !!!
0
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