¿Cómo calcular la tarifa mensual de un préstamo?Python: forma más inteligente de calcular los pagos del préstamo
dado es:
- una: una cantidad de préstamo.
- b: el período de préstamo (número de meses).
- c: la tasa de interés p.a. (los intereses se calculan y agregan cada mes, se agrega 1/12 del interés. Por lo tanto, si el interés es del 12%, se agrega un interés del 1% cada mes).
- d: la cantidad de dinero que se debe al final del período.
Este problema es un poco diferente de lo habitual ya que, el objetivo no es que el préstamo se pague después de que haya finalizado el único período, sino que aún debe una cantidad que se otorga. Pude encontrar un algoritmo para resolver el problema si quería pagar la cantidad total, pero no va a funcionar para este problema donde el objetivo es terminar debiendo una cantidad determinada en lugar de no deber nada.
Me las arreglé para hacer una solución a este problema comenzando con una suposición y luego seguir mejorando esa suposición hasta que estuvo lo suficientemente cerca. Sin embargo, me preguntaba si existe una mejor manera de simplemente calcular esto, en lugar de simplemente adivinar.
Editar: Así es como lo estoy haciendo ahora.
def find_payment(start, end, months, interest):
difference = start
guess = int(start/months * interest)
while True:
total = start
for month in range(1, months + 1):
ascribe = total * interest/12
total = total + ascribe - guess
difference = total - end
# See if the guess was good enough.
if abs(difference) > start * 0.001:
if difference < 0:
if abs(difference) < guess:
print "payment is %s" % guess
return evolution(start, guess, interest, months)
else:
mod = int(abs(difference)/start * guess)
if mod == 0:
mod = 1
guess -= mod
else:
mod = int(difference/start * guess)
if mod == 0:
mod = 1
guess += mod
else:
print "payment is %s" % guess
return evolution(start, guess, interest, months)
la evolución es sólo una función que muestra cómo el préstamo se vería como pago para el pago y el interés de interés, resumiendo cantidad total de intereses pagados, etc.
Un ejemplo sería si quería averiguar los pagos mensuales de un préstamo a partir de $ 100k y terminando en $ 50k con un interés del 8% y una duración de 70 meses, llamando
>>> find_payment(100000, 50000, 70, 0.08)
payment is 1363
en el caso anterior me gustaría terminar debiendo 49935, y Pasé por el ciclo 5 veces. La cantidad de veces que se necesita para pasar por el ciclo depende de cuán cerca esté de llegar al monto y varía un poco.
tal vez si usted puede proporcionar la solución de adivinanzas, se vuelve más clara de lo que quiere hacer. – nosklo
¿no es esto solo una simple progresión geométrica? http://en.wikipedia.org/wiki/Geometric_progression – Pod
¿Qué está haciendo la función "evolution()"? ¿Dónde puedo encontrar esa función? –