Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C ตรวจสอบว่า Matrix นั้นเอียงสมมาตรหรือไม่?


Square Matrix A กล่าวว่าสมมาตรแบบเบ้ถ้า aij=−aji สำหรับ i และ j ทั้งหมด กล่าวอีกนัยหนึ่ง เราสามารถพูดได้ว่าเมทริกซ์ A นั้นมีการกล่าวกันว่าสมมาตรแบบเบ้ ถ้าการเปลี่ยนทรานสโพสของเมทริกซ์ A เท่ากับลบของเมทริกซ์ A นั่นคือ (A T =−A)

โปรดทราบว่าองค์ประกอบหลักในแนวทแยงทั้งหมดในเมทริกซ์สมมาตรแบบเบ้นั้นเป็นศูนย์

มาดูตัวอย่างเมทริกซ์กัน

A= |0 -5 4|
   |5 0 -1|
   |-4 1 0|

เป็นเมทริกซ์สมมาตรแบบเบ้เพราะ aij=−aji สำหรับ i และ j ทั้งหมด ตัวอย่าง a12 =-5 และ a21=5 ซึ่งหมายถึง a12=−a21 ในทำนองเดียวกัน เงื่อนไขนี้ถือเป็นจริงสำหรับค่าอื่นๆ ทั้งหมดของ i และ j

เรายังสามารถตรวจสอบได้ว่าทรานสโพสของเมทริกซ์ A เท่ากับลบของเมทริกซ์ A นั่นคือ A T =−ก.

AT= |0 5 -4|
    |-5 0 1|
    |4 -1 0|
and
A= |0 -5 4|
   |5 0 -1|
   |-4 1 0|

เราจะเห็นได้ชัดเจนว่า AT=−A ซึ่งทำให้ A เมทริกซ์สมมาตรแบบเบ้

Input:
Enter the number of rows and columns: 2 2
Enter the matrix elements: 10 20 20 10
Output:
The matrix is symmetric.
10 20
20 10

คำอธิบาย

หากเมทริกซ์เท่ากับทรานสโพส มันจะเป็นเมทริกซ์สมมาตร

มิฉะนั้น ถ้ามันทรานสโพสเท่ากับลบของตัวเอง เมทริกซ์จะสมมาตรแบบเบ้ อย่างอื่นก็ไม่ได้ ผลลัพธ์จะถูกพิมพ์ตามนั้น

ขั้นตอนการตรวจสอบสมมาตรของเมทริกซ์

  • ผู้ใช้จะถูกขอให้ป้อนจำนวนแถวและคอลัมน์ของเมทริกซ์

  • องค์ประกอบของเมทริกซ์ถูกขอให้ป้อนและจัดเก็บใน 'A' ตัวแปร 'x' และ 'y' เริ่มต้นเป็น 0

  • หากเมทริกซ์ไม่เท่ากับทรานสโพส ตัวแปรชั่วคราว 'x' จะได้รับ 1

  • มิฉะนั้น ถ้าค่าลบของเมทริกซ์เท่ากับทรานสโพส ตัวแปรชั่วคราว 'y' ถูกกำหนด 1

  • ถ้า x เท่ากับ 0 เมทริกซ์จะสมมาตร มิฉะนั้น ถ้า y เท่ากับ 1 เมทริกซ์จะสมมาตรแบบเบ้

  • หากไม่เป็นไปตามเงื่อนไข เมทริกซ์จะไม่สมมาตรหรือไม่สมมาตรเอียง

  • ผลลัพธ์จะถูกพิมพ์ออกมา

ตัวอย่าง

#include<iostream>
using namespace std;
int main () {
   int A[10][10], i, j, m, n, x = 0, y = 0;
   cout << "Enter the number of rows and columns : ";
   cin >> m >> n;
   cout << "Enter the matrix elements : ";
   for (i = 0; i < m; i++)
      for (j = 0; j < n; j++)
   cin >> A[i][j];
   for (i = 0; i < m; i++) {
      for( j = 0; j < n; j++) {
         if (A[i][j] != A[j][i])
            x = 1;
         else if (A[i][j] == -A[j][i])
            y = 1;
      }
   }
   if (x == 0)
      cout << "The matrix is symmetric.\n ";
   else if (y == 1)
      cout << "The matrix is skew symmetric.\n ";
   else
      cout << "It is neither symmetric nor skew-symmetric.\n ";
   for (i = 0; i < m; i++) {
      for (j = 0; j < n; j++)
         cout << A[i][j] << " ";
      cout << "\n ";
   }
   return 0;
}