Обратите внимание, что рекомендуется использовать номер array
от numpy вместо matrix
: см. this paragraph в руководстве пользователя. Путаница в некоторых ответах является примером того, что может пойти не так ... В частности, D ** 0,5 и продукты elementwise, если применяются к массивам numpy, что дало бы вам неправильный ответ. Например:
import numpy as np
from numpy import dot, diag
D = diag([1., 2., 3.])
print D**(-0.5)
[[ 1. Inf Inf]
[ Inf 0.70710678 Inf]
[ Inf Inf 0.57735027]]
В вашем случае матрица является диагональной, и поэтому квадратный корень из матрицы просто другая диагональная матрица с квадратным корнем из диагональных элементов.Использование Numpy массивов, уравнение становится
D = np.array([1., 2., 3.]) # note that we define D just by its diagonal elements
A = np.cov(np.random.randn(3,100)) # a random symmetric positive definite matrix
L = dot(diag(D**(-0.5)), dot(A, diag(D**0.5)))
Thx. D на самом деле является диагональной матрицей. Я могу сделать это сейчас. – mrcuongnv