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;
}
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP