Matrixmultiplikation
Stryg for at vise menuen
Matrixmultiplikation er en grundlæggende operation inden for matematik og programmering, især når der arbejdes med 2D-arrays, også kaldet matricer. For at multiplicere to matricer skal du følge specifikke regler: Antallet af kolonner i den første matrix skal være lig med antallet af rækker i den anden matrix. Resultatet af at multiplicere en m x n matrix med en n x p matrix er en ny m x p matrix. Hvert element i den resulterende matrix beregnes ved at tage prikproduktet af en række fra den første matrix og en kolonne fra den anden matrix.
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(); } } } }
For at forstå, hvordan matrixmultiplikation fungerer, følg disse trin baseret på koden ovenfor:
- Kontroller dimensionerne: den første matrix (
matrixA) har 3 kolonner, og den anden matrix (matrixB) har 3 rækker, hvilket betyder, at multiplikation er mulig; - Opret en resultatmatrix med lige så mange rækker som
matrixAog lige så mange kolonner sommatrixB; - Brug tre indlejrede løkker:
- Den yderste løkke itererer over hver række i den første matrix;
- Den midterste løkke itererer over hver kolonne i den anden matrix;
- Den inderste løkke beregner summen af produkter for den aktuelle række og kolonne ved at multiplicere de tilsvarende elementer og lægge dem sammen;
- Tildel den beregnede værdi til den relevante celle i resultatmatricen;
- Udskriv resultatet i et læsbart 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. } } }
Dette eksempel kontrollerer, om to matricer kan multipliceres. Den definerer matrixA (2×2) og matrixB (1×3), og sammenligner derefter antallet af kolonner i den første matrix med antallet af rækker i den anden. Da disse værdier ikke stemmer overens, udskriver programmet en inkompatibilitetsmeddelelse og stopper. Det demonstrerer, hvordan man validerer matrixdimensioner, før multiplikation udføres.
Matrixmultiplikation er processen, hvor to matricer kombineres for at danne en ny matrix ved at multiplicere rækkerne i den første matrix med kolonnerne i den anden matrix og summere produkterne.
1. Hvad er kravene for at multiplicere to matricer?
2. Hvor mange indlejrede løkker er typisk nødvendige for matrixmultiplikation?
3. Hvad sker der, hvis matricerne har inkompatible størrelser?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat