Berechnen Sie die niedrigste monatliche Zahlung mit der Bisektionssuche in python

Ich nehme derzeit am MITx-Kurs für edx teil und habe ein Problem mit einer Übung. Kannst du mir bitte sagen, warum ich mit diesem Code in einer Endlosschleife stecke? Ich denke, die halbierte Suchschleife funktioniert nicht richtig, aber ich weiß nicht wirklich warum. Hier ist der Code:

balance = 5000
annualInterestRate = 0.18
low = balance/12
high = (balance * (1 + annualInterestRate / 12) ** 12) / 12
guess = (low + high)/2

def getBal(guess, balance, annualInterestRate):
    mon = 0
    while mon < 12:
        mon += 1
        ub = balance - guess
        balance = ub + (annualInterestRate/12) * ub
    return balance

z = getBal(guess, balance, annualInterestRate)

while abs(round(z, 2)) > 0:
    if round(z, 2) > 0:
        low = guess
    else:
        high= guess
    guess = (high+low)/2

print "Lowest Payment: " + str(round(guess,2)) 

Antworten auf die Frage(2)

Ihre Antwort auf die Frage