对于n*n的方阵,若它的全部非零元素落在一个以主对角线为中心的带状区域中,这个带状区域包含主对角线 ,以及主对角线下面及上面各b条对角线上的元素,那么称该方阵为半带宽为b的带状矩阵。
如图是一个3对角矩阵。
一个三对角矩阵的非零系数分布在主对角线以及两边的线上,呈带状分布,其余的位置元素的值都是0。
由图可得带状矩阵第一行和最后一行只有两个元素,其余各行均有3个非零元素。由于其他元素都为0,因此可以只存储非零元素。由此所需的一维向量空间大小为:3n-2。
确定非零元素aij在一维数组空间中的位置:Loc[i][j]=Loc[1][1]+(3(i-1)-1)*size+(j-i+1)*size=Loc[1][1]+2(i-1)+j-1.
k=2i+j;
i=(k+1)/3;
j=k-2[(k+1)/3];
#define NM 5 #define NA (3*NM - 2) int im[NM][NM]; int ia[NA]; for (int i=0;i<NM;i++) for (int j=0;j<NM;j++) im[i][j] = i * NM +j; for (int i=0;i<NM;i++) for (int j=0;j<NM;j++) if(abs(i-j)<2) ia[(NM -1)*(i-j + 1) + i ]=im[i][j];