2011-09-28 11 views
6

Sto cercando di trovare un modo per calcolare programatically aprile sulla base diCalcolare TAEG (tasso annuo effettivo globale) Programatically

  • Prestito Importo totale
  • Importo pagamento
  • Numero di pagamenti
  • Frequenza di rimborso

Non è necessario prendere in considerazione alcuna tariffa.

È normale assumere un tasso di interesse fisso e tutti gli importi rimanenti possono essere inseriti nell'ultimo pagamento.

La formula seguente è basata su un contratto di credito per un importo totale di credito di € 6000 rimborsabili in 24 rate mensili uguali di € 274,11.

enter image description here

(Il TAEG per l'esempio sopra è del 9,4%)

Sto cercando un algoritmo in qualsiasi linguaggio di programmazione che posso adattarmi a C.

Qualsiasi aiuto sarebbe molto apprezzato.

+0

io sto per essere implementandolo nell'obiettivo c, ma sarò felice con una risposta in qualsiasi lingua. – Ben

+0

Un'altra domanda: le metodologie APR possono variare in modo selvaggio a seconda dei requisiti completi. Una cosa semplice è se hai bisogno di prendere in considerazione il pagamento del pallone. Inoltre, cosa succede con i penny rimasti? Sono piegati nel pagamento finale o in qualche modo distribuiti attraverso l'ultima coppia? Devi prendere in considerazione un tasso di interesse variabile (come i prestiti ARM)? Come vengono gestite le varie commissioni? In breve, quali sono i tuoi requisiti completi e cosa hai provato? – NotMe

+2

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

risposta

3

Suppongo che vogliate calcolare X dalla vostra equazione. Questa equazione può essere scritta come

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

dove

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) 

Ora, è necessario risolvere l'equazione f(y) = 0 per ottenere y. Questo può essere fatto ad es. utilizzando l'iterazione di Newton (pseudo-codice):

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

Il derivato è:

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

Si potrebbe calcolare f(y) e f'(y) usando la regola Horner per i polinomi di evitare l'elevamento a potenza. La derivata può essere probabilmente approssimata da alcuni primi termini. Dopo aver trovato y, si ottiene x:

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

Che sembra fantastico: cosa rappresenta l'eps? – Ben

+0

eps è una piccola quantità, ad es. 1e-6. La soluzione è approssimata con l'errore assoluto massimo eps. Avresti bisogno di provare ciò che è un eps adatto nel tuo caso. – Jiri

1

Qui è l'obiettivo frammento di codice C mi è venuta (che sembra essere corretto), se qualcuno è interessato:

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

Ciao Ben, sto cercando la stessa formula. Cos'è ppa qui? –

+0

Ciao Nilesh, è da un po 'che non scrivo questo! ma penso che ppa fosse il numero di pagamenti all'anno. – Ben

Problemi correlati