Scipy:最大化插值曲线之间的距离
Scipy: Maximize Distance between Interpolated Curves
我有两条使用 scipy.interpolate.interp1d
创建的插值曲线 - 如何计算使这两条曲线之间的差异最大化的 x 值?
相关代码如下:
from scipy import interpolate
units = [0.0, 1.0, 2.0 ,..., 49.0, 50.0]
revenue = [0.0, 1.2, 2.4 ,..., 79.1, 80.0]
cost = [0.3, 0.6, 0.9 ,..., 14.7, 15.0]
revenue_func = interpolate.interp1d(units,revenue,kind='cubic')
cost_func = interpolate.interp1d(units,cost,kind='linear')
我需要找到使 revenue_func - cost_func
最大化的单位值。如果我可以将结果限制为单位的整数值,这将很容易,但我需要将单位视为 0 到 50 之间的连续单位。
我被这个难住了,非常感谢任何建议 - 即使是那些使用除 scipy
之外的其他软件包的建议
可能是 scipy.optimize 包,其中包括 minimize 和 minimize_scalar 函数。由于这些函数搜索最小值而不是最大值,因此您必须否定要最大化的函数。最大化收入 - 成本
import scipy.optimize as opt
negated_profit_func = lambda x : cost_func(x) - revenue_func(x)
result = opt.minimize_scalar(negated_profit_func, bounds = (0, 50), method = 'bounded')
print(result)
我有两条使用 scipy.interpolate.interp1d
创建的插值曲线 - 如何计算使这两条曲线之间的差异最大化的 x 值?
相关代码如下:
from scipy import interpolate
units = [0.0, 1.0, 2.0 ,..., 49.0, 50.0]
revenue = [0.0, 1.2, 2.4 ,..., 79.1, 80.0]
cost = [0.3, 0.6, 0.9 ,..., 14.7, 15.0]
revenue_func = interpolate.interp1d(units,revenue,kind='cubic')
cost_func = interpolate.interp1d(units,cost,kind='linear')
我需要找到使 revenue_func - cost_func
最大化的单位值。如果我可以将结果限制为单位的整数值,这将很容易,但我需要将单位视为 0 到 50 之间的连续单位。
我被这个难住了,非常感谢任何建议 - 即使是那些使用除 scipy
之外的其他软件包的建议可能是 scipy.optimize 包,其中包括 minimize 和 minimize_scalar 函数。由于这些函数搜索最小值而不是最大值,因此您必须否定要最大化的函数。最大化收入 - 成本
import scipy.optimize as opt
negated_profit_func = lambda x : cost_func(x) - revenue_func(x)
result = opt.minimize_scalar(negated_profit_func, bounds = (0, 50), method = 'bounded')
print(result)