Metodo di Gauss (base) pivot
Salve a tutti,
Non riesco a rispondere a una domanda posta dal professore :
" Nella matrice A al passo k-esimo quanto vale l'elemento pivot?" So solo che vuole una risposta generica non per una matrice particolare. Qualcuno sa la risposta ? grazie
Non riesco a rispondere a una domanda posta dal professore :
" Nella matrice A al passo k-esimo quanto vale l'elemento pivot?" So solo che vuole una risposta generica non per una matrice particolare. Qualcuno sa la risposta ? grazie
Risposte
elemento diverso da zero?
Dipende dal metodo di pivot scelto. Se si tenta la decomposizione LU e non PLU allora semplicemente è l'elemento della diagonale, ma in questo caso l'algoritmo può fallire. In matematica esatta invece può bastare scegliere il primo elemento diverso da 0 al di sotto della diagonale. In altri casi direi che si sceglie in genere il più grande elemento delle colonna al di sotto della diagonale. Ma ci sono vari metodi.
penso si debba distinguere se si applica la tecnica del pivoting o no, se si è nel primo caso a sua volta va distinto tra pivoting parziale e totale... dalla domanda sembrerebbe che considera la tecnica senza pivoting e quindi è come dice vict85..se l'elemento della diagonale è $0$ basta effettuare uno scambio tra le righe... dico bene?
"laura123":
penso si debba distinguere se si applica la tecnica del pivoting o no, se si è nel primo caso a sua volta va distinto tra pivoting parziale e totale... dalla domanda sembrerebbe che considera la tecnica senza pivoting e quindi è come dice vict85..se l'elemento della diagonale è $0$ basta effettuare uno scambio tra le righe... dico bene?
In realtà di pivoting ne esistono davvero tanti. Tra l'altro tu consideri solo tipi di pivoting che trovano massimi (eventualmente scalati). Tra questi esiste anche il root pivoting che ha complessità inferiore al pivoting parziale ma mantenendo una stabilità piuttosto alta (anche se il pivoting parziale è in genere sufficientemente stabile in pratica). Se invece vuoi velocità, parallelizzabilità e ti interessa meno della stabilità esiste anche l'incremental pivoting. Dopo di che esiste il pivoting parziale sia per riga che per colonna.
Inoltre a volte lavori con matrici con caratteristiche particolari che vuoi si mantengano durante l'algoritmo. Per esempio se tu hai una matrice sparsa allora il pivoting parziale tende a rendertela man mano meno sparsa. Se tu hai una matrice simmetrica allora perderai la simmetria e così via.
"vict85":
Inoltre a volte lavori con matrici con caratteristiche particolari che vuoi si mantengano durante l'algoritmo. Per esempio se tu hai una matrice sparsa allora il pivoting parziale tende a rendertela man mano meno sparsa.
anche il metodo di Gauss senza pivoting fa perdere tali caratteristiche.. se non ricordo male in questi casi conviene applicare qualche metodo iterativo tipo Gauss-Seidel o jacobi (se convergono)
"vict85":
Tra questi esiste anche il root pivoting che ha complessità inferiore al pivoting parziale ma mantenendo una stabilità piuttosto alta (anche se il pivoting parziale è in genere sufficientemente stabile in pratica). Se invece vuoi velocità, parallelizzabilità e ti interessa meno della stabilità esiste anche l'incremental pivoting. Dopo di che esiste il pivoting parziale sia per riga che per colonna.
Inoltre a volte lavori con matrici con caratteristiche particolari che vuoi si mantengano durante l'algoritmo. Per esempio se tu hai una matrice sparsa allora il pivoting parziale tende a rendertela man mano meno sparsa. Se tu hai una matrice simmetrica allora perderai la simmetria e così via.
molto interessante

"laura123":
anche il metodo di Gauss senza pivoting fa perdere tali caratteristiche.. se non ricordo male in questi casi conviene applicare qualche metodo iterativo tipo Gauss-Seidel o jacobi (se convergono)
Indicativamente si. Questi metodi traggono un maggiore vantaggio dall'uso di matrici sparse. Ma sono metodi approssimati. Mi era capitato di leggere che nel caso di matrici sparse un buon pivoting consiste nel prendere l'elemento della matrice che contiene il minor numero possibile di elementi non-nulli nella sua riga e nella sua colonna (ma non lo ricordo benissimo sinceramente).