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