使用Scipy查找目标值Python

2024-06-16 09:54:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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

Tags: importifasnpscipynanelsesp