一个n阶对称矩阵a,其上三角各元素按行序存放于一维数组B中,请给出B[k]和A[i][j]的关系
时间: 2023-06-02 10:05:39 浏览: 175
B[k] 对应 A[i][j],其中 i 和 j 的关系为:
i = n - 2 - sqrt(-8*k + 4*n*(n-1) + 1) / 2
j = k + i + 1 - n*(n-1)/2 + (n-i)*((n-i)-1)/2
其中,i 和 j 都从 0 开始编号。
相关问题
一个n阶对称矩阵a,其上三角各元素按行序存放于一维数组B中,请给出B[k]和A[i][j]的关系(k的下标从1开始)
B[k]所表示的元素为A[i][j],其中i和j分别为下标计算公式如下:
i = (sqrt(8*k - 7) - 1) / 2 + 1
j = k - i*(i-1)/2
因此,B[k]与A[i][j]的关系为:B[k] = A[i][j]
一n阶对称矩阵A以行序为主序压缩存储在一维数组B中,存储其下三角元素(包括对角线),计算 A[i][j]与B[k]之间的对应关系。
对于一个$n$阶对称矩阵$A$,其下三角元素(包括对角线)共有$\frac{n(n+1)}{2}$个。我们可以将这些元素按照行序为主序压缩存储到一维数组$B$中,存储顺序为:
$B[1], B[2], ..., B[n], B[n+1], B[n+2], ..., B[2n-1], ..., B[\frac{n(n+1)}{2}]$
其中,$B[i]$表示矩阵$A$中第$i$个下三角元素的值。
那么,对于矩阵$A$中的元素$A[i][j]$,其中$i \le j$,它在一维数组$B$中的位置$k$可以通过以下公式计算得到:
$k = \frac{(i-1)i}{2} + j$
同样地,对于矩阵$A$中的元素$A[j][i]$,其中$i \le j$,它对应的位置$k$也可以用上面的公式计算得到,即:
$k = \frac{(j-1)j}{2} + i$
需要注意的是,由于数组下标从1开始,因此在实际编程过程中,公式中的$i$和$j$需要减去1。