【问题标题】:Calculating Payment Size Using Bisection Method in Python在 Python 中使用二分法计算付款大小
【发布时间】:2018-10-05 10:33:33
【问题描述】:

我一直在为 MIT 的 edX 课程研究这个问题。该问题的目标是在给定贷款规模和 APY 的情况下计算一年的付款规模。我的问题是我的答案总是太高。我不确定这是为什么。任何帮助将不胜感激。

代码如下:

b = float(input("balance = "))
r = float(input("annualInterestRate = "))
t = float(input("How many months do you want to take = "))
p = (b / t)
bval = []
new = b


def interest(b, r, p, t):

    bal = (b - p)
    max = (b * (1 + r / 12)**(12))/12
    min = (b / t)

    def update(bal, r):
        balance = (bal + (r / 12.0) * bal)
        return balance

    if len(bval) < t:
        bval.append(update(bal, r))
        return(interest(bval[-1], r, p, t))

    if (len(bval) == t):
        if bval[-1]< 10:
            return print(" Minimum payment: %i" % p)

        p = (max + min) / 2.0

        if bval[-1] < 0:
            min = bval[-1]
        elif bval[-1] > 0:
            max = bval[-1]

        bval.clear()
        bval.append(update((new - p), r))
        return(interest(bval[-1], r, p, t))

interest(b, r, p, t)

【问题讨论】:

  • 您使用的是python 2.7还是3+?问这个是因为你用过/12/12.0
  • 我正在使用 python 3。

标签: python bisection edx


【解决方案1】:

您的最大操作顺序可能存在问题。您可能想尝试在 1+r 周围添加括号,然后再除以 12。

【讨论】:

  • 所以,我不确定为什么会这样,但是当我添加这些括号时,我陷入了无限循环。
猜你喜欢
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-04
相关资源
最近更新 更多