Я использую разложение Холески для выборки случайных величин из многомерного гаусса и вычисляет спектр мощности случайных величин. Результат, полученный из numpy.linalg.cholesky
, всегда имеет более высокую мощность на высоких частотах, чем от scipy.linalg.cholesky
.
Каковы различия между этими двумя функциями, которые могут вызвать этот результат? Какой из них более численно устойчив?
Вот код, который я использую:
n = 2000
m = 10000
c0 = np.exp(-.05*np.arange(n))
C = linalg.toeplitz(c0)
Xn = np.dot(np.random.randn(m,n),np.linalg.cholesky(C))
Xs = np.dot(np.random.randn(m,n),linalg.cholesky(C))
Xnf = np.fft.fft(Xn)
Xsf = np.fft.fft(Xs)
Xnp = np.mean(Xnf*Xnf.conj(),axis=0)
Xsp = np.mean(Xsf*Xsf.conj(),axis=0)