Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. P = (r * PV) / (1 - (1 + r)**-n)
  2.  
  3. P * (1 - (1 + r)**-n) = (r * PV)
  4.  
  5. 1 - (1 + r)**-n = (r * PV) / P
  6.  
  7. 1 = (r * PV / P) + (1 + r) ** -n
  8.  
  9. 1 - (r * PV / P) = (1 + r) ** -n
  10.  
  11. 1 - (r * PV / P) = 1 /(1 + r) ** n
  12.  
  13. ((1 + r) ** n) * (1 - (r * PV / P)) = 1
  14.  
  15. (1 + r) ** n = 1 / (1 - (r * PV / P)) # take the log of both sides: http://mathonweb.com/help_ebook/html/expolog_4.htm
  16.  
  17. n * log(1 + r) = log(1 / (1 - (r * PV / P))) # divide both sides by log(1 + r)
  18.  
  19. n = log(1 / (1 - (r * PV / P))) / log(1 + r) # finally done!
  20.  
  21. from numpy import log10
  22.  
  23. def get_periods_from_payment(present_value, rate_per_period, payment):
  24. rate_as_decimal = rate_per_period / 100
  25. return log10(1 / (1 - (rate_per_period * present_value / payment))) / log10(1 + rate_per_period)
  26.  
  27. # test get_periods_from_payment()
  28. result = get_periods_from_payment(35000, 0.5, 295.35)
  29. print(result)
  30. assert result == 180
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement