Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Matriisien Kertolasku | Työskentely 2D-taulukoiden Kanssa
C#-Taulukot

Matriisien Kertolasku

Pyyhkäise näyttääksesi valikon

Matriisikertolasku on keskeinen operaatio matematiikassa ja ohjelmoinnissa, erityisesti työskenneltäessä kaksiulotteisten taulukoiden eli matriisien kanssa. Kahden matriisin kertomiseksi on noudatettava tiettyjä sääntöjä: ensimmäisen matriisin sarakkeiden määrän on oltava yhtä suuri kuin toisen matriisin rivien määrä. m x n-matriisin ja n x p-matriisin kertolaskun tuloksena syntyy uusi m x p-matriisi. Jokainen tulosmatriisin alkio lasketaan ottamalla ensimmäisen matriisin rivin ja toisen matriisin sarakkeen pistetulo.

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

Matriisikertolaskun toiminnan ymmärtämiseksi seuraa näitä vaiheita yllä olevan koodin perusteella:

  1. Tarkista mitat: ensimmäisellä matriisilla (matrixA) on 3 saraketta ja toisella matriisilla (matrixB) on 3 riviä, joten kertolasku on mahdollinen;
  2. Luo tulosmatriisi, jossa on yhtä monta riviä kuin matrixA:ssa ja yhtä monta saraketta kuin matrixB:ssä;
  3. Käytä kolmea sisäkkäistä silmukkaa:
    • Ulompi silmukka käy läpi jokaisen ensimmäisen matriisin rivin;
    • Keskimmäinen silmukka käy läpi jokaisen toisen matriisin sarakkeen;
    • Sisempi silmukka laskee nykyisen rivin ja sarakkeen tulojen summan kertomalla vastaavat alkiot ja summaamalla ne;
  4. Aseta laskettu arvo oikeaan kohtaan tulosmatriisissa;
  5. Tulosta tulos luettavassa muodossa.
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. } } }

Tässä esimerkissä tarkistetaan, voidaanko kaksi matriisia kertoa keskenään. Määritellään matrixA (2×2) ja matrixB (1×3), minkä jälkeen verrataan ensimmäisen matriisin sarakkeiden määrää toisen matriisin rivien määrään. Koska nämä arvot eivät täsmää, ohjelma tulostaa yhteensopimattomuusviestin ja lopettaa suorituksen. Esimerkki havainnollistaa, miten matriisien mitat tarkistetaan ennen kertolaskua.

Note
Määritelmä

Matriisikertolasku tarkoittaa kahden matriisin yhdistämistä uudeksi matriisiksi kertomalla ensimmäisen matriisin rivit toisen matriisin sarakkeilla ja summaamalla tulot.

1. Mitkä ovat vaatimukset kahden matriisin kertomiselle?

2. Kuinka monta sisäkkäistä silmukkaa matriisikertolaskussa tyypillisesti tarvitaan?

3. Mitä tapahtuu, jos matriisien koot eivät ole yhteensopivia?

question mark

Mitkä ovat vaatimukset kahden matriisin kertomiselle?

Valitse oikea vastaus

question mark

Kuinka monta sisäkkäistä silmukkaa matriisikertolaskussa tyypillisesti tarvitaan?

Valitse oikea vastaus

question mark

Mitä tapahtuu, jos matriisien koot eivät ole yhteensopivia?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 4. Luku 5
some-alt