da Megan00b » 24/09/2008, 20:15
Nono, forse mi sono espresso male. Il metodo di Gauss, che io sappia, è il migliore per la fatt. LU nel caso di matrici generiche. Devi necessariamente prevedere un sistema di pivot perlomeno parziali. Esistono le cosidette tecniche compatte di cui so poco, ma non penso che ci ricavi più di tanto. In ogni caso l'algoritmo di risoluzione di un sistema lineare con Gauss in generale non è una buona scelta numerica, si studia più che altro per motivi storici. Ci sono particolari matrici per cui la fattorizzazione di Gauss conviene, ma in generale si usano altre tecniche. Questo stando alle informazioni che ho io.
Volendo implementare l'algoritmo di Gauss c'è da scegliere tra pivoting parziale e totale. Il secondo assicura una maggiorazione dell'errore molto inferiore al primo. Tieni presente che in entrambi i casi la funzione che maggiora ha andamento esponenziale. C'è una formula che ora non ricordo, con una radice e una produttoria. Credo la trovi in ogni manuale di analisi numerica. Per curiosità potresti anche dare un'occhiata alla congettura di Wilkinson.
Come scegliere tra parziale e totale? Prova a pensare ad un modo per "stimare" la necessità e il costo dell'uno o dell'altro leggendo i valori delle entrate della matrice. Deve esserti ben chiaro però che non esiste il metodo perfetto, ciò che guadagni in sbabilità lo perdi in costo computazionale e/o di memorizzazione. Inoltre c'è il malcondizionamento sempre pronto dietro l'angolo e stimare quello non è semplice dal punto di vista computazionale nel caso di matrici generiche.
"Un popolo che non riconosce i diritti dell'uomo e non attua la divisione dei poteri non ha Costituzione" [Déclaration des droits de l'homme et du citoyen]
Chi di spada perisce... muore.