Méthode de dichotomie

Résolu/Fermé
LACHHABFADOUA Messages postés 23 Date d'inscription jeudi 11 juin 2020 Statut Membre Dernière intervention 7 juillet 2021 - Modifié le 23 nov. 2020 à 16:24
LACHHABFADOUA Messages postés 23 Date d'inscription jeudi 11 juin 2020 Statut Membre Dernière intervention 7 juillet 2021 - 23 nov. 2020 à 21:38
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 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 Ambassadeur 1 557
23 nov. 2020 à 21:12
bonjour,
"il ne renvoie aucun valeur": à quelle ligne penses-tu "retourner" une valeur?
quelle fonction devrait-elle retourner une valeur?
0
LACHHABFADOUA Messages postés 23 Date d'inscription jeudi 11 juin 2020 Statut Membre Dernière intervention 7 juillet 2021
23 nov. 2020 à 21:22
Il faut qu'il retourne la valeur de la solution x la plus proche de alpha (f(alpha)=0), j'ai résolu ce prb , et j'ajoute d'autre instructions dans le code .
En tout cas Merci pour votre réponse :)
0
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 1 557 > LACHHABFADOUA Messages postés 23 Date d'inscription jeudi 11 juin 2020 Statut Membre Dernière intervention 7 juillet 2021
23 nov. 2020 à 21:35
si le problème est résolu, peux-tu marquer la discussion comme résolue?
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
23 nov. 2020 à 21:33
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 par
x = (a+b)/2;
, mais dans d'autres elle va se mettre dans une boucle infinie. Par exemple si
f(a)
,
f((a+b)/2)
et
f(b)
ont le même signe.
0
LACHHABFADOUA Messages postés 23 Date d'inscription jeudi 11 juin 2020 Statut Membre Dernière intervention 7 juillet 2021
23 nov. 2020 à 21:38
merci pour la réponse ,j'ai résolu ce prb
0