复合利息计算器 - 解决我或是否有更好的公式

Hig*_*Hat 4 c# math finance

我需要一个确定债务支付计划的公式,其中包括以下内容:支付数量,每笔支付金额和本金以及需要计算利率的条件.我正在重新分解现有代码,当前方法使用以下(复合= 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++;
    }
Run Code Online (Sandbox Code Playgroud)

现在我明白了这个公式的作用,但我自己永远无法达到它.这里的实际情况是,如果知道利率,本金和支付数量,那么应该用来确定每月付款的等式.它使用暴力和循环(最多100次),直到计算的付款等于所需的付款.它通常在大约40-50个循环之后得到答案,并且可以通过减少有效数字来优化.

对我来说,如果我们刚刚解决了interestRate那么就没有循环了.尽我所能,我无法得到解决我的等式,所以这是我的主要问题.

现在,如果你能够很好地理解问题并了解财务公式和复利,那么你可能会给我一个更好的解决方案,这将是非常棒的.我自己做了大量的研究并找到了工具但不是原始的等式,或者更常见的是我找到了用于确定与兴趣相关的东西的不同公式,但我不知道根据我的需要重新调整它们.

基本上我花了太多时间在这上面,我的老板认为,因为循环工作,我需要留下它或寻求帮助.很公平,所以我.:)

这是一个更传统的公式布局,如果这有助于任何:http://i.imgur.com/BCdsV.png

对于测试数据:如果

  • P = 45500
  • C = 12
  • Y = 3
  • M = 1400

然后

  • 我= .0676

谢谢您的帮助

Eri*_*ert 7

如果你试图解决你链接到我的利率的公式,你会发现你得到一个度数为cy + 1的多项式,即支付总数加一.很难/不可能找到高阶多项式的闭合形式解,因此近似是你能做的最好的.

你给出的算法有一些很好的属性:它很清楚它在做什么,它在合理的时间内给出了正确的答案.因此,我的态度是"如果没有破坏就不要试图解决它".

如果事实证明这个算法由于某种原因太慢了,那么有些算法可以更快地收敛到正确的答案; 你可以找出你需要找到的多项式是什么,用简单的微积分求出它的导数,然后用牛顿法更快地收敛到根.但是对于这个简单的例子,答案只需要精确到四位小数,这似乎有点过分.