三對角矩陣壓縮存儲--注意對角元素的下標

對角矩陣的壓縮存儲
  對角矩陣是指全部非零元素所有集中在中心幾條對角線上的矩陣。下面以三對角矩陣(全部非零元素集中在中心三條對角線上)爲例描述對角矩陣的壓縮存儲方法。圖2-8是一個三對角矩陣,使用一維數組a[m]來壓縮存儲矩陣信息,則數組中的元素依次爲a11,a12,a21,a22,a23,a32,...,am數組

  其中,矩陣元素aij的下標i、j與其存儲在數組中的位置下標k(從0開始計數)存在以下的對應關係:當i=1時,k=j-1(1≤j≤2);當i>1時,k=2×i+j-3(|i-j|≤1)。推導方法以下:
  ① 當i=1時,j的取值就是矩陣元素aij在數組中的存儲次序,數組中存儲下標爲次序減1,故k=j-1。
  ② 當i>1時,在矩陣元素aij以前已經存儲了i-1行矩陣元素和第i行的j-i+1個元素,又已知矩陣的第1行須要存儲2個元素,第2~i-1行均須要存儲3個元素,故矩陣元素aij以前一共存儲的元素數有2+(i-1-2+1)×3+(j-i+1)=2×i+j-3。故aij的存儲下標爲2×i+j-3。
  例如,矩陣元素a33存儲在一維數組中的位置爲k=2×i+j-3=2×3+3-3=6,即一維數組中的第7元素。spa

主對角線上方那條有j-i=1,主對角線有j-i=0,下方有j-i=-1,以行爲索引 
因此天然可得k=(3i-2)+(j-i);=> k=2i+j-2 
反之當i=j時,k=3i-2=3(i-1)+1,當i=j+1時(下方那條),k=3i-1=3(i-1)+2,當i=j-1時,k=3(i-1) 
blog

因此用k除3取餘,設商爲x,餘爲y,y=0則B[k]=a[x+1][x],y=1,B[k]=a[x+1][x+1],y=2,B[k]=a[x+1][x+2]索引

3.方法

i,j   k 
1,0   0 
1,1   1 
1,2   2 

2,1   3 
2,2   4 
2,3   5 

3,2   6 
3,3   7 
3,4   8 
k   =   (i+j)+(i-2)   =   2*i+j-2 
i   =   k/3取整+1 
j   =   k/3取整+k%3 im

相關文章
相關標籤/搜索