C語言程式:判斷矩陣是否為反對稱矩陣?


如果方陣A滿足對於所有i和j,都有aij=−aji,則稱A為反對稱矩陣。換句話說,如果矩陣A的轉置等於矩陣A的負值,即(AT=−A),則稱矩陣A為反對稱矩陣。

請注意,反對稱矩陣的所有主對角線元素都為零。

讓我們以一個矩陣為例

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

這是一個反對稱矩陣,因為對於所有i和j,都有aij=−aji。例如,a12 = -5 且 a21=5,這意味著 a12=−a21。類似地,此條件對i和j的所有其他值都成立。

我們還可以驗證矩陣A的轉置等於矩陣A的負值,即 AT=−A。

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.
";    else if (y == 1)       cout << "The matrix is skew symmetric.
";    else       cout << "It is neither symmetric nor skew-symmetric.
";    for (i = 0; i < m; i++) {       for (j = 0; j < n; j++)          cout << A[i][j] << " ";       cout << "
";    }    return 0; }

更新於: 2019年8月20日

3K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告