-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を超えた場合にリセットすることにあると思います。この問題の試行方法がわかりません。そして、誰かを助けてください:)

4

2 に答える 2

0

これが鍵です:

while abs(x) > epsilon:
    x = balance
    for month in range(0, 12):
        x = (x - ans) * (1+monthly_interest)
于 2012-10-11T15:43:45.730 に答える
0

小数点以下 2 桁に四捨五入することを忘れないでください。そうしないと、MITx は回答を受け入れません。

于 2012-10-11T15:48:05.520 に答える