In NumPy, sto cercando di usare linalg
per calcolare gli inversi di matrice in ogni fase di uno schema di Newton-Raphson (la dimensione del problema è piccola intenzionalmente in modo da può invertire matrici hessiane calcolate analiticamente). Tuttavia, dopo essere andato molto avanti verso la convergenza, l'Iuta si avvicina al singolare.Come provare - tranne una operazione di matrice illegale a causa della singolarità in NumPy
C'è qualche metodo in NumPy che mi consente di verificare se una matrice è considerata singolare (il determinante del calcolo non è abbastanza robusto)? Idealmente, sarebbe bello se ci fosse un modo per usare un blocco try
except
per catturare l'errore di un singolo array di NumPy.
Come faccio? L'errore NumPy data al terminale è:
raise LinAlgError, 'Singular matrix'
numpy.linalg.linalg.LinAlgError: Singular matrix
Grazie. È uno di quei momenti "d'oh" che schiaffeggiano la testa; Non mi ero reso conto che avremmo potuto usare direttamente gli errori NumPy in un'istruzione 'except'. – ely
Inoltre, c'è un modo per renderlo specifico per "Singular matrix" e non solo per qualsiasi istanza di LinAlgError? – ely
Bene, puoi controrilanciare l'eccezione rilevata se non è quel messaggio .. guarda l'ultima modifica alla mia risposta. Questo è un modo per farlo, non sono sicuro se c'è forse un modo migliore. – wim