Calcolo determinante matrice



  • Determinante matrice
    di Mary (utente non iscritto) data: 19/02/2009

    Ciao a tutti... avrei bisogno dell'aiuto di qualcuno per risolvere il seguente problema in visual basic... scrivere il codice di un programma che legga i dati di una matrice dal foglio excel e ne calcoli il determinante con la regola di sarrus!!! grazie...



  • di Ricky53 data: 20/02/2009

    Ciao,
    noi ti possiamo aiutare con le istruzioni in vba, tu devi indicare quali sono i passaggi per risolvere il determinante con la regola di sarrus.

    ipotizza di risolverlo manualmente (mi sembra di ricordare che fosse per una matrice 3x3) ed invia i passaggi che poi insieme li si traduce in istruzioni da utilizzare in vba.
    forza.
    ciao da ricky53.



  • di Albatros (utente non iscritto) data: 21/02/2009

    La formula che si potrebbe applicare per risolvere il problema con le celle di excel dovrebbe essere questa, ricordando che la formula si applica ad una matrice 3x3.
    supponiamo che le celle che interessano la matrice vadano dalla a1:c3, quindi noi avremo nella cella a1=a11(a11 e' l'elemento della matrice della righa1 colonna1 riferito alla matrice) b1=a12, c1=a13;
    a2=a21,b2=a22,c2=a23;a3=a31,b3=a32,c3=a33.
    a questo punto copiamo l'elemento della cella a1 in d1 quindi avremo che d1=a1,e1=b1;
    d2=a2,e2=b2;d3=a3,e3=b3;
    cosi abbiamo una nuova matrice formata da 3x5.
    per trovare il determinate applicando la regola di sarrus , basta fare la somma dei prodotti della diagonale formata dalla colonna a1*b2*c3;b1*c2*d3;c1*d2*e3. a questo valore sottraiamo la somma dei prodotti della diagonale formata dai prodotti c1*b2*a3;d1*c2*b3;e1*d2*c3.
    spero di essere stato chiaro .
    ciao
    albatros



  • di Albatros (utente non iscritto) data: 23/02/2009

    Vedi se questo spezzone di codice va bene , il codice legge i valori nelle celle che vanno dalla a1:c3, dove tu hai i valori degli elementi della matrice 3x3, fai sapere.
    ciao
    albatros
     
    Public Sub sarrus()
    For i = 1 To 3
    For J = 1 To 5
    If J <= 3 Then
    Cells(i, J) = Cells(i, J)
    Else
    Cells(i, J) = Cells(i, J - 3)
    End If
    Next J
    Next i
    
    End Sub
    
    Public Sub determinante()
    Dim mat(3, 5)
    sarrus
    For i = 1 To 3
    For J = 1 To 5
    mat(i, J) = Cells(i, J)
    Next J
    Next i
    d = mat(1, 1) * mat(2, 2) * mat(3, 3)
    d1 = mat(1, 2) * mat(2, 3) * mat(3, 4)
    d2 = mat(1, 3) * mat(2, 4) * mat(3, 5)
    d3 = mat(1, 5) * mat(2, 4) * mat(3, 3)
    d4 = mat(1, 4) * mat(2, 3) * mat(3, 2)
    d5 = mat(1, 3) * mat(2, 2) * mat(3, 1)
    det = (d + d1 + d2) - (d3 + d4 + d5)
    Cells(1, 8) = det
    End Sub



  • di Ricky53 data: 23/02/2009

    Ciao,
    sei ancora interessato alla soluzione?

    se oltre le macro ti interessa avere una soluzione con formule in excel scrivi nel forum.

    ciao da ricky53