Минимальный фиксированный ежемесячный код оплаты не работает - бесконечный цикл? - PullRequest
0 голосов
/ 03 декабря 2018

Я проходил курс обучения по Phyton, но я обнаружил, что использую R гораздо больше, и я попытался решить проблему расчета минимального фиксированного ежемесячного платежа для данной суммы.У меня есть следующий код, который я пытался запустить в R:

balance = 4000
initBalance = balance
annualInterestRate = 0.2
monthlyInterestRate = annualInterestRate/12
month = 0
minPay = 10

calc <- function(month, balance, minPay, monthlyInterestRate) {
  while (month < 12) {
    unpaidBalance = balance - minPay
    balance = unpaidBalance + (monthlyInterestRate * unpaidBalance)
    month = month + 1
    print(balance)
  }
}

while(balance > 0) {
  balance = initBalance
  minPay = minPay + 10
  month = 0
  calc(month = month, balance = balance, minPay = minPay, monthlyInterestRate = 0.2/12)
  print(minPay)
}

, но когда я запускаю его, он входит в бесконечный цикл.Что мне не хватает?Спасибо за любую помощь.

1 Ответ

0 голосов
/ 03 декабря 2018

Попробуйте:

balance = 4000
initBalance = balance
annualInterestRate = 0.2
monthlyInterestRate = annualInterestRate/12
month = 0
minPay = 10

calc <- function(month, balance, minPay, monthlyInterestRate) {
  while (month < 12) {
    unpaidBalance = balance - minPay
    balance = unpaidBalance + (monthlyInterestRate * unpaidBalance)
    month = month + 1
    #print(balance)
  }
  return(balance)
}

balance = 4000
initBalance = 4000

while(balance > 0) {
  minPay = minPay + 10
  month = 0
  balance = calc(month = month, balance = initBalance, minPay = minPay, monthlyInterestRate = 0.2/12)
  print(minPay)
}

Вы можете использовать явную формулу (см. https://en.wikipedia.org/wiki/Equated_monthly_installment):

P = 4000       # principal
r = 0.2 / 12   # rate p.m.
n = 12         # number of payments

A = P*( (r*(1+r)^n)/((1+r)^n-1))  
print(A)
#[1] 370.538
...