scipy:最小化 vs. minimize.scalar; return F 对比 return F**2;不应该有所作为吗?

scipy: minimize vs. minimize.scalar; return F versus return F**2; shouldnt make a difference?

我刚发现一个我无法解释的行为。我错过了什么吗?

我有一个隐式函数:

def my_cost_fun(x,a,b,c):
    # x is a scalar; all variables are provided as numpy arrays
    F = some_fun(x,a,b,c) - x
    return F

我确实使用以下方法最小化了函数:

或者通过最小化函数:

奇怪的是:

有人可以解释为什么吗?

正如我在评论中提到的:

这里有一个可能的解释为什么当你使用 return F 时 L-BFGS-B 不工作:如果 F 的值可以是负数,那么 optmize.minimize 会尝试找到它能找到的最负值。 minimize 不一定是求根,而是求最小值。如果您改为 return F**2,因为对于实值函数 F**2 将始终为正,因此 F**2 的最小值将发生在 F=0 处,即最小值将是根。

这并不能解释您的时间问题,但这可能是次要问题。如果您有机会 post 定义,我仍然很想研究您的特定 some_fun(x,a,b,c) 的时间安排。