Bonjour,
Commençons par étudier le programme :
Les deux lignes avec la fonction "float(input())" permet d'entrer les valeurs choisies (donc ici a = 2 et b = 3).
"while" signifie "tant que", donc tant que - a + b > 0, alors on exécute la boucle qui suit.
"x = ..." signifie qu'on donne une valeur à x, ici (a+b) / 2
"if" signifie "si", donc si f(a)*f(x) > 0, alors on exécute la ligne qui suit (a = x).
"else" signifie "sinon", donc si on n'exécute pas la boucle "si", car f(a)*f(x) n'est pas supérieur à 0, on exécute la boucle qui suit (donc b = x).
Enfin, "print" affiche une certaine valeur (ou un message), ici (a + b) / 2
Ensuite, tu n'as plus qu'à l'exécuter :
- a + b = -2 + 3 = 1. Or 1 supérieur à 0.3, donc on exécute la partie suivante du programme.
On donne une valeur à x : x = (a + b) / 2 = (2 + 3) / 2 = 5/2
Pour calculer f(a), on remplace x par a dans la fonction x :
f(a) = -17 + a² = -17 + 2*2² = -17 + 8 = -9
De même, pour f(x) :
f(x) = -17 + 2*(5/2)² = -17 + 25/2 = 12,5
f(a)*f(x) = -112,5
Si f(a)*f(x) > 0, alors a = x
-112,5 est inférieur à 0, donc on prend la boucle "sinon" : b = x.
Donc b = x = 5/2
On recommence jusqu'à ce que -a + b soit inférieur à 0,3 :
-a + b = 1/2 = 0,5 > 0,3
x = (2 + 5/2) / 2 = 9/4
f(a) = -9 (a n'a pas changé de valeur)
f(x) = -17 + 2*(9/4)² = -6,875
f(a)*f(x) = -6.875*(-9) = 61.875 > 0, donc a = x = 9/4
On recommence : -a + b = -9/4 + 5/2 = 1/4 = 0,25 < 0,3
-a + b est inférieur à 0.3, on peut donc bien arrêter d'exécuter le programme (je rappelle : while -a + b > 0.3 = tant que -a + b > 0.3, donc on fait la boucle tant que -a + b > 0.3, ensuite on s'arrête).
print((a+b)/2) : on affiche la valeur (a+b)/2 = (9/4 + 5/2) / 2 = 19 / 8 = 2,375
J'espère que tu as compris !