Bisection search in Python cant find the answer? Why does it result in negative balance?
up vote
0
down vote
favorite
This code get down to -73535 and exits the loop. I can't figure out what's wrong.
balance = 999999
annualInterestRate = 0.18
epsilon = 0.05
monthlyInterestRate = annualInterestRate / 12
lowerBound = balance / 12
upperBound = (balance * ((1 + monthlyInterestRate)**12)) / 12.0
print(upperBound, lowerBound)
currentBalance = balance
middle = (upperBound + lowerBound) / 2
while abs(round(upperBound - lowerBound,2)) >= epsilon:
currentBalance = balance
for i in range(12):
unpaidBalance = currentBalance - middle
currentBalance= unpaidBalance - (monthlyInterestRate * unpaidBalance)
print(currentBalance)
if abs(unpaidBalance) < 0.05:
print("hahaha")
break
elif currentBalance < 0:
upperBound = middle
elif currentBalance > 0:
lowerBound = middle
middle = (upperBound + lowerBound) / 2
python payment bisection
add a comment |
up vote
0
down vote
favorite
This code get down to -73535 and exits the loop. I can't figure out what's wrong.
balance = 999999
annualInterestRate = 0.18
epsilon = 0.05
monthlyInterestRate = annualInterestRate / 12
lowerBound = balance / 12
upperBound = (balance * ((1 + monthlyInterestRate)**12)) / 12.0
print(upperBound, lowerBound)
currentBalance = balance
middle = (upperBound + lowerBound) / 2
while abs(round(upperBound - lowerBound,2)) >= epsilon:
currentBalance = balance
for i in range(12):
unpaidBalance = currentBalance - middle
currentBalance= unpaidBalance - (monthlyInterestRate * unpaidBalance)
print(currentBalance)
if abs(unpaidBalance) < 0.05:
print("hahaha")
break
elif currentBalance < 0:
upperBound = middle
elif currentBalance > 0:
lowerBound = middle
middle = (upperBound + lowerBound) / 2
python payment bisection
2
In future, I would recommend following the PEP8 Style Guide as it is much more readable. Specifically, take a look at Naming conventions and whitespace in expressions and statements.
– Modelmat
Nov 7 at 8:44
Can you explain the meaning of the value you are apparently trying to converge, perhaps with a reference to the algorithm?
– tripleee
Nov 7 at 10:19
This is to try to figure out the minimum lowest payment I need to pay every month to pay off my credit card debt.I have to use bisection search.
– Debora
Nov 8 at 5:49
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
This code get down to -73535 and exits the loop. I can't figure out what's wrong.
balance = 999999
annualInterestRate = 0.18
epsilon = 0.05
monthlyInterestRate = annualInterestRate / 12
lowerBound = balance / 12
upperBound = (balance * ((1 + monthlyInterestRate)**12)) / 12.0
print(upperBound, lowerBound)
currentBalance = balance
middle = (upperBound + lowerBound) / 2
while abs(round(upperBound - lowerBound,2)) >= epsilon:
currentBalance = balance
for i in range(12):
unpaidBalance = currentBalance - middle
currentBalance= unpaidBalance - (monthlyInterestRate * unpaidBalance)
print(currentBalance)
if abs(unpaidBalance) < 0.05:
print("hahaha")
break
elif currentBalance < 0:
upperBound = middle
elif currentBalance > 0:
lowerBound = middle
middle = (upperBound + lowerBound) / 2
python payment bisection
This code get down to -73535 and exits the loop. I can't figure out what's wrong.
balance = 999999
annualInterestRate = 0.18
epsilon = 0.05
monthlyInterestRate = annualInterestRate / 12
lowerBound = balance / 12
upperBound = (balance * ((1 + monthlyInterestRate)**12)) / 12.0
print(upperBound, lowerBound)
currentBalance = balance
middle = (upperBound + lowerBound) / 2
while abs(round(upperBound - lowerBound,2)) >= epsilon:
currentBalance = balance
for i in range(12):
unpaidBalance = currentBalance - middle
currentBalance= unpaidBalance - (monthlyInterestRate * unpaidBalance)
print(currentBalance)
if abs(unpaidBalance) < 0.05:
print("hahaha")
break
elif currentBalance < 0:
upperBound = middle
elif currentBalance > 0:
lowerBound = middle
middle = (upperBound + lowerBound) / 2
python payment bisection
python payment bisection
edited Nov 7 at 19:36
halfer
14.2k757105
14.2k757105
asked Nov 7 at 8:33
Debora
41
41
2
In future, I would recommend following the PEP8 Style Guide as it is much more readable. Specifically, take a look at Naming conventions and whitespace in expressions and statements.
– Modelmat
Nov 7 at 8:44
Can you explain the meaning of the value you are apparently trying to converge, perhaps with a reference to the algorithm?
– tripleee
Nov 7 at 10:19
This is to try to figure out the minimum lowest payment I need to pay every month to pay off my credit card debt.I have to use bisection search.
– Debora
Nov 8 at 5:49
add a comment |
2
In future, I would recommend following the PEP8 Style Guide as it is much more readable. Specifically, take a look at Naming conventions and whitespace in expressions and statements.
– Modelmat
Nov 7 at 8:44
Can you explain the meaning of the value you are apparently trying to converge, perhaps with a reference to the algorithm?
– tripleee
Nov 7 at 10:19
This is to try to figure out the minimum lowest payment I need to pay every month to pay off my credit card debt.I have to use bisection search.
– Debora
Nov 8 at 5:49
2
2
In future, I would recommend following the PEP8 Style Guide as it is much more readable. Specifically, take a look at Naming conventions and whitespace in expressions and statements.
– Modelmat
Nov 7 at 8:44
In future, I would recommend following the PEP8 Style Guide as it is much more readable. Specifically, take a look at Naming conventions and whitespace in expressions and statements.
– Modelmat
Nov 7 at 8:44
Can you explain the meaning of the value you are apparently trying to converge, perhaps with a reference to the algorithm?
– tripleee
Nov 7 at 10:19
Can you explain the meaning of the value you are apparently trying to converge, perhaps with a reference to the algorithm?
– tripleee
Nov 7 at 10:19
This is to try to figure out the minimum lowest payment I need to pay every month to pay off my credit card debt.I have to use bisection search.
– Debora
Nov 8 at 5:49
This is to try to figure out the minimum lowest payment I need to pay every month to pay off my credit card debt.I have to use bisection search.
– Debora
Nov 8 at 5:49
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
draft saved
draft discarded
draft saved
draft discarded
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53185853%2fbisection-search-in-python-cant-find-the-answer-why-does-it-result-in-negative%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
In future, I would recommend following the PEP8 Style Guide as it is much more readable. Specifically, take a look at Naming conventions and whitespace in expressions and statements.
– Modelmat
Nov 7 at 8:44
Can you explain the meaning of the value you are apparently trying to converge, perhaps with a reference to the algorithm?
– tripleee
Nov 7 at 10:19
This is to try to figure out the minimum lowest payment I need to pay every month to pay off my credit card debt.I have to use bisection search.
– Debora
Nov 8 at 5:49