我知道 numpy 有一个 IRR 函数可以计算这样的东西。我正在处理一个更复杂的问题,贴现现金流是一个简单的例子,可以理解我所说的“元素方面”的依赖是什么意思。
给定一个输入X = [x1, x2, x3]
,我应该得到一个输出Y = [y1, y2, y3]
,其中 y1 仅依赖于 x1,y2 依赖于 x2,y3 依赖于 x3。
scipy.optimize.minimize 是否以这种方式解释问题?我的理解是 scipy 认为 Y 的每个元素都依赖于 X 中的所有元素。如果 scipy 以后一种方式表现,我怎样才能让 scipy 识别“元素方面”的依赖关系?一次传递一个 x 值是最好的方法吗?
这是一个例子:
import numpy as np
import scipy.optimize
def f(wacc, cash_flows):
"""Function to minimize.
Present value of cash flows given discount rates (weighted average cost of capital).
"""
years = cash_flows.shape[1]
pv = cash_flows / (1 + wacc.reshape(-1, 1)) ** np.arange(cash_flows.shape[1])
return pv.sum(axis=1)
def cost_function(wacc, cash_flows):
return np.abs(f(wacc, cash_flows)).sum()
cash_flows = np.array([[-2, 2, 3], [-3, 3, 4], [-4, 4, 5]])
x0 = np.array([0.1, 0.1, 0.1]) # initial guess for WACC
scipy.optimize.minimize(fun=cost_function,
x0=x0,
args=(cash_flows),
options=dict(disp=True))