我需要找到一个函数的最大最小点。
有两个矩阵M_A
和M_B
,其中M_A < M_B
和I > M_B
(按元素比较),其中I
是所有1的矩阵。
我需要找到x
(在0和1之间),使得:x*M_A+(1-x)*I >= M_B
(逐元素比较)
为了做到这一点,我试图找到下面表达式x*M_A+(1-x)*I - M_B
的根。为此,我定义了一个标量函数,取上面表达式(x*M_A+(1-x)*I - M_B
)中所有负数项的和。目标是找到x
的值,使得my_f(x)=0
。然而,有无限个x
s满足这个条件,例如my_f(0)=0
。我想得到最大的x
。
def my_f(x):
matrix_comb = x*M_A + (1-x)*np.ones((n, n))
matrix_diff = matrix_comb - M_B
summ = 0
for i in range(0, len(matrix_diff)):
for j in range(0, len(matrix_diff)):
if matrix_diff[i,j] <= 0:
summ = summ + matrix_diff[i,j]
return -summ
my_f(scipy.optimize.fminbound(my_f, 0, 1))
代码返回0.85。然而,还有其他更大的x
值满足条件。
1条答案
按热度按时间px9o7tmv1#
我从字面上理解你的问题;也就是说,你真的是在寻找最大值
x
服从你的不等式;我忽略了一切之后 * 这样做我. *。因为寻根无助于实现这一目标。