稀疏矩阵的建立与转置

稀疏矩阵的建立与转置

ID:10849341

大小:177.00 KB

页数:5页

时间:2018-07-08

稀疏矩阵的建立与转置_第1页
稀疏矩阵的建立与转置_第2页
稀疏矩阵的建立与转置_第3页
稀疏矩阵的建立与转置_第4页
稀疏矩阵的建立与转置_第5页
资源描述:

《稀疏矩阵的建立与转置》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验2稀疏矩阵的建立与转置一、实验目的掌握特殊矩阵的存储和操作算法。二、实验内容及问题描述实现用三元组保存稀疏矩阵并实现矩阵转置的算法。三、实验步骤1.定义稀疏矩阵的三元组形式的存储结构。2.实现三元组矩阵的传统转置算法。3.实现三元组矩阵的快速转置算法。4.输入矩阵非零元素,测试自己完成的算法。四、程序流程图5五、概要设计矩阵是很多的科学与工程计算中研究的数学对象。在此,我们感兴趣的是,从数学结构这门学科着眼,如何存储矩阵的元从而使矩阵的各种运算有效的进行。本来,用二维数组存储矩阵,在逻辑上意义是很明确的,也很容易理解,操作也很容易

2、和方便。但是在数值分析中经常出现一些阶数很高的矩阵,同时,在矩阵中又有很多值相同或者都为零的元素,可以对这种矩阵进行压缩存储:对多个值相同的元素只分配一个存储空间;对零元素不分配空间。稀疏矩阵的定义是一个模糊的定义:即非零元个数较零元个数较少的矩阵。例如下图所示的矩阵为一个稀疏矩阵。为了实现稀疏矩阵的这种存储结构,引入三元组这种数据结构。三元组的线性表顺存储形式如下图:六、详细设计sanyuanzu.h头文件#definemax100typedefstruct{introw,col;inte;}Triple;//定义三元组typede

3、fstruct{Tripledata[max];intmu,nu,tu;}TSMatrix;///*定义三元组的稀疏矩阵*/voidcreat(TSMatrix&M);voidfasttrans(TSMatrixA,TSMatrix&B);5voidprintfx(TSMatrixx);sanyuanzu.cpp文件#include#include"sanyuanzu.h"/*建立三元组的稀疏矩阵*/voidcreat(TSMatrix&M){printf("请输入稀疏矩阵的行数:");scanf("%d",&M.m

4、u);printf("请输入稀疏矩阵的列数:");scanf("%d",&M.nu);printf("请输入矩阵中非零元素的个数:");scanf("%d",&M.tu);inti;printf("请输入这%d个元素的行号和列号及其元素的值:/n",M.tu);for(i=1;i<=M.tu;i++)scanf("%d%d%d",&M.data[i].row,&M.data[i].col,&M.data[i].e);}/*实现三元组的矩阵转置的函数*/voidfasttrans(TSMatrixA,TSMatrix&B){intcol

5、,cpot[max],num[max],t,p,q;/*初始化矩阵B*/B.mu=A.nu;B.nu=A.mu;B.tu=A.tu;if(B.tu){for(col=1;col<=A.nu;++col)num[col]=0;/*初始化每一列非零元的个数*/for(t=1;t<=A.tu;++t)++num[A.data[t].col];/*计算每一列非零元的个数*/cpot[1]=1;for(col=2;col<=A.nu;++col)cpot[col]=cpot[col-1]+num[col-1];//计算矩阵A每一列第一个非零元在

6、B.data中的位置/*实现对A中的每一个非零元进行转置*/for(p=1;p<=A.tu;++p){col=A.data[p].col;q=cpot[col];B.data[q].row=A.data[p].col;B.data[q].col=A.data[p].row;B.data[q].e=A.data[p].e;5++cpot[col];}}}/*稀疏矩阵的输出*/voidprintfx(TSMatrixx){inti,j;for(j=1;j<=x.tu;j++){for(i=1;i<=x.mu;i++)if(x.data[j

7、].row==i)printf("%d%d%d/n",x.data[j].row,x.data[j].col,x.data[j].e);}}main.cpp文件#include#include'"sanyuanzu.cpp"//主函数intmain(void){TSMatrixt,s;creat(t);printf("你所输入的稀疏矩阵为:/n");printfx(t);fasttrans(t,s);printf("转置后的稀疏矩阵为:/n");printfx(s);return0;}}七、调试报告5八、分析与遇到的

8、问题(1)创建稀疏矩阵时,不懂如何用三元组表示元素的输出;(2)需要注意矩阵运算中的特殊状况,稀疏矩阵相加时,忘记对应元素相加为0时,在稀疏矩阵中不表示;(3)矩阵相加时,第一个矩阵的行列数要和第二个矩阵的行列数相等;(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。