C 语言对称矩阵

17 Mar 2025 | 4 分钟阅读

引言

当一个方阵的转置等于其本身时,它就被认为是对称的。用户可以通过行与列列与行的转换来生成一个对称矩阵。任何给定的矩阵 A 都可以用 AT 来表示其转置矩阵。因此,A = AT 的条件由对称矩阵 A 满足。

转置矩阵

通过在矩阵中交换行和列,您可以确定其转置。字母“T”用于表示矩阵的转置

示例 1:

如果给定的矩阵是 C语言中的对称矩阵 & 矩阵的转置是 C语言中的对称矩阵

它是一个对称矩阵,因为 A = AT

示例:2

如果给定的矩阵是 C语言中的对称矩阵 & 矩阵的转置是 C语言中的对称矩阵

它是一个对称矩阵,因为 A ≠ AT

场景描述

让我们创建一个 C 程序来确定给定的矩阵是否为对称矩阵。

决议

  1. 指示矩阵中有多少
  2. 如果行数和列数不相等,则打印一个非对称矩阵
  3. 否则,输入矩阵 A 的元素。
  4. 找到矩阵的转置并将结果存储在另一个数组 B 中。
  5. 验证A 及其转置 B 是否等价。
  6. 如果A = B,则为对称;否则,不是。

源代码

下面是用于确定矩阵是否为对称的 C 程序源代码。在 Linux 系统上,该 C 程序已成功编译并执行。下面还提供了程序的输出。

输出

Please Enter Number of rows and columns:  3 3
Enter the Matrix Elements
1 4 5
4 3 2
5 2 1
The provided matrix is symmetric.

程序说明

  1. 请求用户输入矩阵的列数和行数,并分别存储在变量ij中。
  2. 整数变量 count 设置为0
  3. 如果i不等于j,则将其打印为非对称矩阵并结束程序。
  4. 否则,初始化两个二维数组/矩阵,a[i][j]b[i][j],大小分别为 i 和 j。
  5. 请求用户输入矩阵 a 的元素。
  6. 使用两个for 循环计算矩阵的转置并将结果存储在矩阵 b 中。在循环的每次迭代中,使用 b[col][row] = a[row][col] 来计算矩阵 a 的转置。
  7. 在执行转置后,确定矩阵 A 是否等于矩阵 B
  8. 为了检查,运行两个从row = 0i和从col = 0i的循环,并在每次迭代后,确定b[row][col]a[row][col]是否相等。如果不相等,则将 count 值加1并结束循环。
  9. 验证 count 值是否等于 0。如果等于0,则打印对称矩阵。否则,打印非对称矩阵。

案例研究

为了确定矩阵是否对称,在此实例中,我们输入“3”作为行数,并输入“3”作为列数。

请输入行数和列数:3 3

请输入矩阵元素

1 4 5

4 3 2

5 2 1

提供的矩阵是对称的。

时间复杂度 O(n2)

由于 for 循环运行了n2次,因此上述用于确定矩阵是否对称的程序的时间复杂度为 O(n2)

空间复杂度 O(n2)

因为已经初始化了n 阶的二维数组来保存它们的值,所以上面程序中二维数组的空间复杂度为 O(n2)