當前位置:首頁 » 存儲配置 » 對稱矩陣存儲

對稱矩陣存儲

發布時間: 2022-05-26 09:31:14

Ⅰ 數據結構對稱矩陣的壓縮存儲求數據地址

對對稱陣進行壓縮存取是將對稱元素只存一個,並將數據存儲在一維數組中
首先來確定a[i][j]在b[k]中的i,j與k的關系
首先是判定i與j的關系,
如果是下三角存儲,則分一下兩種情況
1、如果i<j,
則交換i與j的值,將上三角的位置值變換到下三角位置
2、如果i>=j,則不用執行操作直接走下面的流程
此時,i表示行坐標,j表示了坐標i之前有i行,即有1+2+...+i
=
(i+1)*i/2,在i標識的第i+1行有j+1個元素,由此可以確定k的值為(i+1)*i/2+j+1
=
k+1
由此可得k
=
(i+1)*i/2+j
由此可以的,a[3][6],
i=3,
j=6,
由於i<j,
交換得i=6,
j=3
由此
k
=
(6+1)*6/2+3
=
24
又由於&b[0]
=
1000
每個元素占兩個位元組,
則b[24]
=
1000+2*24
=
1048
由此便得到a[3][6]的地址為1048

Ⅱ 設有10階對稱矩陣a,採用壓縮存儲方式(以行序為主序存儲,則a11的地址為1),則a85的地址為。

首先,壓縮存儲對於對稱矩陣來說,等於是存對角線的右上半加對角線的元素,或者是左下半加對角線的元素,其他位置不存儲。

這題是使用行優先存儲,即先存a11,再a12,再a22,再a13,再a23,再a33,以此類推,一直到a85,所以a85的位置計算為:(1+2+3+4+5+6+7)+5=33,選擇答案B。

對稱矩陣(Symmetric Matrices)是指元素以主對角線為對稱軸對應相等的矩陣。在線性代數中,對稱矩陣是一個方形矩陣,其轉置矩陣和自身相等。

(2)對稱矩陣存儲擴展閱讀

LAPACK是由美國國家科學基金等資助開發的著名公開軟體。LAPACK包含了求解科學與工程計算中最常見的數值線性代數問題,如求解線性方程組、線性最小二乘問題、特徵值問題和奇異值問題等。

LAPACK提供了豐富的工具函式,可用於諸如解多元線性方程式、線性系統方程組的最小平方解、計算特徵向量、用於計算矩陣QR分解的Householder轉換、以及奇異值分解等問題。 在NetLib亦提供了API經簡化的Fortran 95版本的LAPACK95。LAPACK以BSD授權的方法釋出。

Ⅲ 為什麼對稱矩陣可將n²個元素壓縮存儲到n(n+1)/2個元素的一維數組。而非存到n²/2一維數組

n×n階對稱矩陣中,對稱軸上的元素是沒有映像的,它們不重復。
對稱軸一側有n(n-1)/2個元素,對稱軸上有n個元素,這是能夠壓縮的最低限數量,它們的和為:
n(n-1)/2+n=(n²-n+2n)/2=(n²+n)/2
=n(n+1)/2個。
而不是總用元素個數n²/2。

Ⅳ 設對稱矩陣A壓縮存儲在一維數組B中

首先由 a52能夠得到的信息有:

  1. 針對特殊的矩陣壓縮的方式是存儲下三角,而且下三角計算一維數組的下標是:k=i(i+1)/2+j

  2. 由a11 存儲在B[0]可以知道 從1開始存儲,計算時需要減1

  3. a36位於上三角中,對應的下三角的點是a63,在根據公式就能算出下標,注意一定要找到下三角的點

Ⅳ 數據結構中對稱矩陣的壓縮存儲的一 一對應關系怎麼算的

先看上面一個:
下三角有i>=j
第1行一個,第2行兩個,。。。,第i-1行i-1個(i, j下標都是從1開始的)
所以第i行前有1+2+...+(i-1)= i(i-1)/2個元素
再看本行,本元素前有j-1個元素
因為計算的是元素之間的位置差,因此就是i(i-1)/2+(j-1)了
下面一個上三角i<j:
對於對稱矩陣有a(i,j)=a(j,i),即行列互換,代入上式即可得

Ⅵ n階對稱矩陣採用壓縮存儲,需存儲的數據元素個數是

只要存對角線(含)以上的部分就行了,所以是1+2+...+n=n(n+1)/2

Ⅶ 將10階對稱矩陣壓縮存儲到一維數組

C
((100-10)/2)+10

Ⅷ 一個8×8的對稱矩陣,採用壓縮存儲需要幾個對應的空間

一個8×8的對稱矩陣,採用壓縮存儲需要
1+2+3+...+7+8=36
個對應的空間。

Ⅸ 對稱矩陣的壓縮存儲

#include<iostream>
using namespace std;

int main()
{
int temp[1000];
int t[500][500];
int arry1[1000],arry2[1000];
int n;
scanf("%d",&n);
int i;
int m;
m=n*n+n;
m=m/2;
for(i=1;i<=m;i++)
{
scanf("%d",&arry1[i]);
}
for(i=1;i<=m;i++)
{
scanf("%d",&arry2[i]);
}
for(i=1;i<=m;i++)
{
temp[i]=arry1[i]+arry2[i];
}
int j;
int k;
for(i=1,k=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{ t[i][j]=temp[k];
k++;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(j>i)
printf("%d",t[j][i]);
else
printf("%d",t[i][j]);
if(j!=n)
printf(" ");
}
printf("\n");
}

return 0;
}

Ⅹ 請問一下數據結構中對稱矩陣的壓縮存儲的一 一對應關系怎麼算的呀。

其實書本上說的已經夠了,我就不再贅述了,下面說說不明白的地方吧!

書本上說了 1<=i,j<=n,所以矩陣下標ij是以1開始的,但書本上的k是從0開始的

則下三角區和主對角線下標ij和一維向量下標k的關系式為i(i-1)/2+j-1如果k從1開始,則關系式為i(i-1)/2+j。

好,進入正題思路:

第1行一個,第2行兩個,。。。,第i-1行i-1個;第i行元素位置在第j,也就是說,第i行截止到它有j個。

所以要分開思考,1到i-1行的元素之和+本行截止到它的元素之和=它在一維數組的位置。

第i行前面i-1行的總和為i(i-1)/2,本行第i行截止到所求元素總數為j,所以加起來為i(i-1)/2+j。然後-1,代表k從0開始。

比如想取第3行第2列矩陣元素隱射到一維數組的位置

本行第3行之前2行的元素總數為3*2/2=3 對應 [i(i-1)/2]

然後j是在本行的位置是2 對應[+j]

總的等於5

這個第3行第2列的元素應該在一維數組的第五個位置,但是一維是從零開始的,所以5-1,得到對應一維數組的下標為4.

王道書上和樓上的答案都是正確的,只不過思路和我的有點不同,我的是處的位置,他們是要求元素之前位置,區別也就+-1

熱點內容
如何查找公司郵件伺服器與埠 發布:2024-11-13 08:55:12 瀏覽:530
pythonrequests文件 發布:2024-11-13 08:52:27 瀏覽:222
速騰安卓大屏什麼牌子好 發布:2024-11-13 08:49:59 瀏覽:664
黑岩上傳 發布:2024-11-13 08:49:18 瀏覽:33
Python高清 發布:2024-11-13 08:41:20 瀏覽:737
阿里雲伺服器很慢 發布:2024-11-13 08:29:27 瀏覽:720
老年公寓項目醫療怎麼配置 發布:2024-11-13 07:58:24 瀏覽:948
破解加密視頻的工具 發布:2024-11-13 07:40:37 瀏覽:94
java對日 發布:2024-11-13 07:26:44 瀏覽:191
為什麼安卓手機像素突然變差 發布:2024-11-13 07:23:33 瀏覽:647