Newsgroup: it.comp.lang.visual-basic
Titolo: Determinante di una matrice

Ciao a tutti!
Ringraziando tutti quelli che hanno risposto al mio thread precedente, colgo
l'occasione per porre un quesito a quanti amino la matematica
Come calcore il determinante di una matrice contenuta in un array
bidimensionale?

Alessandro:
  sul mio sito di "DownLoads" a 
http://members.xoom.it/flanguasco
o, se non funziona perche' Xoom e' in mutua, a 
http://www.mclink.it/personal/MC7061/
puoi trovare il progettino Matrici con il calcolo del determinante e di altre
cosuzze relative alle matrici.
Ciao e se hai problemi contattami pure.
Franco


 ha scritto nel messaggio
news:3A5CA2CD...@MCLINK.IT...


 ha scritto nel messaggio
news:3A5CA2CD...@MCLINK.IT...


A cosa servono i simboli # e & dopo i nomi delle variabili?
Dichiarano il tipo della variabile, se mi ricordo bene & vuol dire long,
guarda nell'help.
]zac[
Salve
                Dbg

 Non è che hai in giro una versione più semplice della funzione che non


Alessandro:
  sul significato dei simboli #, &, etc... ti abbiamo gia' risposto
ma voglio aggiungere che il loro uso e', a mio parere, un brutto vezzo.
Molto piu' chiaro sarebbe l' uso di As ..., se non fosse per la pigrizia
che ho sempre coltivato come un fiore.
Anzi, se non fossi cosi' pigro come sono, scriverei "L' Elogio della
Pigrizia" :-)
Per quanto riguarda l' uso della decomposizione LU c' e' una ragione
specifica per cui ti e' antipatica?
Se proprio non riesci a tollerarla ti metto qui un pezzo di codice che
ho copiato, adattandolo anche al calcolo del determinante, dal libro:
  Basic Computer Programs in Science and Engineering
  di J. H. Gilder.
Tieni pero' presente che:
1) il calcolo e' probabilmente piu' lento.
2) i risultati sono meno accurati in presenza di valori
   molto piccoli e molto grandi.
3) non l' ho provata abbastanza e non mi assumo responsabilita'
   sul funzionamento corretto in tutte le condizioni: la mia
   belinata del millennio l' ho gia' detta e non vorrei ripetermi
   troppo presto...
Public Function Inversa_2(a() As Double, b() As Double _
    , Optional ByRef det As Double) As Boolean
'
'   Ritorna in b() l' inversa della matrice quadrata a()
'   ed in det il determinante di a().
'   La matrice originale a() viene modificata.
'   Se durante il calcolo vengono trovate condizioni
'   anomale la funzione ritorna False.
'
    Dim I As Long, J As Long, H As Long, K As Long, N As Long
    Dim t As Double, m As Double, d As Double
'
    On Error GoTo Inversa_2_ERR
'
    N = UBound(a, 1)
    ReDim b(1 To N, 1 To N) As Double
'
    For I = 1 To N
        For J = 1 To N
            b(I, J) = 0
        Next J
        b(I, I) = 1
    Next I
'
    det = 1
    For J = 1 To N
        For I = J To N
            If a(I, J) <> 0 Then Exit For
        Next I
        If I > N Then Err.Raise 5, , "La matrice e' singolare."
'
        For H = 1 To N
            t = a(J, H)
            a(J, H) = a(I, H)
            a(I, H) = t
            m = b(J, H)
            b(J, H) = b(I, H)
            b(I, H) = m
        Next H
'
        d = a(J, J)
        det = det * d
        For H = 1 To N
            a(J, H) = a(J, H) / d
            b(J, H) = b(J, H) / d
        Next H
'
        For H = 1 To N
            If J <> H Then
                d = a(H, J)
                For K = 1 To N
                    a(H, K) = a(H, K) - a(J, K) * d
                    b(H, K) = b(H, K) - b(J, K) * d
                Next K
            End If
        Next H
    Next J
'
'
Inversa_2_ERR:
    Inversa_2 = (Err = 0)
    If Err <> 0 Then
        MsgBox Err.Description, vbCritical, " Inversa_2"
    End If
'
'
'
End Function
Ciao e buon lavoro.
Franco

 ha scritto nel messaggio
news:3A5DE696...@MCLINK.IT...


    troppo presto...
Ecco come sentirmi a casa in questo ng !
Ciao
Aldo

 wrote


Ah come la canora favella che nel cuor mi sta',
suona dolce alle orecchie di un esiliato a Roma :-)
Arriva pensione, arriva presto che Oneglia mi aspetta...
Franco
