1. 数据结构对称矩阵的压缩存储求数据地址
对对称阵进行压缩存取是将对称元素只存一个,并将数据存储在一维数组中
首先来确定a[i][j]在b[k]中的i,j与k的关系
首先是判定i与j的关系, 如果是下三角存储,则分一下两种情况
1、如果i<j, 则交换i与j的值,将上三角的位置值变换到下三角位置
2、如果i>=j,则不用执行操作直接走下面的流程
此时,i表示行坐标,j表示了坐标i之前有i行,即有1+2+...+i = (i+1)*i/2,在i标识的第i+1行有j+1个元素,由此可以确定k的值为(i+1)*i/2+j+1 = k+1 由此可得k = (i+1)*i/2+j
由此可以的,a[3][6], i=3, j=6, 由于i<j, 交换得i=6, j=3
由此 k = (6+1)*6/2+3 = 24
又由于&b[0] = 1000 每个元素占两个字节, 则b[24] = 1000+2*24 = 1048
由此便得到a[3][6]的地址为1048
2. 设有10阶对称矩阵a,采用压缩存储方式(以行序为主序存储,则a11的地址为1),则a85的地址为。
首先,压缩存储对于对称矩阵来说,等于是存对角线的右上半加对角线的元素,或者是左下半加对角线的元素,其他位置不存储。
这题是使用行优先存储,即先存a11,再a12,再a22,再a13,再a23,再a33,以此类推,一直到a85,所以a85的位置计算为:(1+2+3+4+5+6+7)+5=33,选择答案B。
对称矩阵(Symmetric Matrices)是指元素以主对角线为对称轴对应相等的矩阵。在线性代数中,对称矩阵是一个方形矩阵,其转置矩阵和自身相等。
(2)对称矩阵行存储地址扩展阅读
LAPACK是由美国国家科学基金等资助开发的着名公开软件。LAPACK包含了求解科学与工程计算中最常见的数值线性代数问题,如求解线性方程组、线性最小二乘问题、特征值问题和奇异值问题等。
LAPACK提供了丰富的工具函式,可用于诸如解多元线性方程式、线性系统方程组的最小平方解、计算特征向量、用于计算矩阵QR分解的Householder转换、以及奇异值分解等问题。 在NetLib亦提供了API经简化的Fortran 95版本的LAPACK95。LAPACK以BSD授权的方法释出。
3. 对于n阶对称矩阵A,请写出计算任一矩阵元素的压缩存储地址
算i<=j的情形
aij先算如果不压缩的地址(i-1)n+j,再算压缩后,压缩后相当于少了一个下三角矩阵,大小是1+2+。。。+j-1=(j-1)j/2;所以地址是(i-1)n-(j-3)j/2;
i>j的情形转换为i<j的地址,也就是算aji。
4. 设有一个 10 阶的对称矩阵 a 采用压缩存储,a[0][0]为第一个元素,其存储地址为
d + 8(8 + 1)/2 + 5 = d + d+41
5. 数据结构,根据对称矩阵,求某位置的地址
碰到这种,别去管什么0不0的,先弄清楚他的方式,下三角:
XOOOOOOOOO
XXOOOOOOOO
XXXOOOOOOO
XXXXOOOOOO
XXXXXOOOOO
XXXXXXOOOO
XXXXXXXOOO
XXXXXXXXOO
XXXXXXXXXO
XXXXXXXXXX
既然是从a[0][0]开始,a[7][5]是第8行第6个,一共多少个X?
前7行:1+2+3+4+5+6+7 = 28
第8行:6
28+6=34
6. 数据结构题 设有10阶对称矩阵a,采用压缩存储方式(以行序为主序存储,则a11的地址为1),则a8
1+2+3+4+5+6+7+5=33
7. 设有一个10阶的对称矩阵A,采用行优先压缩存储方式,a11为第一个元素,其存储地址为1,每个元素占一个字节
1+( 8*(8-1)/2+5-1 ) = 33,因为从1开始数的,故公式为k = i(i-1)/2+j-1
8. 一个10阶对称矩阵A,采用行优先顺序压缩存储下三角和有个10阶矩阵A,采用行序优先存储问题
如果基质中,大部分元素和无信息的,称此矩阵是?稀疏矩阵(稀疏矩阵),由于
节目经常在一个二维矩阵阵列中使用,所述的使用二维的存储器空间一维数组的比例如果大多数的元素没有任何信息,就会造成浪费内存空间,因此,必须设计稀疏矩阵阵列存储,并使用更少的内存空间来存储信息的完整矩阵。
安姆的二维数组有N非零元素,如果N << M * N,则A是稀疏矩阵。
由于稀疏矩阵包含许多零元素存储在计算机将浪费大量的空间,所以我们平时使用的压缩存储方法。
9. 设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每
因为是对称矩阵,只需要存一半元素
存储方法为a11
a12 a22
a13 a23 a33
a14 a24 a34 a44
a15 a25 a35 a45 a55
...
a18 a28 a38 a48 a58
一共1+2+3+4+5+6+7+5=33