Ho una matrice sparse molto grande che rappresenta un martix di transizione in una catena di Markov, cioè la somma di ogni riga della matrice è uguale a uno e sono interessato a trovare il primo autovalore e il suo vettore corrispondente che è più piccolo di uno. So che gli autovalori sono limitati nella sezione [-1, 1] e sono tutti reali (non complessi).
Sto cercando di calcolare i valori usando la funzione python scipy.sparse.eigs
, tuttavia, uno dei parametri delle funzioni è il numero di autovalori/vettori da stimare e ogni volta che ho aumentato il numero di parametri da stimare, il numero di autovalori che sono esattamente uno cresciuto pure.
Inutile dire che sto usando il parametro which
con il valore 'LR'
per ottenere gli autovalori k più grandi, dove k è il numero di valori da stimare.
Qualcuno ha un'idea di come risolvere questo problema (trovare il primo autovalore più piccolo di uno e il suo vettore corrispondente)?Calcolo di valori autovalori di matrici sparse molto grandi in python
20
A
risposta
1
Sono d'accordo con @pv. Se la tua matrice S
era simmetrica, potresti vederla come una matrice laplaciana della matrice I - S
. Il numero di componenti connessi di I - S
è il numero di zero-autovalori di questa matrice (vale a dire, la dimensione dello spazio associato all'autovalore 1 di S
). È possibile controllare il numero di componenti connessi del grafico la cui matrice di similarità è I - S*S'
per un inizio, ad es. con scipy.sparse.csgraph.connected_components
.
+0
e cosa faccio se la matrice non è simmetrica? –
Problemi correlati
- 1. Calcolo di esponenti molto grandi in python
- 2. Autovalori sparsi utilizzando eigen3/sparse
- 3. Inversione di matrici sparse di grandi dimensioni con scipy
- 4. Calcolo di numeri interi molto grandi
- 5. Scomposizione di Cholesky di matrici sparse mediante matrici di permutazione
- 6. Applicare PCA su matrice sparse molto grande
- 7. C'è un supporto per matrici sparse in Python?
- 8. Matrici sparse concatenate in Python usando SciPy/Numpy
- 9. Struttura dati per l'archiviazione di matrici sparse
- 10. Conversione pitone sparse dict matrice per SciPy matrici sparse
- 11. Scipy: le matrici sparse supportano l'indicizzazione avanzata?
- 12. Matrici sparse di Scipy - scopo e utilizzo di diverse implementazioni
- 13. Calcolo del vettore Fiedler in Python
- 14. autovalori di ordinamento di tipo numpy python
- 15. Gestione di file netCDF molto grandi in python
- 16. test binomiale in Python per numeri molto grandi
- 17. Libreria Fortran 90/95 per matrici sparse?
- 18. calcolo dei valori più grandi della funzione di Ackermann
- 19. Affettare le matrici sparse in Scipy - Quali tipi funzionano meglio?
- 20. Scarse prestazioni per il calcolo di autovalori e autovettori su GPU
- 21. R - dati frame - convertire matrici sparse
- 22. matrici unboxing, (sparse) e libreria vettoriale haskell
- 23. Utilizzo di matrici sparse di scipy per risolvere il sistema di equazioni
- 24. Calcolo di potenze estremamente grandi di 2
- 25. Calcolo di fattoriali grandi in C++
- 26. Accesso a voci singole in Sparse Matrix in Python
- 27. Utilizzo di matrici sparse/apprendimento online in Naive Bayes (Python, scikit)
- 28. Creazione di immagini molto grandi utilizzando Python Image Library
- 29. Autovalori in MATLAB
- 30. Grandi set di dati web in Python: come gestire array molto grandi?
Potrebbe essere necessario studiare la documentazione per il codice ARPACK sottostante. – hpaulj
@hpaulj, l'ho già fatto, non ha aiutato molto –
Hai capito il problema, e la matrice, abbastanza bene da sapere se ci sono più 'eigs' con questo valore? In altre parole, si tratta di una proprietà reale della matrice o di un errore nel codice? – hpaulj