Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Matrismultiplikation | Arbete med 2D-arrayer
C#-Arrayer

Matrismultiplikation

Svep för att visa menyn

Matris­multiplikation är en grundläggande operation inom matematik och programmering, särskilt vid arbete med tvådimensionella arrayer, även kallade matriser. För att multiplicera två matriser måste vissa regler följas: antalet kolumner i den första matrisen måste vara lika med antalet rader i den andra matrisen. Resultatet av att multiplicera en m x n-matris med en n x p-matris är en ny m x p-matris. Varje element i den resulterande matrisen beräknas genom att ta skalärprodukten av en rad från den första matrisen och en kolumn från den andra matrisen.

MatrixMultiplication.cs

MatrixMultiplication.cs

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
using 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(); } } } }

För att förstå hur matris­multiplikation fungerar, följ dessa steg baserat på koden ovan:

  1. Kontrollera dimensionerna: den första matrisen (matrixA) har 3 kolumner och den andra matrisen (matrixB) har 3 rader, vilket innebär att multiplikation är möjlig;
  2. Skapa en resultatmatris med lika många rader som matrixA och lika många kolumner som matrixB;
  3. Använd tre nästlade loopar:
    • Den yttre loopen itererar över varje rad i den första matrisen;
    • Den mellersta loopen itererar över varje kolumn i den andra matrisen;
    • Den inre loopen beräknar summan av produkterna för aktuell rad och kolumn, multiplicerar motsvarande element och summerar dem;
  4. Tilldela det beräknade värdet till rätt cell i resultatmatrisen;
  5. Skriv ut resultatet i ett läsbart format.
IncompatibleMatrices.cs

IncompatibleMatrices.cs

12345678910111213141516171819202122232425262728293031
using 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. } } }

Detta exempel kontrollerar om två matriser kan multipliceras. Den definierar matrixA (2×2) och matrixB (1×3), och jämför sedan antalet kolumner i den första matrisen med antalet rader i den andra. Eftersom dessa värden inte stämmer överens skriver programmet ut ett inkompatibilitetsmeddelande och avslutar. Det visar hur man validerar matrisdimensioner innan multiplikation utförs.

Note
Definition

Matris­multiplikation är processen att kombinera två matriser för att skapa en ny matris genom att multiplicera raderna i den första matrisen med kolumnerna i den andra matrisen och summera produkterna.

1. Vilka krav finns för att multiplicera två matriser?

2. Hur många nästlade loopar behövs vanligtvis för matris­multiplikation?

3. Vad händer om matriserna har inkompatibla storlekar?

question mark

Vilka krav finns för att multiplicera två matriser?

Vänligen välj det korrekta svaret

question mark

Hur många nästlade loopar behövs vanligtvis för matris­multiplikation?

Vänligen välj det korrekta svaret

question mark

Vad händer om matriserna har inkompatibla storlekar?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 5

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 4. Kapitel 5
some-alt