Berechnung der niedrigsten monatlichen Zahlung mit bidirektionalen Suche in python

Ich versuche zu berechnen, die minimale monatliche Zahlung zu zahlen sich aus ein Darlehen mit den folgenden:

balance = 999999
annualInterestRate = .18
monthlyInterestRate = annualInterestRate/12

balanceCOPY = balance

#Bisection search parameters

lo = balance/12
hi = (balance*(1+monthlyInterestRate**12))/12
epsilon = .01

guess = (lo + hi)/2

while True:
   for month in range(1,13):
      balance = balance - guess
      balance = balance + (monthlyInterestRate*balance)

   if balance > 0 and balance > epsilon:
      lo = guess
      balance = balanceCOPY
   elif balance < 0 and balance < -epsilon:
      hi = guess
      balance = balanceCOPY
   else:
      print('Lowest payment: ',str(round(guess,2)))
      break

   guess = (lo + hi)/2

Allerdings scheine ich zu sein stecken in einer Art endlos-Schleife, wo mein guess variable wird nicht aktualisiert. Wie kann ich ausbrechen aus der Endlosschleife und habe meine guess variable aktualisiert?

Das problem war in meinem Mathe. Ich wollte sagen,

hi = (balance*(1+monthlyInterestRate)**12)/12

Danke für all die Hilfe, jeder!

  • Was ist Ihre Frage? (Und "+1 für SSCCE").
  • Haben Sie versucht, Druck aus allen Variablen, die während jeder iteration der Schleife und sehen, ob einer von Ihnen nicht aktualisiert werden? Auch, wo sind Sie immer diese Algorithmus aus?
  • Wissen Sie, es gibt Formeln für diese, richtig? en.wikipedia.org/wiki/Compound_interest#Simplified_calculation
  • Das sieht aus wie eine Lern-übung, bei der OP soll der Praxis bidirektionalen Suche. Immer die tatsächliche Höhe der Zinsen einfach ist wahrscheinlich nicht so wichtig.
  • versuchen Sie es mit diesem .. diese Arbeit für mich. http://stackoverflow.com/a/39734567/4356266
Schreibe einen Kommentar