不确定Frobenius规范函数的输出

时间:2019-03-10 18:53:00

标签: python numpy

定义一个函数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是指什么。

作品图片:

Whole image of work

输出:

Output image

1 个答案:

答案 0 :(得分:0)

  

np.linalg.norm

是Frobenius规范。定义如下

enter image description here

它是矩阵中所有元素平方的和的平方根

  

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)