在陣列的壓縮儲存中我們學過了對稱矩陣的儲存方式,半三角矩陣的儲存方式是類似的。對於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 提示 ...