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

2021-07-16 14:41:34 字數 1710 閱讀 2317

對角矩陣壓縮儲存

對角矩陣是指所有非零元素全部集中在中心幾條對角線上的矩陣。下面以三對角矩陣(所有非零元素集中在中心三條對角線上)為例描述對角矩陣壓縮儲存方法。圖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元素

對角線上方那條有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) 

所以用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

三對角矩陣(特殊矩陣)

一開始在網上搜了好多,結果題目和答案不對應,有的答案直接不對,沒辦法,看的書然後自己慢慢分析做的。具體如下 乙個三對角矩陣的非零係數在三條對角線上 主對角線 低對角線 高對角線。其餘元素全為0。三對角矩陣的特點 三對角矩陣m是乙個對角矩陣,當且僅當 時,有m i,j 0。在乙個nxn的三對角矩陣t中...

三對角矩陣下標的計算

乙個三對角矩陣的非零係數在三條對角線上 主對角線 低對角線 高對角線。其餘元素全為0。三對角矩陣的特點 這三條對角線上的元素總數為3n 2,故可以使用乙個擁有3n 2個位置的一維陣列來描述,因為僅需要儲存三條對角線上的元素。在題目中經常考察用 i j 表示 k 的下標 我們只需要記住 按行優先時的公...

三對角陣的一維陣列表示

資料結構基礎 c語言版 第2版,ellis horowitz著,朱仲濤譯 2.9節,page78,習題5 三對角陣是除主對角線及其相鄰上下兩條對角線之外都是零元素的方陣,三條對角線中的元素可以按行儲存在一維陣列b中,a 0 0 對應b 0 程式設計實現在b中訪問a i j 0 i,j 如下 incl...