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; }
廣告