m = 10 n = 10 d = 10 np.random.seed(0) M = np.random.randn(m *n,1 ) A = np.random.randn(d, m* n) b = A.dot(M) print(M) print(np.linalg.pinv(A).dot(b))
Может кто-нибудь сказать мне, почему эти 2 отпечатка не дают такой же ответ?
Ваша система недостаточно определена - у вас меньше уравнений (d=10), чем неизвестных (m*n=100), поскольку ваша матрица A (размером (10,100)) имеет меньше строк, чем столбцов.В этом случае вы не можете рассчитывать на получение уникального решения, их может быть бесконечно много.Если вы ищете лучший способ приблизиться к этим вычислениям, этот выглядит как многообещающий справочник.
d=10
m*n=100
(10,100)