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. 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
  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. 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
  4. 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. les espaces sont présent dans mon programme
      0