Неуверенность выхода из функции нормы Фробениуса - PullRequest
0 голосов
/ 10 марта 2019

Определите функцию f(x), которая принимает матрицу M в качестве входа и возвращает −||?−0.5?^2|| (рассматриваемая норма - это норма Фробениуса, реализованная в 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 голосов
/ 10 марта 2019

np.linalg.norm

- норма Фробениуса. Определяется как ниже

enter image description here

Это квадратный корень из суммы всех элементов в квадрате матрицы

np.dot (М, М) / 2

является точечным произведением М с самим собой, деленным на 2

-np.linalg.norm(M - np.dot(M,M)/2.)

Наконец, мы берем матрицу Фробениуса, являющуюся результатом (M - np.dot (M, M) / 2.), Которая является скаляром, и умножаем ее на -1. Это то, что вы видите, когда запускаете

печать (е (х))

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...