Newsgroup: it.comp.lang.c
Titolo: Determinante matrici

Ho l'impellente bisogno di programma C che calcoli il determinante di una
matrice usando come metodo di risoluzione quello di farla diventare
triangolare........
Grazie a chiunque prenderà in considerazione questo messaggio!!
Ciao!
                                                      Michele

                                                       Michele
http://www.library.cornell.edu/nr/bookcpdf.html
Guarda al capitolo 2, cerca Eliminazione di Gauss (con pivoting) e 
fattorizzazione LU usando Gauss (funziona su matrici quadrate, non ho la 
piu' pallida idea di che metodo si usi per quelle rettangolari... o meglio, 
non so se le altre fattorizzazioni come la QR sono buone per il calcolo del 
determinante... ma in questo gruppo se non sbaglio c'e' un ex esercitatore 
di calcolo numerico che puo' risponderti :) ).
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

 di calcolo numerico che puo' risponderti :) ).
Non so se sono io l'ex esercitatore di c.n. a cui ti riferisci...
comunque la LU con pivot va benissimo per calcolare il determinante
(tra l'altro non devi nemmeno memorizzarti le varie cose che trovi).
Ricorda di "invertire" il determinante quando facendo pivot scambi le 
righe. E metti un bel test sui pivot per determinare se il determinante
e' zero (o un numero molto piccolo) nel qual caso puoi terminare prima.
Se poi la matrice e' molto sparsa o soprattutto molto strutturata
allora ci possono essere dei metodi alternativi computazionalmente
piu' efficienti.
Se posso essere pignolo, e fare una osservazione di carattere generale,
(non legata specificatamente a questo post)
mi piacerebbe che quando la gente fa domande
di questo tipo specificasse se si tratta di un esercizio di
programmazione o di una cosa seria e desse anche una indicazione delle
dimensioni del problema da risolvere. A volte le risposte possono
cambiare.
Ciao,
g.

 cambiare.
Gia', anche perche' quando si legge un post del genere automaticamente si 
pensa a "compiti a casa" e si tende a rispondere male, quando magari si e' 
solo espresso male e meritava un po' piu' di attenzione.


 di segno del determinante e se funziona anche su matrici non quadrate.
potrei dire delle bischerate perche' i miei anni di calcolo numerico
sono abbastanza lontani. Comunque, in generale, se tu scambi due righe
di una matrice allora il determinante risulta moltiplicato per -1.
Quindi, quando fai la LU, se il pivot massimo e' in un'altra riga,
allora per proseguire stai facendo uno scambio di righe e quindi ti
devi segnare che il det che otterrai avra' il segno invertito.
(il det sara' uguale al prodotto dei pivot moltiplicato
per il valore che si ottiene alla fine nell'angolino e moltiplicato
per il valore +1 o -1 che ho ottenuto tenendo traccia di quante volte
ho scambiato delle righe.)
Per quel che riguarda le matrici rettangolari, sinceramente non ho
mai dovuto fattorizzarle ne' calcolarne il determinante, quindi non
conosco nemmeno la possibile definizione standard (se esiste) di
"determinante di matrice rettangolare", anche se presumo si possa
definire in modo analogo.
ciao,
g.

 definire in modo analogo.
Non vorrei dire stupidaggini (l'esame di geometria e' molto lontano),
ma il determinante esiste solo per le matrici quadrate.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ma il determinante esiste solo per le matrici quadrate.
Certamente il determinante e' correntemente definito solo per matrici
quadrate. Pero' diversi autori, con vari scopi, hanno dato delle
definizioni di determinante che si applicano alle matrici rettangolari
e che estendono la definizione di determinante per matrici quadrate.
tanto per fare un esempio:
http://www.emis.de/journals/PIMB/074/n074p015.ps.gz
ciao,g.