把一个上三角矩阵变换成一个满矩阵

Transform an upper triangular matrix into a full matrix C++

本文关键字:一个 变换 满矩阵 三角      更新时间:2023-10-16

如何将上三角矩阵转换为满矩阵的代码?这个矩阵是一个向量,而不是一个二维数组…

那么数组

[ 1 2 3 4
  0 5 6 7
  0 0 8 9
  0 0 0 10 ]

将变成像

这样的数组:
[ 1 2 3 4
  2 5 6 7
  3 6 8 9
  4 7 9 10 ]

你能提供一些想法吗,我在考虑应用一种模块之类的东西…

有一个限制,我不使用二维数组我用的是矢量,所以是一维数组

首先,您必须了解反射矩阵的基本性质。对于任意i, j,以下断言为真:

m[i][j] ≡ m[j][i]

需要一些算法来实现。我可以建议:

for(int i = 0; i < HEIGHT; ++i)
  for(int j = 0; j < i; ++j)
    m[i][j] = m[j][i];

注意第二个循环的条件。通过确保j总是小于i,我们将活动限制在左下角的三角形。

接下来,您必须了解如何在一维数组中实现二维矩阵。看来你已经建立了身份:

m[i][j] ≡ v[i*WIDTH+j]

替换,我们有:

for(int i = 0; i < HEIGHT; ++i)
  for(int j = 0; j < i; ++j)
    v[i*WIDTH+j] = v[j*WIDTH+i];