问题描述
是否可以使用 Scipy 最小化器最小化依赖于两个数组的函数 fun(x,y)
?
(x 和 y 是两个不同长度的一维数组,例如 x=np.array([1,2,3,1,52,5])
和 y=np.array([4,8,9])
)
我正在考虑类似的事情:
minimize(fun,[x,y],method="Powell",tol=1e-3)
这是正确的方法吗?
谢谢。
解决方法
定义一个函数来显示 minimize
提供的参数及其形状:
In [300]: def fun(x):
...: print(x,x.shape)
...: return np.sum(x)**2
...:
...:
使用二维数组调用最小化:
In [301]: minimize(fun,np.arange(6).reshape(2,3))
[0. 1. 2. 3. 4. 5.] (6,)
[1.49011612e-08 1.00000000e+00 2.00000000e+00 3.00000000e+00
4.00000000e+00 5.00000000e+00] (6,)
[0. 1.00000001 2. 3. 4. 5. ] (6,)
[0. 1. 2.00000001 3. 4. 5. ] (6,)
[0. 1. 2. 3.00000001 4. 5. ] (6,)
[0. 1. 2. 3. 4.00000001 5. ] (6,)
[0. 1. 2. 3. 4. 5.00000001] (6,)
....
请注意,最初的 x0
(2,3),已经分解为 (6,)。
我想你是从那里开始的。