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\) :
Tu obtiendras bien une réponse :
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
Bonjour,
ton programme est correct, et si on respecte les indentations, il doit avoir ce rendu dans ton éditeur :
[code]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[/code]
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]dicho(0.5,0.75)[/code]
Tu obtiendras bien une réponse :
[code](0.681640625, 0.6826171875, 8)[/code]
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