Matrixmultiplikation
Swipe um das Menü anzuzeigen
Matrixmultiplikation ist eine grundlegende Operation in Mathematik und Programmierung, insbesondere beim Arbeiten mit 2D-Arrays, die auch Matrizen genannt werden. Um zwei Matrizen zu multiplizieren, müssen bestimmte Regeln beachtet werden: Die Anzahl der Spalten der ersten Matrix muss gleich der Anzahl der Zeilen der zweiten Matrix sein. Das Ergebnis der Multiplikation einer m x n-Matrix mit einer n x p-Matrix ist eine neue m x p-Matrix. Jedes Element der resultierenden Matrix wird berechnet, indem das Skalarprodukt einer Zeile der ersten Matrix mit einer Spalte der zweiten Matrix gebildet wird.
MatrixMultiplication.cs
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758using System; namespace ConsoleApp { public class MatrixMultiplication { public static void Main(string[] args) { int[,] matrixA = { {1, 2, 3}, {4, 5, 6} }; int[,] matrixB = { {7, 8}, {9, 10}, {11, 12} }; int rowsA = matrixA.GetLength(0); int colsA = matrixA.GetLength(1); int rowsB = matrixB.GetLength(0); int colsB = matrixB.GetLength(1); if (colsA != rowsB) { Console.WriteLine("Cannot multiply: incompatible matrix sizes."); return; } int[,] result = new int[rowsA, colsB]; for (int i = 0; i < rowsA; i++) { for (int j = 0; j < colsB; j++) { int sum = 0; for (int k = 0; k < colsA; k++) { sum += matrixA[i, k] * matrixB[k, j]; } result[i, j] = sum; } } Console.WriteLine("Result of matrix multiplication:"); for (int i = 0; i < rowsA; i++) { for (int j = 0; j < colsB; j++) { Console.Write(result[i, j] + " "); } Console.WriteLine(); } } } }
Um zu verstehen, wie die Matrixmultiplikation funktioniert, folgen Sie diesen Schritten basierend auf dem obigen Code:
- Überprüfen der Dimensionen: Die erste Matrix (
matrixA) hat 3 Spalten und die zweite Matrix (matrixB) hat 3 Zeilen, daher ist die Multiplikation möglich; - Erstellen einer Ergebnis-Matrix mit so vielen Zeilen wie
matrixAund so vielen Spalten wiematrixB; - Verwenden von drei verschachtelten Schleifen:
- Die äußere Schleife iteriert über jede Zeile der ersten Matrix;
- Die mittlere Schleife iteriert über jede Spalte der zweiten Matrix;
- Die innere Schleife berechnet die Summe der Produkte für die aktuelle Zeile und Spalte, indem entsprechende Elemente multipliziert und aufsummiert werden;
- Zuweisen des berechneten Werts zur entsprechenden Zelle in der Ergebnis-Matrix;
- Ausgabe des Ergebnisses in einem lesbaren Format.
IncompatibleMatrices.cs
12345678910111213141516171819202122232425262728293031using System; namespace ConsoleApp { public class IncompatibleMatrices { public static void Main(string[] args) { int[,] matrixA = { {1, 2}, {3, 4} }; int[,] matrixB = { {5, 6, 7} }; int colsA = matrixA.GetLength(1); int rowsB = matrixB.GetLength(0); if (colsA != rowsB) { Console.WriteLine("Cannot multiply: the number of columns in the first matrix does not match the number of rows in the second matrix."); return; } // This code will not be reached because the matrices are incompatible. } } }
Dieses Beispiel prüft, ob zwei Matrizen miteinander multipliziert werden können. Es definiert matrixA (2×2) und matrixB (1×3) und vergleicht dann die Anzahl der Spalten der ersten Matrix mit der Anzahl der Zeilen der zweiten. Da diese Werte nicht übereinstimmen, gibt das Programm eine Inkompatibilitätsmeldung aus und beendet sich. Es zeigt, wie die Dimensionen von Matrizen vor der Multiplikation überprüft werden können.
Matrixmultiplikation ist der Vorgang, bei dem zwei Matrizen kombiniert werden, um eine neue Matrix zu erzeugen, indem die Zeilen der ersten Matrix mit den Spalten der zweiten Matrix multipliziert und die Produkte aufsummiert werden.
1. Welche Voraussetzungen müssen für die Multiplikation zweier Matrizen erfüllt sein?
2. Wie viele verschachtelte Schleifen werden typischerweise für die Matrixmultiplikation benötigt?
3. Was passiert, wenn die Matrizen inkompatible Größen haben?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen