python et dichotomie

Retrouver tous les sujets résolus.
Répondre
Céline

python et dichotomie

Message par Céline » ven. 5 févr. 2021 20:51

Bonjour,
j'essaie d'exécuter un programme Python, mais à chaque fois il n y a rien qui s'affiche (pas de message d'erreur, pas de résultats)..
pourriez-vous m'aider à trouver la raison? merci
voici mon programme:
def f(x):
return x**3+x-1
def dicho(a=0.5,b=0.75):
n=0
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
sos-math(21)
Messages : 8789
Enregistré le : lun. 30 août 2010 11:15

Re: python et dichotomie

Message par sos-math(21) » sam. 6 févr. 2021 06:49

Bonjour,
ton programme est correct, et si on respecte les indentations, il doit avoir ce rendu dans ton éditeur :

Code : Tout sélectionner

def f(x):
    return x**3 + x - 1
    
def dicho(a=0.5,b=0.75):
    n=0
    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
Quand on l'exécute, il ne se passe rien et c'est normal puisque tu as défini une fonction qui est une sorte de boite qui enveloppe des instructions. Celles-ci ne s'exécuteront que si tu appelles ta fonction.
Dans la console, si tu appelles ta fonction avec les arguments associés à \(f\) :

Code : Tout sélectionner

dicho(0.5,0.75)
Tu obtiendras bien une réponse :

Code : Tout sélectionner

(0.681640625, 0.6826171875, 8)
Ce qui te donne bien un encadrement de la racine de \(f\) à \(10^{-3}\) près, ce qui a été obtenu au bout de 8 tours de boucle.
Est-ce plus clair ?
Bonne continuation
Céline

Re: python et dichotomie

Message par Céline » sam. 6 févr. 2021 16:58

ah d'accord! mais, comment faire pour appeler cette fonction ? faire print ?
merci
sos-math(21)
Messages : 8789
Enregistré le : lun. 30 août 2010 11:15

Re: python et dichotomie

Message par sos-math(21) » sam. 6 févr. 2021 17:52

Bonjour,
je crois y avoir répondu : tu te mets dans la console (le shell) et tu tapes :

Code : Tout sélectionner

>>> dicho(0.5,0.75)
Et l'interpréteur doit te renvoyer la réponse :

Code : Tout sélectionner

(0.681640625, 0.6826171875, 8)
Dans mon environnement (spyder), cela donne :
Capture.PNG
Capture.PNG (3.6 Kio) Vu 177 fois
Quel environnement utilises-tu ?
Répondre