2011-09-28 18 views
6

Estoy tratando de encontrar una manera de calcular mediante programación abril basado enCalcular TAE (tasa anual) Programatically

  • Préstamo Monto total
  • Cantidad de pago
  • Número de pagos
  • Frecuencia de devolución

No hay necesidad de tomar en cuenta ninguna tarifa.

Está bien suponer una tasa de interés fija, y los montos restantes pueden transferirse al último pago.

La siguiente fórmula se basa en un contrato de crédito por un importe total de crédito de 6000 € reembolsable en 24 cuotas mensuales iguales de 274,11 €.

enter image description here

(La TAE para el ejemplo anterior es 9,4%)

Busco a un algoritmo en cualquier lenguaje de programación que pueda adaptarse a C.

Cualquier ayuda sería mucho apreciado.

+0

Voy a ser implementarlo en el objetivo c, pero estaré contento con una respuesta en cualquier idioma. – Ben

+0

Otra pregunta: las metodologías de APR pueden variar ampliamente dependiendo de los requisitos completos. Una cosa simple es si necesita o no tener en cuenta los pagos globales. Además, ¿qué pasa con los centavos restantes? ¿Están incluidos en el pago final o distribuidos de alguna manera en la última pareja? ¿Debe tener en cuenta una tasa de interés variable (como préstamos ARM)? ¿Cómo se manejan las diversas tarifas? En resumen, ¿cuáles son sus requisitos completos y qué ha intentado? – NotMe

+2

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

Respuesta

3

Supongo que quiere calcular X de la ecuación. Esta ecuación se puede escribir como

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

donde

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) 

Ahora, es necesario resolver la ecuación para obtener f(y) = 0y. Esto se puede hacer, p. mediante iteración de Newton (pseudo-código):

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

La derivada es:

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

Se podría calcular f(y) y f'(y) usando la regla de Horner para los polinomios de evitar la exponenciación. La derivada puede ser aproximada por algunos primeros términos. Después de encontrar y, se obtiene x:

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

Eso se ve genial, ¿qué representa eps? – Ben

+0

eps es una cantidad pequeña, p. 1e-6. La solución se aproxima al máximo error absoluto eps. Debería probar qué es un EPS adecuado en su caso. – Jiri

1

Aquí es el objetivo fragmento de código C se me ocurrió (que parece ser correcta), si alguien está interesado:

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

Hola Ben Estoy buscando la misma fórmula. ¿Qué es ppa aquí? –

+0

Hola, Nilesh, ¡hace mucho tiempo que no escribí esto! pero creo que ppa fue la cantidad de pagos por año. – Ben

Cuestiones relacionadas