Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 行列の乗算 | 2次元配列の操作
C# 配列

行列の乗算

メニューを表示するにはスワイプしてください

行列の乗算は、数学およびプログラミングにおける基本的な操作であり、特に2次元配列(行列)を扱う際に重要です。2つの行列を掛けるには、特定のルールに従う必要があります。最初の行列の列数が、2番目の行列の行数と等しい必要があります。m x n 行列と n x p 行列を掛けると、結果は新しい m x p 行列になります。結果行列の各要素は、最初の行列の行と2番目の行列の列のドット積(内積)を計算して求めます。

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

行列の乗算がどのように機能するかを理解するために、上記のコードに基づいて次の手順を確認します。

  1. 次元の確認:最初の行列(matrixA)は3列、2番目の行列(matrixB)は3行であり、乗算が可能です。
  2. matrixAの行数とmatrixBの列数を持つ結果行列を作成します。
  3. 3重のネストされたループを使用します。
    • 外側のループは最初の行列の各行を反復します。
    • 中間のループは2番目の行列の各列を反復します。
    • 内側のループは現在の行と列に対して、対応する要素を掛けて合計し、積の和を計算します。
  4. 計算した値を結果行列の該当セルに代入します。
  5. 結果を読みやすい形式で出力します。
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. } } }

この例では、2つの行列が乗算可能かどうかを確認します。matrixA(2×2)とmatrixB(1×3)を定義し、最初の行列の列数と2番目の行列の行数を比較します。これらの値が一致しないため、プログラムは非互換性のメッセージを表示して終了します。乗算を行う前に行列の次元を検証する方法を示しています。

Note
定義

行列の乗算は、2つの行列を組み合わせて、新しい行列を生成する処理。最初の行列の行と2番目の行列の列を掛け合わせ、その積の合計を求める。

1. 2つの行列を掛け算するための要件は何ですか?

2. 行列の掛け算には通常、いくつのネストされたループが必要ですか?

3. 行列のサイズが互換性がない場合はどうなりますか?

question mark

2つの行列を掛け算するための要件は何ですか?

正しい答えを選んでください

question mark

行列の掛け算には通常、いくつのネストされたループが必要ですか?

正しい答えを選んでください

question mark

行列のサイズが互換性がない場合はどうなりますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  5

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  5
some-alt