给定输入:
present value = 11, SUMMATIONS of future values that = 126, and n = 7 (periods of change)
我如何解决一个链的速率,它会创建一个总和为 FV 的链?这与仅求解 11 到 126 之间的回报率不同。这是求解允许总和为 126 的回报率。我一直在尝试不同的想法并查找 IRR 和 NPV 函数,但求和方面让我很困惑.
如果求和方面不清楚,如果我假设比率为 1.1,那会将 PV = 11 变成这样的列表(加起来几乎是 FV 126),我如何只知道 n 来求解 r,总和 fv 和 pv?:
11
12.1
13.31
14.641
16.1051
17.71561
19.487171
21.4358881
总计 = 125.7947691
谢谢你。
编辑:我试图创建一种迭代器,但它在第一个循环之后挂起......
for r in (1.01,1.02,1.03,1.04,1.05,1.06,1.07,1.08,1.09,1.10,1.11,1.12):
print r
test = round(11* (1-r**8) / (1 - r),0)
print test
while True:
if round(126,0) == round(11* (1-r**8) / (1 - r),0):
answer = r
break
else:
pass
编辑2:
IV = float(11)
SV = float(126)
N = 8
# sum of a geometric series: (SV = IV * (1 - r^n) / (1 - r )
# r^n - (SV/PV)*r + ((SV - IV)/IV) = 0
# long form polynomial to be solved, with an n of 3 for example:
# 1r^n + 0r^n + 0r^n + -(SV/PV)r + ((SV - IV)/IV)
# each polynomial coefficient can go into numpy.roots to solve
# for the r that solves for the abcd * R = 0 above.
import numpy
array = numpy.roots([1.,0.,0.,0.,0.,0.,0.,(-SV)/IV,(SV-IV)/IV])
for i in array:
if i > 1:
a = str(i)
b = a.split("+")
answer = float(b[0])
print answer
我收到一个 ValueError,我的字符串“1.10044876702”无法转换为浮点数。有任何想法吗?
已解决:i.real 得到了它的真实部分。无需拆分或字符串转换,即:
for i in array:
if i > 1:
a = i.real
answer = float(a)
print answer