A(2,2) e B(2,2)
esiste una funzione che effettua il prodotto tra le due matrici ?
Grazie.
il prodotto di due matrici 2 righe x 2 colonne
è ancora una matrice 2 righe x 2 colonne.
se hai A in A1:B2
e B in C1:D2
seleziona un intervallo di celle 2x2 (E1:F2)
e inserisci
=MATR.PRODOTTO(A1:B2;C1:D2)
inviando con Ctrl+Maiusc+Invio.
guarda nell'help la guida alla funzione:
l'esempio è proprio ciò che stai chiedendo.
.f
"fernando cinquegrani" <f.cinq...@xroxxmxxxa.it> ha scritto nel
messaggio news:%2373ZBOP...@TK2MSFTNGP03.phx.gbl...
non ho capito cosa devi fare della matrice risultato.
questa function è completamente equivalente alla
funzione matr.prodotto
Public Function promat(a As Range, b As Range) As Variant
Dim temp As Variant, c As String
c = "MMult(" & a.Address & "," & b.Address & ")"
temp = Evaluate(c)
promat = temp
End Function
se crei un punto d'interruzione su
promat = temp
puoi testare nella finestra immediata i valori
? temp(1,1), temp(1,2), temp(2,1), temp(2,2)
.f
p.s.: metti la tua risposta *dopo* il post letto
p.s.: guarda anche nell'help la funzione
application.worksheetfunction.mmult
Registrare una macro seguendo le indicazioni
di Fernando?
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://blog.maurogsc.eu/
non capisco molto la tua notazione.
vedi se questa macro ti può essere utile
Option Explicit
Public Sub promat()
Dim i As Long, j As Long, m As Long
Dim a(1 To 2, 1 To 2) As Double, b(1 To 2, 1 To 2) As Double, c() As Double
a(1, 1) = 1: a(1, 2) = 2: a(2, 1) = 3: a(2, 2) = 4
b(1, 1) = 1: b(1, 2) = 2: b(2, 1) = 3: b(2, 2) = 4
ReDim c(1 To UBound(a, 1), 1 To UBound(b, 2))
For i = 1 To UBound(a, 1)
For j = 1 To UBound(b, 2)
c(i, j) = 0
For m = 1 To UBound(b, 1)
c(i, j) = c(i, j) + a(i, m) * b(m, j)
Next
Debug.Print c(i, j)
Next: Next
End Sub
ora modifica le dimensioni e/o il contenuto delle matrici,
ad esempio con
Dim a(1 To 2, 1 To 3) As Double, b(1 To 3, 1 To 2) As Double, c() As Double
a(1, 1) = 1: a(1, 2) = 2: a(1, 3) = 3: a(2, 1) = 4: a(2, 2) = 5: a(2, 3) = 6
b(1, 1) = 1: b(1, 2) = 2: b(2, 1) = 3: b(2, 2) = 4: b(3, 1) = 5: b(3, 2) = 6
(il numero delle righe di a deve essere sempre pari al numero di colonne di
b)
.f
oops! il numero delle colonne di a deve essere sempre pari al numero di
righe di b)
es.:
a(1, 1) = 1: a(1, 2) = 2: a(1, 3) = 3: a(1, 4) = 4
a(2, 1) = 5: a(2, 2) = 6: a(2, 3) = 7: a(2, 4) = 8
b(1, 1) = 1: b(1, 2) = 2: b(1, 3) = 3
b(2, 1) = 4: b(2, 2) = 5: b(2, 3) = 6
b(3, 1) = 7: b(3, 2) = 8: b(3, 3) = 9
b(4, 1) = 10: b(4, 2) = 11: b(4, 3) = 12
c sarà una matrice 2x3
.f