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

โปรแกรม C ตรวจสอบว่าเมทริกซ์เป็น Skew Symmetric หรือไม่


เมทริกซ์สี่เหลี่ยมจัตุรัส A ถูกกล่าวว่าเป็น skew-symmetric ถ้า aij = -aji สำหรับทุก i และ j กล่าวอีกนัยหนึ่ง เมทริกซ์ A เป็น skew-symmetric ถ้า transpose ของ A เท่ากับลบของ A คือ (A^T = -A)

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

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

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

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

ยังตรวจสอบได้ว่า Transpose ของเมทริกซ์ A เท่ากับลบของเมทริกซ์ A คือ A^T = -A

A^T= |0 5 -4|   |-5 0 1|   |4 -1 0| และ A= |0 -5 4| |5 0 -1| |-4 1 0|

เห็นชัดว่า AT = -A ทำให้ A เป็นเมทริกซ์ skew-symmetric

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

คำอธิบาย

ถ้าเมทริกซ์เท่ากับ transpose ของมัน มันคือเมทริกซ์ symmetric

ถ้า transpose เท่ากับลบของมัน เมทริกซ์คือ skew-symmetric มิฉะนั้นไม่ใช่ทั้งสองอย่าง ผลลัพธ์พิมพ์ตามนั้น

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

  • ผู้ใช้ป้อนจำนวนแถวและคอลัมน์ของเมทริกซ์
  • ป้อนองค์ประกอบของเมทริกซ์และเก็บใน 'A' ตัวแปร 'x' และ 'y' เริ่มต้นเป็น 0
  • ถ้าเมทริกซ์ไม่เท่ากับ transpose ตัวแปรชั่วคราว 'x' กำหนดเป็น 1
  • ถ้าลบของเมทริกซ์เท่ากับ transpose ตัวแปรชั่วคราว 'y' กำหนดเป็น 1
  • ถ้า x เท่ากับ 0 เมทริกซ์เป็น symmetric ถ้า y เท่ากับ 1 เมทริกซ์เป็น skew-symmetric
  • ถ้าไม่ใช่เงื่อนไขไหนเลย เมทริกซ์ไม่ใช่ symmetric หรือ skew-symmetric
  • พิมพ์ผลลัพธ์

ตัวอย่างโค้ด C++

#include
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;
}