我是scipy和python的新手。我在Python中搜索过一个类似excelsolver的工具,scipy似乎非常强大。我的问题有点简单。我试图找到一系列现金流的折现率,这样CFs的现值之和等于一个特定的值。在
如果我运行代码,就会收到这个错误消息。1500是我的目标值,所以我尽量减小目标值和f(DR)之间的差异。在
运行时警告:乘法中遇到溢出 DRfactor[i]=DRfactor[i-1]*(1+DRs[i])
我们非常感谢任何帮助
import numpy as np
import scipy as sp
import scipy.optimize
def f(DR):
CFs = [100]*50
DRs = [np.nan]*50
DRfactor = [np.nan]*50
for i in range(0,50):
if 0<=i<=4:
DRs[i] = DR
else:
DRs[i] = (DRs[i-1]-0.1)*0.9+0.1
if i == 0:
DRfactor[i] = 1+DRs[i]
else:
DRfactor[i] = DRfactor[i-1]*(1+DRs[i])
CFPV = np.divide(CFs, DRfactor)
CFsum = np.sum(CFPV)
return (CFsum - 1500)**2
print (f(0.05))
sol = sp.optimize.minimize(f, 0.05)
sol.x
我想出来了。scipy.optimize.newton可以将f(DR)归零,得到0.041611073570941355,这与excel解算器给出的答案相同。在
相关问题 更多 >
编程相关推荐