重複の可能性:
二分探索を使用して決定する
他のスレッドを投稿しましたが、回答が得られなかったので、より明確にするために私の仕事の一部を提供しようとしています.
ちょうど1年で借金を完済するには、二分法を使って毎月の支払いを決定する必要があります。
ここにいくつかのコードがあります:
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)
しかし、私は非常に離れた答えを受け取ります: 298222.173851
私の友人は、正解は : 29157.09 だと教えてくれました。
これは私よりもはるかに低いです...問題は、丸め(まだ行っていません)と、ループのたびにバランスを維持し、バランスが0を超えている場合はリセットすることにあると思います。この問題を試みる方法がわかりませんそして、誰かを助けてください:)