对于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];