2011-09-28 898 views
6

我試圖找到基於計算APR(年利率)編程方式

  • 貸款總額
  • 付款金額
  • 支付數
  • 還款頻率
  • 的方式來編程計算APR

沒有必要考慮任何費用。

可以假定固定利率,剩餘的任何金額都可以計入最後一筆付款。

以下公式基於信用協議,信用額度爲€6000歐元,每24個月分期償還274.11歐元。

enter image description here

(實際年利率爲上面的例子是9.4%)

我要尋找一個在任何編程語言的算法,我可以適應C.

任何幫助將是非常讚賞。

+0

我要成爲在目標c中實現它,但我會很高興用任何語言的答案。 – Ben

+0

另一個問題:APR方法可能會根據完整的要求而大不相同。一件簡單的事情就是你是否需要考慮氣球支付。另外,剩下的便士會發生什麼?他們是摺合成最後一筆還是以某種方式分散在最後一對?你是否必須考慮浮動利率(如ARM貸款)?各項費用是如何處理的?簡而言之,您的全部要求是什麼?您嘗試了什麼? – NotMe

+2

http://en.wikipedia.org/wiki/Annual_percentage_rate – pmg

回答

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) 

你會使用霍納規則多項式避免冪計算f(y)f'(y)。該衍生物可能會接近幾個第一項。你發現y後,你會得到x

x = y**(-F) - 1 
+0

看起來很棒 - eps代表什麼? – Ben

+0

eps是少量的,例如1E-6。該解與最大絕對誤差eps近似。你需要嘗試一下你的情況是一個合適的eps。 – Jiri

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); 
+0

嗨本我正在尋找相同的公式。什麼是ppa在這裏? –

+0

Hi Nilesh,自從我寫這篇文章以來已經有一段時間了!但我認爲ppa是每年付款的數量。 – Ben