Я кодирую калькулятор «Будущая стоимость аннуитета», который позволяет пользователю найти неизвестное в формуле. Формула fv = (1 + i) * pp * ((1 + i)**n - 1) / i
; где fv
— будущая стоимость, pp
— периодический платеж, i
— процентная ставка, а n
— количество периодов. Например, принимая pp = 100
, i = .2735 (27.35%)
и n = 11
, можно получить fv = 6187.56
. Не зная i
, я могу интерполировать скорость, скажем, 25%, и хотел бы использовать итерацию Ньютона-Рафсона, чтобы получить более точный ответ. Однако мой код ниже отключен, так как он расходится (похоже, он работает для небольших значений i
, т.е. 5%).
fv = 11807.795
pp = 1000
n = 10
i = .03
def newton_raphson_method(fv,pp,i,n):
newton_raphson_i = i
for num in range(1,20):
newton_raphson_i = i - (1+i)*(pp*(1+i)**n - pp-fv*i) / ((n +1)*pp*(1+i)**n - fv)
i = newton_raphson_i
print(i)
i = round(i,11)
print('')
print ('The newton interest rate is ' + str("%.9f" % (i * 100)) + '%')
print('')