Я пытаюсь воспроизвести точность BA II Plus при нахождении термина (N) в приведенной стоимости обычной формулы аннуитета. В частности, с отрицательными процентными ставками (где я не могу использовать натуральные логарифмы). Мой код ниже, но он медленный и немного менее точный. Есть ли лучший способ сделать это?
# code to find term (n) in present value of annuity formula, where the
# interest rate is negative, i.e. -55.31257% in below example, as the
# general way to solve, i.e natural logarithms don't work with negative
# interest rates.
pv = 1559606.4
pp = 100
i = -.5531257
# below is the desired answer
# n = 11.251357
# where interest rate is negative
for num in range(1,100000000):
expn = num/1000000
temp3 = pv - pp*(1 - (1+i)**-expn)/i
#set level of precision, i.e. accurate to within
if temp3 <= 0.00000001:
n = num/1000000
print("The Number of periods is " + str(n))
n = float(n)
break