Calculate lowest monthly payment using bisection search in python

前端 未结 1 474
陌清茗
陌清茗 2021-01-26 11:07

I\'m currently taking the MITx course on edx and I have a problem with one exercise. Can you please tell me why I get stuck in an infinite loop with this code? I guess the bisec

相关标签:
1条回答
  • 2021-01-26 11:41

    The problem is with the second loop. You could try to do it this way:

    balance = 5000
    annual_interest_rate = 0.18
    low = balance/12
    high = (balance * (1 + annual_interest_rate / 12) ** 12) / 12
    guess = (low + high)/2
    
    
    def get_bal(g, b, air):
        mon = 0
        while mon < 12:
            mon += 1
            ub = b - g
            b = ub + (air/12) * ub
        return b
    
    while True:
        z = get_bal(guess, balance, annual_interest_rate)
        if abs(round(z, 2)) == 0:
            break
        if round(z, 2) > 0:
            low = guess
        else:
            high = guess
        guess = (high+low)/2
    
    print "Lowest Payment: " + str(round(guess, 2))
    
    0 讨论(0)
提交回复
热议问题