Anzeige
Archiv - Navigation
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
976to980
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Matrizenmultiplikation

Matrizenmultiplikation
11.05.2008 09:57:00
Frank
Hallo!
Ich habe mir ein Makro zur Mulitplikation von Matrizen gebaut. Dafür benutze ich diesen Befehl: Application.WorksheetFunction.MMult
Das Problem ist, dass die Zeilenanzahl von Matrix1 mit der Spaltenanzahl von Matrix2 übereinstimmen muss. Aber natürlich möchte ich auch Matrizen multiplizieren, die diese Bedingung nicht erfüllen! Kann mir hier jemand damit helfen? Das wäre sehr nett.
Danke & Gruß, Frank Czygan
Hier der Makro Code:

Sub Makro1()
Sheets(4).Activate
Cells.Select
Selection.ClearContents
Dim X() As Variant
Dim Y() As Variant
Dim Z() As Variant
Sheets(1).Activate
a = Sheets(3).Cells(3, 1)
b = Sheets(3).Cells(3, 2)
ReDim Preserve X(1 To a, 1 To b)
For c = 1 To a
For d = 1 To b
X(c, d) = Cells(c, d)
Next
Next
Sheets(2).Activate
e = Sheets(3).Cells(7, 1)
f = Sheets(3).Cells(7, 2)
ReDim Preserve Y(1 To e, 1 To f)
For g = 1 To e
For h = 1 To f
Y(g, h) = Cells(g, h)
Next
Next
i = Sheets(3).Cells(11, 1)
j = Sheets(3).Cells(11, 2)
ReDim Preserve Z(1 To i, 1 To j)
' populating z
For a = 1 To i
For b = 1 To j
Z(a, b) = Application.WorksheetFunction.MMult(X, Y)
Next
Next
Sheets(4).Activate
For a = 1 To i
For b = 1 To j
Cells(a, b) = Z(a, b)
Next
Next
Range("A1").Select
End Sub


13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Matrizenmultiplikation
11.05.2008 10:23:00
Erich
Hallo Frank,
zunächst eine Korrektur (Zitat aus der Excel-Hilfe):
"Die Anzahl der Spalten von Matrix1 muss mit der Anzahl der Zeilen von Matrix2 übereinstimmen."
(und nicht umgekehrt...)
Zu deiner Frage:
Dass du das möchtest, heißt nicht, dass das sinnvoll geht. "Natürlich" ist das jedenfalls nicht.
Bevor man an irgend eine techn. Umsetzung auch nur denken könnte, müsstest du die Matrizenmultiplikation für Matrizen, die die Bed. nicht erfüllen, erst einmal definieren.
Die Mathematik hilft da erst mal nicht weiter.
(Die Definition der normalen Matrizenmultiplikation findest du auch in der Hilfe zu MMULT.)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Matrizenmultiplikation
11.05.2008 11:56:43
Frank
Hi!
Danke für die Antwort.
Ich verstehe nicht was ich da groß definieren muss. Z.B. möchte ich sowas multiplizieren: 1x3 x 4x1
Das geht ja dann mit MMULT nicht - wie könnte ich denn in dem Fall mit VBA vorgehen? Wüsstest du da vielleicht Bescheid?
Vielen Dank für jeden Versuch - Gruß, Frank

AW: Matrizenmultiplikation
11.05.2008 13:18:01
Erich
Hi Frank,
was sollte deiner Meinung nach bei folgenden Beispielmatrizen als Produkt rauskommen?
 ABCDE
1123 11
2    22
3    33
4    44

Das fängt schon mit der Frage an: Wie groß wäre hier das Matrixprodukt (Zeilen, Spalten)?
Bei diesen kleinen Matrizen kannst du ja mal per Hand das gewünschte Ergebnis ausrechnen.
Ich kann es nicht - weil es nicht definiert ist.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Matrizenmultiplikation
11.05.2008 13:38:04
Nepumuk
Hallo Erich,
doch das geht. Aus deinem Beispiel würde so eine Ergebnismatrix entstehen (das Kommutativgesetz gilt in diesem Fall nicht mehr):
 ABCD
1011223344
1122446688
12336699132

Google mal nach "nichtlineare Algebra Matrizenmultiplikation"
Gruß
Nepumuk
P.S. Mit deinem Find - Problem bin ich auch nicht weiter gekommen.

Anzeige
AW: Matrizenmultiplikation
11.05.2008 19:18:00
Erich
Hi Max,
deine Lösung für dieses Beispiel ist auch "linear" ermittelbar: MTRANS(MMULT(Matr2; Matr1))
Das Beispiel war ungeschickt: (Zeilenzahl1 = Spaltenzahl2)
Das Kommutativgesetz gilt bei der (linearen) Matrizenmultiplikation ohnehin nicht.
Wie würde denn das Produkt diesen beiden Matrizen aussehen?
 ABCDE
1212  11
1334 22
1456 33
15 44

Zum Spielen hier eine Mappe: https://www.herber.de/bbs/user/52292.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Matrizenmultiplikation
11.05.2008 20:23:52
Nepumuk
Hallo Erich,
so:
 ABCD
7336699132
877154231231
9121242363484

Gruß
Nepumuk

Anzeige
AW: Matrizenmultiplikation
11.05.2008 21:00:50
Erich
Hi Nepumuk,
das würde ich (linar) so ausrechnen:
 ABCDEFGHIJ
1112  11 "Produkt" Nepumuk
1234  22 336699132
1356  33 77154231231
14    44 121242363484
15          
16          
173711 11 "Produkt" Formel
18   22 336699132
19   33 77154231308
20 44 121242363484

Formeln der Tabelle
ZelleFormel
A17{=SUMME(Matr7*(ZEILE(Matr7)-10=SPALTE()))}
B17{=SUMME(Matr7*(ZEILE(Matr7)-10=SPALTE()))}
C17{=SUMME(Matr7*(ZEILE(Matr7)-10=SPALTE()))}
G18{=MTRANS(MMULT(Matr6;Matr5))}
H18{=MTRANS(MMULT(Matr6;Matr5))}
I18{=MTRANS(MMULT(Matr6;Matr5))}
J18{=MTRANS(MMULT(Matr6;Matr5))}
G19{=MTRANS(MMULT(Matr6;Matr5))}
H19{=MTRANS(MMULT(Matr6;Matr5))}
I19{=MTRANS(MMULT(Matr6;Matr5))}
J19{=MTRANS(MMULT(Matr6;Matr5))}
G20{=MTRANS(MMULT(Matr6;Matr5))}
H20{=MTRANS(MMULT(Matr6;Matr5))}
I20{=MTRANS(MMULT(Matr6;Matr5))}
J20{=MTRANS(MMULT(Matr6;Matr5))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Matrizenmultiplikation
12.05.2008 09:46:00
Nepumuk
Hallo Erich,
kleiner kopierfehler vom Taschenrechner nach Excel. :-)
Gruß
Nepumuk

AW: Matrizenmultiplikation
12.05.2008 09:54:17
Frank
Hi!
Also danke für die Rückmeldungen - die Multiplikation funktioniert also, allerdings unschön per Hand usw. Vielleicht sollte ich einfach auf eine andere Software umsteigen - also ich habe große Datenmengen für die ich gerne einen automatischen Matrizenmultiplikations Algorithmus bauen möchte. Kann mir jemand vielleicht noch eine Software empfehlen?
Viele Grüße, Frank

AW: Matrizenmultiplikation
12.05.2008 13:15:15
Erich
Hi Max,
ich bin beeindruckt - das nenne ich erfindungsreich!
Was multiplizierst du bei folgenden Matrizen? Zeilensummen mit Spaltensummen? Oder Umgekehrt?
Ich bin gespannt.
 ABCDEFGHIJ
2312 1112131415 "Produkt"
2434 2122232425 ?
2556 3132333435  
26   4142434445  
27   5152535455  
28   6162636465  
29   7172737475  

(Die 2. Matrix ist etwas größer - aber 2, 3, 5 7 sind nun mal die kleinsten Primzahlen über 1...)
Im "Nichtlinearen" habe ich keine Def. für die Matrizenmultiplikation gefunden.
Vielleicht habe ich nur ungeschickt gesucht. Hast du evtl. ein paar Links für mich?
Viel Spaß und noch einen schönen Restpfingst!
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Matrizenmultiplikation
13.05.2008 07:25:00
Erich
Hi Nepumuk,
na ja, der Link führt auf eine Seite, die nicht gerade Begeisterung auslöst.
Ganz oben stehen drei Gleichungen, dann ein Ausdruck (eine Linearkombination, das mit dem Summenzeichen).
Soll der vierte Ausdruck tatsächlich auch eine Gleichung sein?
Der Begriff "Vektor" ist wohl auch nicht so recht klar:
"Ein Vektor ist ein Element eines Vektorraumes, das mit anderen Elementen eines Vektors addiert werden kann."
Was sind die "anderen Elemente" eines Vektors?
Zum Vergleich der Text aus dem Original-Wiki:
"Ein Vektor ist allgemein betrachtet ein Element eines Vektorraums, das heißt ein Objekt,
das mit anderen Vektoren addiert und mit Zahlen, die als Skalare bezeichnet werden,
multipliziert werden kann."
Da hätte die FH Würzburg besser im Wiki abgeschrieben...
Das aber nur nebenbei - denn es sieht doch alles sehr linear aus.
Und in der Linearen Algebra ist die Matrizenmultiplikation eben nur definiert für den Fall,
dass die Spaltenanzahl von Matrix1 muss mit der Zeilenanzahl von Matrix2 übereinstimmt.
Du sprachst von einer Verallgemeinerung, zu finden in der Nichtlinearen Algebra.
Hierzu habe ich nichts gefunden und dich deshalb nach Links gefragt.
Mit der Beispielaufgabe wollte ich dir natürlich bei dieser Wetterlage keine heißen Finger bereiten.
Ich wär auch schon richtig zufrieden mit einer Definition oder auch einer Excelformel,
mit der sich das Beispiel lösen lässt.;-)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: @Frank
14.05.2008 18:10:23
Erich
Hallo Frank,
hast du noch Interesse an einer Excellösung?
Dann wäre es schön, wenn du einmal posten könntest, was als Produkt der beiden Matrizen
in meinem Posting 12.05.2008 13:15:15 herauskommen soll und wie der Rechenweg wäre.
Ich weiß das nicht.
Erst dann kann ich mir Gedanken machen, wie man das mit Excel machen könnte.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige