C#程序将两个矩阵相乘
矩阵乘法程序用于将两个矩阵相乘。仅当第一个矩阵中的列数等于第二个矩阵中的行数时,才可以执行此过程。
演示C#中矩阵乘法的程序如下所示-
示例
using System; namespace MatrixMultiplicationDemo { class Example { static void Main(string[] args) { int m = 2, n = 3, p = 3, q = 3, i, j; int[,] a = {{1, 4, 2}, {2, 5, 1}}; int[,] b = {{3, 4, 2}, {3, 5, 7}, {1, 2, 1}}; Console.WriteLine("矩阵A:"); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { Console.Write(a[i, j] + " "); } Console.WriteLine(); } Console.WriteLine("矩阵b:"); for (i = 0; i < p; i++) { for (j = 0; j < q; j++) { Console.Write(b[i, j] + " "); } Console.WriteLine(); } if(n! = p) { Console.WriteLine("Matrix multiplication not possible"); } else { int[,] c = new int[m, q]; for (i = 0; i < m; i++) { for (j = 0; j < q; j++) { c[i, j] = 0; for (int k = 0; k < n; k++) { c[i, j] += a[i, k] * b[k, j]; } } } Console.WriteLine("这两个矩阵的乘积为:"); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { Console.Write(c[i, j] + "\t"); } Console.WriteLine(); } } } } }
输出结果
上面程序的输出如下。
矩阵A: 1 4 2 2 5 1 矩阵b: 3 4 2 3 5 7 1 2 1 这两个矩阵的乘积为: 172832 223540
现在让我们了解上面的程序。
首先,显示两个矩阵a和b。给出的代码片段如下。
for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { Console.Write(a[i, j] + " "); } Console.WriteLine(); } Console.WriteLine("矩阵b:"); for (i = 0; i < p; i++) { for (j = 0; j < q; j++) { Console.Write(b[i, j] + " "); } Console.WriteLine(); }
如果第一个矩阵中的列数不等于第二个矩阵中的行数,则矩阵不能相乘并显示出来。给出的代码片段如下。
if(n! = p) { Console.WriteLine("Matrix multiplication not possible"); }
否则,使用嵌套的for循环获取矩阵a和b的乘积,即矩阵c。然后显示矩阵c。为此的代码段如下所示-
for (i = 0; i < m; i++) { for (j = 0; j < q; j++) { c[i, j] = 0; for (int k = 0; k < n; k++) { c[i, j] += a[i, k] * b[k, j]; } } } Console.WriteLine("这两个矩阵的乘积为:"); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { Console.Write(c[i, j] + "\t"); } Console.WriteLine(); }