一n阶对称矩阵A以行为主序压缩存储在一个一维数组B中,存储其下三角元素(包括对角线),计算A[i,j]与B[k]之间的对应关系}
时间: 2024-05-22 15:16:54 浏览: 166
由于A是对称矩阵,所以A[i,j] = A[j,i]。当i ≤ j时,A[i,j]在B中的下标为k = i × (n-1) + (i-1) × (i-2) / 2 + j - i。当i > j时,A[i,j]在B中的下标为k = j × (n-1) + (j-1) × (j-2) / 2 + i - j。
相关问题
一n阶对称矩阵A以行为主序压缩存储在一个一维数组B
中,其中B[0]到B[n-1]存储A的第一行到第n行的主对角线元素,B[n]到B[2*n-2]存储A的第二行到第n-1行的次对角线元素,B[2*n-1]到B[3*n-3]存储A的第一行到第n-2行的次对角线元素,以此类推,直到B[(n-1)*n/2]到B[n*(n+1)/2-1]存储A的最后一行的次对角线元素。
对于第i行第j列的元素A[i][j],如果i<=j,则A[i][j]存储在B[j*(j+1)/2+i]中;否则,A[i][j]存储在B[i*(i+1)/2+j]中。
例如,对于一个3阶对称矩阵A,其行为主序压缩存储在一维数组B中的元素分别为:
B[0]:A[0][0]
B[1]:A[0][1]
B[2]:A[1][1]
B[3]:A[0][2]
B[4]:A[1][2]
B[5]:A[2][2]
对于第2行第1列的元素A[1][0],由于1>0,因此存储在B[1*(1+1)/2+0]=1的位置上。
对于第1行第2列的元素A[0][1],由于0<=1,因此存储在B[1*(1+1)/2+0]=1的位置上。
一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。
阅读全文