Come calcolare il canone mensile su un prestito?Python: modo più intelligente per calcolare i pagamenti dei prestiti
data è:
- una: un importo del prestito.
- b: il periodo di prestito (numero di mesi).
- c: il tasso di interesse p.a. (gli interessi vengono calcolati e aggiunti ogni mese, viene aggiunto 1/12 dell'interesse. Quindi se l'interesse è del 12%, l'interesse dell'1% viene aggiunto ogni mese).
- d: la quantità di denaro dovuta dopo la fine del periodo.
Questo problema è un po 'diverso dal solito poiché, l'obiettivo non è quello di avere il prestito pagato dopo che il periodo unico è terminato, ma deve ancora un importo che è stato dato. Sono stato in grado di trovare un algoritmo in modo da risolvere il problema se volessi pagare l'intero importo, ma di sicuro non funzionerebbe per questo problema in cui l'obiettivo è finire a causa di un dato ammontare piuttosto che non dover nulla.
Sono riuscito a trovare una soluzione a questo problema iniziando con un'ipotesi e poi continuando a migliorare tale ipotesi fino a quando non fosse abbastanza vicino. Mi chiedo tuttavia, se c'è un modo migliore per calcolare semplicemente questo, piuttosto che solo indovinare.
Modifica: Ecco come lo sto facendo ora.
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)
evoluzione è solo una funzione che consente di visualizzare come il prestito sarà simile pagamento per il pagamento e l'interesse per interessi, riassumendo importo totale degli interessi pagati ecc
Un esempio potrebbe essere se volevo scoprire i pagamenti mensili per un prestito a partire da $ 100k e termina a $ 50k con un interesse dell'8% e una durata di 70 mesi, chiamando
>>> find_payment(100000, 50000, 70, 0.08)
payment is 1363
Nel caso di cui sopra vorrei finire a causa 49935, e Ho attraversato il ciclo 5 volte. La quantità di volte necessaria per passare attraverso il ciclo dipende da quanto vicino non riesco ad ottenere l'importo e varia un po '.
forse se è possibile fornire la soluzione indovinare, diventa più chiaro su ciò che si vuole fare. – nosklo
non è solo una semplice progressione geometrica? http://en.wikipedia.org/wiki/Geometric_progression – Pod
Che cosa sta facendo la funzione "evolution()"? Dove posso trovare quella funzione? –