以编程方式计算APR(年百分比率)

时间:2011-09-28 14:52:51

标签: objective-c algorithm

我正在尝试找到一种基于

以编程方式计算APR的方法
  • 贷款总额
  • 付款金额
  • 付款次数
  • 还款频率

无需考虑任何费用。

可以假定固定利率,任何剩余金额都可以汇入最后一笔付款。

下面的公式是基于一项信贷协议,总信用额度为6000欧元,每月24欧元,分别为274.11欧元。

enter image description here

(以上例子的APR为9.4%)

我正在寻找一种可以适应C的编程语言算法。

2 个答案:

答案 0 :(得分:3)

我想您想从等式中计算X。这个等式可以写成

f(y) = y + y**2 + y**3 + ... + y**N - L/P = 0

,其中

X = APR
L = Loan (6000)
P = Individual Payment (274.11)
N = Number of payments (24)
F = Frequency (12 per year)
y = 1 / ((1 + X)**(1/F))   (substitution to simplify the equation)

现在,您需要求解等式f(y) = 0以获得y。这可以通过例如完成。使用牛顿迭代(伪代码):

y = 1  (some plausible initial value)
repeat 
    dy = - f(y) / f'(y)
    y += dy
until abs(dy) < eps 

衍生物是:

f'(y) = 1 + 2*y + 3*y**2 + ... + N*y**(N-1)

您可以使用多项式的Horner规则计算f(y)f'(y)以避免取幂。衍生物可能通过几个第一项来近似。找到y后,您会看到x

x = y**(-F) - 1

答案 1 :(得分:1)

以下是我提出的Objective C代码段(似乎是正确的),如果有人感兴趣的话:

float x = 1;
do{
    fx = initialPaymentAmt+paymentAmt *(pow(x, numPayments+1)-x)/(x-1)+0*pow(x,numPayments)-totalLoanAmt;
    dx = paymentAmt *(numPayments * pow( x , numPayments + 1 ) - ( numPayments + 1 )* pow(x,numPayments)+1) / pow(x-1,2)+numPayments * 0 * pow(x,numPayments-1);
    z = fx / dx;
    x=x-z;
} while (fabs(z)>1e-9 ); 

apr=100*(pow(1/x,ppa)-1);