gpt4 book ai didi

python - scipy.optimize.fmin 有 2 个变量。如何让它发挥作用

转载 作者:太空狗 更新时间:2023-10-30 01:29:13 27 4
gpt4 key购买 nike

我可以毫无问题地让 scipy.optimize.fmin 适用于具有一个变量的函数,但不知何故我无法弄清楚如何让它适用于 2 个变量。下面是我尝试(但失败)最大化的函数的一个简单示例。我做错了什么?

from scipy.optimize import fmin

test2 = lambda x,y: x-x**2 + y - y**2
guess = [ 0.5,0.5 ] #just some guess
print fmin( -test2, guess, args=(x,y) )

错误信息:

print fmin( -test2, guess, args=(x,y) )
TypeError: bad operand type for unary -: 'function'

更新:感谢您的回答!最后得到了以下也有效的方法:

谢谢,成功了。最终得到了以下也有效的代码:

from scipy.optimize import fmin
test2 = lambda x: -(x[0]-x[0]**2 + x[1] - x[1]**2 )
guess = [ 0.5,0.5 ] #just some guess
print fmin( test2, guess )
Optimization terminated successfully.
Current function value: -0.500000
Iterations: 18
Function evaluations: 37
[ 0.5 0.5]

您可能已经猜到了,我仍在学习基础知识,并不总是能找到那么明显的错误消息。

最佳答案

错误信息非常明确:你不能否定一个函数。将否定移动到函数定义中。同时,您应该更改该函数,使其适用于单个参数,一个 NumPy 数组:

>>> def test2(x):
... return -np.sum(x - x**2)
...
>>> test2(np.array([.5, .5]))
-0.5

然后在没有 args 的情况下最小化它:

>>> fmin(test2, np.array([.5, .5]))
Optimization terminated successfully.
Current function value: -0.500000
Iterations: 18
Function evaluations: 37
array([ 0.5, 0.5])

关于python - scipy.optimize.fmin 有 2 个变量。如何让它发挥作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21255215/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com