半三角矩陣的壓縮訪問及矩陣乘法的實現

2021-10-10 02:15:27 字數 1295 閱讀 3509

在陣列的壓縮儲存中我們學過了對稱矩陣的儲存方式,半三角矩陣的儲存方式是類似的。對於n階方陣,總共需要儲存1+2+3…+n = n(n+1)/2 個元素。若以行序為主序,

1.已知i,j,則對應的offest(i,j) = (i+1)*i/2 + j。

2.已知k=offest(i,j),則i = (-1+sqrt(1 + 8k)) / 2 向下取整,j = k - (i+1)*i/2。

下面來推導下半形矩陣的乘法公式,以3x3矩陣為例,c=axb則

c20 = a20 * b00 + a21 * b10 + a22 * b20

c21 = a21 * b11 + a22 * b21

c22 = a22 * b22

觀察上面幾個式子我們很容易得到cij的數學表示式:

若n階下半三角矩陣採用一維陣列壓縮儲存,矩陣c中第k個元素的值的求法如下:

//矩陣乘法

i =(

sqrt(1

+8* k)-1

)/2;

//獲取位置i,j

j = k - i *

(i +1)

/2;for

(int l = j; l <= i; l++

)

實現**:

#include

#include

using

namespace std;

void

printmartix

(int

* martix,

int n)

cout << endl;}}

void

init

(int

*martix1,

int*martix2,

int*martix3,

int n)

cout <<

"矩陣2"

<< endl;

for(

int i =

0; i <

(n +1)

* n /

2; i++)}

void

multi

(int

* martix1,

int* martix2,

int* martix3,

int n)

martix3[k]

= sum;}}

intmain()

上三角矩陣下三角矩陣

要求給定矩陣,輸出其上三角矩陣或下三角矩陣 源 如下 include include include include const int m 5 void proc int array m m void main printf n proc a printf result array is n fo...

帶狀矩陣,對稱矩陣,三角矩陣

對稱矩陣 include 重要公式 p k k 1 2 p1 sizeof int p p1 p1 1 2 k sizeof int include int main printf 請輸入要詢問的數 n printf d n p for i 1 i m i else 在對角線以上可以通過對角線以下查...

判斷上三角矩陣

第5題 描述 輸入乙個正整數n 2 n 10 和n n矩陣a中的元素,如果a是上三角矩陣,輸出 yes 否則輸出 no 輸入 第一行為正整數n,表示矩陣大小。接著n行,每一行n個整數,整數以空格間隔。輸出 輸出 yes 或 no 輸入示例 33 4 5 1 2 3 1 3 4 輸出示例 no 提示 ...