Computer >> Máy Tính >  >> Lập trình >> C#

Chương trình C # để nhân hai ma trận

Chương trình nhân ma trận được sử dụng để nhân hai ma trận. Quy trình này chỉ có thể thực hiện được nếu số cột trong ma trận đầu tiên bằng số hàng trong ma trận thứ hai.

Một chương trình chứng minh phép nhân ma trận trong C # được đưa ra như sau -

Ví dụ

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("Matrix a:");
         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 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("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();
            }
         }
      }
   }
}

Đầu ra

Đầu ra của chương trình trên được đưa ra như sau.

Matrix a:
1 4 2
2 5 1
Matrix b:
3 4 2
3 5 7
1 2 1
The product of the two matrices is :
172832
223540

Bây giờ chúng ta hãy hiểu chương trình trên.

Đầu tiên, hai ma trận a và b được hiển thị. Đoạn mã cho điều này được đưa ra như sau.

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

Nếu số cột trong ma trận đầu tiên không bằng số hàng trong ma trận thứ hai thì ma trận không thể được nhân và điều này được hiển thị. Đoạn mã cho điều này được đưa ra như sau.

if(n! = p) {
   Console.WriteLine("Matrix multiplication not possible");
}

Nếu không, một vòng lặp for lồng nhau được sử dụng để lấy tích các ma trận a và b tức là ma trận c. Khi đó ma trận c được hiển thị. Đoạn mã cho điều này được đưa ra như sau -

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