Uso la scomposizione di Cholesky per campionare variabili casuali da gaussiane a più dimensioni e calcolare lo spettro di potenza delle variabili casuali. Il risultato che ottengo da numpy.linalg.cholesky
ha sempre una maggiore potenza in alta frequenza rispetto a scipy.linalg.cholesky
.Qual è la differenza tra cholesky in numpy e scipy?
Quali sono le differenze tra queste due funzioni che potrebbero causare questo risultato? Quale è più numericamente stabile?
ecco il codice che uso:
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)
Dalla scipy faq [Qual è la differenza tra NumPy e SciPy?] (Http://new.scipy.org/faq.html#what-is-the-difference-between-numpy-and-scipy) : "In ogni caso, SciPy co dispone di versioni più complete dei moduli di algebra lineare e di molti altri algoritmi numerici. " Vedi anche [Perché entrambi 'numpy.linalg' e' scipy.linalg'? Qual è la differenza?] (Http://new.scipy.org/faq.html#why-both-numpy-linalg-and-scipy-linalg-what-s-the-difference). –