lavela a écrit:on nous a donne un bleme de programation sur la methode de dichotomie en language C,avec f(x)=lnx sur [0.5,1.5].THANKS :hum:
#include math.h
main()
{
double StartValue;
double EndValue;
double LogVal1;
double LogVal2;
double LogValTemp;
bool FinDeDicho;
FinDeDicho = false;
StartValue = 0.5;
EndValue = 1.5;
// On vérifie si il y a une solution sur l'intervalle [StartValue;EndValue]
LogVal1 = log(StartValue);
LogVal2 = log(EndValue);
if ((LogVal1 0)) {
// On peut effectuer la dicho
fputs("Dichotomie; pas=0.1");
LogVal2 = 0;
while(FinDeDicho = false) {
LogValTemp = log(StartValue + LogVal2);
// N'ayant pas fait de C depuis longtemps,
// Je ne me souviens plus comment vérifier si 2 doubles sont de signes opposés
if (LogValTemp == 0) {
puts("Solution: %s",StartValue+LogVal2);
break;
}
LogVal2 = LogVal2+0.1;
}
puts("Fin de la dichotomie");
}
else {
puts("Il n'y a pas de solution sur l'intervalle");
}
}
Patastronch a écrit:while(bool == false)
Mais quelle horreur !
Sans t'en rendre compte tu fais 2 fois le meme test.
Et puis c est pas bool ta variable mais finDeDicho
Et puis je croyais que la dichotomie c'etait de séparer l'ensemble en 2 parties.
C'est a dire si l'interval est [a,b] alors on lance sur (a+b)/2 si c est plus petit on refait pareil avec a=(a+b)/2 si c est trop grand b=(a+b)/2 et si c'est egal on renvoit la solution.
Enfin bon je dis ca je dis rien.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :