定义一个函数f(x)
,该函数将矩阵M作为输入并返回−||−0.5^2||
(所讨论的范式是Frobenius范式,由np.linalg.norm实现)。
打印大小为4x4的二进制矩阵的结果。
这是我的代码:
import numpy as np
def f(x): #defines the function
return -np.linalg.norm(M - np.dot(M,M)/2.) #returns the Frobenius norm
M = np.random.randint(2, size=[4,4]) #implementing random matrix
print(M) #printing random 2x2 matrix
print(f(x)) #printing f(x)
注意:我添加了图像以使输出内容清晰可见。
我的问题是我不明白值-1.9364916731037085是指什么。
作品图片:
输出:
答案 0 :(得分:0)
np.linalg.norm
是Frobenius规范。定义如下
它是矩阵中所有元素平方的和的平方根
np.dot(M,M)/ 2
是M自身的点积除以2
-np.linalg.norm(M - np.dot(M,M)/2.)
最后,我们将矩阵的Frobenius范数取为标量(M-np.dot(M,M)/ 2。)的结果,并将其乘以-1。这就是您运行
时看到的print(f(x))
M = np.array([[1,1],[1,1]])
n = np.dot(M,M)/2.
j = M - n
assert np.sqrt(np.sum(np.power(j,2))) == np.linalg.norm(j)