Méthode de dichotomie
Résolu
LACHHABFADOUA
Messages postés
24
Statut
Membre
-
LACHHABFADOUA Messages postés 24 Statut Membre -
LACHHABFADOUA Messages postés 24 Statut Membre -
Bonjour, svp j'ai essaye d'écrire un code qui permet de résourdre les fonctions non liénaire(f(x)=0) en utilisant la méthode de dichotomie.ms malheureusement, il ne renvoie aucun valeur aprés l'exécution ,svp aide moi a résourde ce prb et merci d'avance.
#include <stdio.h>
#include <stdlib.h>
double f(double x){
double y;
y=(x*x*x)-(x*x)+x+1;// la fonction x^3-x^2+x+1
return y;}
void dichotomie(){
double a,b,x;
double E;// la précision epsilon
printf("\ndonner l'interval [ a b ] : ");
scanf("%lf %lf",&a,&b);
printf("donner E : ");
scanf("%lf",&E);
do
{
x=(b-a)/2;
if(f(a)*f(x)<0){
b=x;
}
if(f(b)*f(x)<0)
{
a=x;
}
} while(b-a > E);
printf(" %lf ",x);
}
int main(int argc, char *argv[])
{
dichotomie();
system("PAUSE");
return 0;
}
Configuration: Windows / Chrome 86.0.4240.198
2 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
"il ne renvoie aucun valeur": à quelle ligne penses-tu "retourner" une valeur?
quelle fonction devrait-elle retourner une valeur? -
Bonjour,
Le comportement de ta fonction dépend de l'intervalle que tu choisis. Il me semble qu'elle peut fonctionner dans certains cas à condition de remplacer la ligne 18 parx = (a+b)/2;
, mais dans d'autres elle va se mettre dans une boucle infinie. Par exemple sif(a)
,f((a+b)/2)
etf(b)
ont le même signe.