Programme dichotomie qui ne marche pas

Bonjour,

je n'arrive pas à faire marcher mon programme de dichotomie. Rien ne se passe.

from math import *
a=0
b=1
def f(x):
return x**3+x-1
def dicho(a,b) :
n=O
while b-a>=10**(-3):
c=(a+b)/2
if f(a)*f(c)<0:
b=c
else:
a=c
n=n+1
return a,b,n

7 réponses

Résumé de la discussion

Un code Python utilisant la méthode de dichotomie pour trouver une racine de f(x)=x^3+x-1 sur l’intervalle [0,1] ne produit aucun affichage lors de l’exécution et nécessite des corrections. Plusieurs échanges pointent des erreurs dans le code, comme 'n=O' au lieu de 0 et l’absence d’instruction d’impression, ce qui explique l’absence d’affichage malgré l’exécution. Des explications évoquent aussi la logique de dichotomie: si f(a)*f(c) < 0 alors b=c sinon a=c, et la boucle se poursuit jusqu’à ce que b-a < 10**(-3). En cas de correction, il serait utile d’ajouter une instruction d’impression ou d’appeler explicitement la fonction pour afficher a, b et n à la fin afin de vérifier le progrès.

Bobot (l’IA à votre service)
  1. les espaces sont présent dans mon programme
    0
    1. from math import *
      a=0
      b=1
      def f(x):
          return x**3+x-1
      def dicho(a,b) :
          n=O
          while b-a>=10**(-3):
              c=(a+b)/2
              if f(a)*f(c)<0:
                  b=c
              else:
                  a=c
              n=n+1
          return a,b,n    
      0
      1. merci
        0
        1. Contributeur
          quel est le soucis avec ce programme?
          0
        2. @yg_bequand je l'exécute le programme n'affiche rien
          0
        3. Contributeur
          @Plantagenestque souhaites-tu afficher?
          0
        4. @yg_beles valeurs de a,b,n
          0
        5. Contributeur
          @Plantagenestquelle instruction utilises-tu pour afficher ces valeurs?
          0
      2. avec (return a,b,n) à la fin du programme
        0
        1. Contributeur
          est-ce ton premier exercice en python?
          0
        2. @yg_beOui je connais pas grand chose en python, le programme au dessus est exactement (j'ai vérifié) le programme du manuel, mais il n'affiche rien quand je l'exécute. Puisque je n'arrive pas à trouver l'erreur je fais appel à votre gentillesse.
          0
        3. @Plantagenestc'est un programme de dichotomie
          0
        4. Contributeur
          @Plantagenestsi tu veux progresser, il est préférable de commencer par des exercices plus simples.
          0
        5. @yg_bed'accord merci
          0
      3. le programme au dessus est exactement (j'ai vérifié) le programme du manuel

        Il y manque pourtant un petit quelque chose

        Oui je connais pas grand chose en python

        Ok alors essayons de décortiquer.

        A ton avis, à quoi sert
        def f(x):
            return x**3+x-1

        ?
        0
        1. Contributeur
          Bonsoir à tous

          Une correction préalable à faire en ligne 7, n = 0 et non n = o (pour Plantagenest, zéro et non la lettre o)
          0
        2. definir la fonction f
          0
        3. @georges97c'est bien un 0 dans mon programme, ca doit être une erreur quand j'ai collé sur le site
          0
        4. @Plantagenest
          definir la fonction f

          c'est un peu succinct comme réponse mais je vais parier que tu as compris.

          A quel endroit(s) du programme cette fonction est elle utilisée.

          Salut George, bien vu
          0