Мне нужна формула для определения плана погашения долга, в котором известны следующие данные: количество платежей, сумма платежа и основная сумма, и мне необходимо выяснить, какая процентная ставка будет из этого. Я перефакторинг существующего кода, и текущий метод использует следующее (составлено = 12; процентная ставка начинается с .1):
while (counter < 100)
{
intermediatePayment = (interestRate*(principal/compounded))/(1 - (1/Math.Pow(interestRate/compounded + 1,(compounded*numberOfYears))));
interestIncrement = Math.Abs(interestRate - previousRate)/2;
previousRate = interestRate;
if(intermediatePayment == payment)
break;
if (intermediatePayment > payment)
interestRate -= interestIncrement;
else
interestRate += interestIncrement;
counter++;
}
Теперь я понимаю, что делает эта формула, но я никогда не смогу прийти к ней самостоятельно. На самом деле здесь есть уравнение, которое предполагается использовать для определения ежемесячного платежа, если известны процентная ставка, основная сумма и количество платежей. Он использует грубую силу и циклы (не более 100 раз), пока рассчитанный платеж не будет равен желаемому платежу. Он приходит к ответу обычно после примерно 40-50 циклов, и его можно оптимизировать, уменьшив значащие цифры.
Мне кажется, если бы мы просто решили для интереса, не было бы зацикливания. Как ни старайся, я не могу решить уравнение для себя, поэтому это мой главный вопрос.
Теперь, если вы достаточно хорошо понимаете проблему и знаете финансовые формулы и сложные проценты, вы можете предложить мне еще лучшее решение, которое было бы потрясающим. Я сам провел значительное исследование и нашел инструменты, но не грубое уравнение, или чаще я нахожу разные формулы для определения вещей, связанных с интересами, но не знаю, как переоснастить их для своих нужд.
В основном я потратил слишком много времени на это, и мой начальник думает, что поскольку цикл работает, мне нужно оставить его или попросить помощи. Достаточно справедливо, поэтому я. :)
Вот более традиционное расположение формулы, если это помогает: http://i.imgur.com/BCdsV.png
А для данных испытаний: если
- Р = 45500
- с = 12
- у = 3
- м = 1400
тогда
Спасибо за помощь