与えられた入力:
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 になります)。 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
文字列「1.10044876702」を浮動小数点数に変換できないという ValueError が表示されます。何か案は?
解決済み: i.real は実際の部分を取得します。分割または文字列変換の必要はありません。つまり:
for i in array:
if i > 1:
a = i.real
answer = float(a)
print answer