/ / Finden von Cubed Root mit Delta und Epsilon in Python - Python, Python-3.x

Finden der gewürfelten Wurzel mit Delta und Epsilon in Python - Python, Python - 3.x

Ich versuche, ein Programm zu schreiben, das Cubed Root mit Delta und Epsilon findet, aber ich stecke fest, weil ich nicht herausfinden kann, warum mein Programm in einer Endlosschleife läuft

    num = 100

epsilon = 0.01
guess = num/3.0


while abs(guess**3 - num) >= epsilon:
delta = abs(guess**3 - num)/100
if guess**3 > num:
guess = (guess - delta)
if guess**3 < num:
guess = (guess + delta)
print("Guess:", guess)

Antworten:

2 für die Antwort № 1

Als erstes sollten Sie verwenden if/elif statt zu trennen if Blöcke.

Folgendes berücksichtigen: wann guess**3 > num ist True, Sie aktualisieren guess indem er seinen Wert verringert, so dass guess**3 < num (die nächste if Bedingung) wird True erneut, wodurch die ursprüngliche Aktualisierung rückgängig gemacht wird. Zusammenfassend ist der Wert von guess wird in dieser Schleife nie geändert, und die Schleife wirbelt ins Unendliche.

Zweitens möchten Sie die regulieren delta Wert (Bestrafung), da er alarmierend groß sein kann wie der Wert von num erhöht sich.

num = 100

epsilon = 0.01
guess = num/3.0

while abs(guess**3 - num) >= epsilon:
delta = abs(guess**3 - num)/num
if guess**3 > num:
guess = (guess - delta*epsilon**0.5)
elif guess**3 < num:
guess = (guess + delta*epsilon**0.5)
print("Guess:", guess)