我正在尝试找到一种基于
以编程方式计算APR的方法无需考虑任何费用。
可以假定固定利率,任何剩余金额都可以汇入最后一笔付款。
下面的公式是基于一项信贷协议,总信用额度为6000欧元,每月24欧元,分别为274.11欧元。
(以上例子的APR为9.4%)
我正在寻找一种可以适应C的编程语言算法。
答案 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);