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
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(); } } } }
Matriisikertolaskun toiminnan ymmärtämiseksi seuraa näitä vaiheita yllä olevan koodin perusteella:
- Tarkista mitat: ensimmäisellä matriisilla (
matrixA) on 3 saraketta ja toisella matriisilla (matrixB) on 3 riviä, joten kertolasku on mahdollinen; - Luo tulosmatriisi, jossa on yhtä monta riviä kuin
matrixA:ssa ja yhtä monta saraketta kuinmatrixB:ssä; - 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;
- Aseta laskettu arvo oikeaan kohtaan tulosmatriisissa;
- Tulosta tulos luettavassa muodossa.
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. } } }
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.
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?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme