Programme C : aidez moi svp !!!
Utilisateur anonyme
-
Bazcht Messages postés 5 Statut Membre -
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 :'-(
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:
- Programme C : aidez moi svp !!!
- Programme demarrage windows - Guide
- Programme word gratuit - Guide
- Message programmé - Guide
- Mettre en veille un programme - Guide
- Desinstaller un programme - Guide
4 réponses
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
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
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 :-)
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 :-)