Bisection search [duplicate]

*爱你&永不变心* 提交于 2020-01-17 13:51:09

问题


Possible Duplicate:
Using bisection search to determine

I have posted other thread but it did not receive answers thus i'm trying to provide some of my work to make more clear.

I need to use bisection method to determine monthly payment in order to pay off debt in one year exactly.

Here's some code:

originalBalance = 320000
annualInterestRate = 0.2
monthly_interest = annualInterestRate / 12
low = originalBalance/12
high = (originalBalance*(1 + monthly_interest)**12)/12
epsilon = 0.01
min_payment = (high + low)/2.0

while min_payment*12 - originalBalance >= epsilon:
    for month in range(0, 12):
        balance = (originalBalance - min_payment) * (1+monthly_interest)

    if balance < 0:
        low = min_payment
    elif balance > 0:
        high = min_payment
        min_payment = (high + low)/2.0
print "lowest payment: " + str(balance)

However, I receive very way off answer: 298222.173851

My friend told me that correct answer is : 29157.09

Which is a lot lower than my...I guess the problem is in rounding(which I did not do yet) and preserving the balance after every looping and resetting it if balance is over 0. I cannot figure out how to attempt this problem and please, help someone :)


回答1:


This is the correct one.

originalBalance = 320000
annualInterestRate = 0.2
monthly_interest = annualInterestRate / 12
low = originalBalance/12
high = (originalBalance*(1 + monthly_interest)**12)/12
epsilon = 0.01
min_payment = (high + low)/2.0

while min_payment*12 - originalBalance >= epsilon:
    for month in range(0, 12):
        balance = (originalBalance - min_payment)/10 * (1+monthly_interest)

    if balance < 0:
        low = min_payment
    elif balance > 0:
        high = min_payment
        min_payment = (high + low)/2.0
print "lowest payment: " + str(balance)



回答2:


This is what you need

while abs(x) > epsilon:
    x = balance
    for month in range(0, 12):
        x = (x - ans) * (1+monthly_interest)


来源:https://stackoverflow.com/questions/12820003/bisection-search

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!