C# 程序用于将两个矩阵相乘

csharpprogrammingserver side programming

矩阵乘法程序用于将两个矩阵相乘。只有当第一个矩阵的列数等于第二个矩阵的行数时,此过程才有可能。

下面给出了一个用 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("Matrix 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 impossible");
}

否则,使用嵌套的 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("The product of the two matrices is :");
for (i = 0; i < m; i++) {
   for (j = 0; j < n; j++) {
      Console.Write(c[i, j] + "\t");
   }
   Console.WriteLine();
}

相关文章