2022年求三角矩阵在压缩存储下的转置矩阵 .pdf
-
资源ID:26049931
资源大小:74.34KB
全文页数:3页
- 资源格式: PDF
下载积分:4.3金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
2022年求三角矩阵在压缩存储下的转置矩阵 .pdf
#include #include #define max 20 #define zero 0 typedef struct int i,j,v; node; typedef struct node datamax; int m; TSmatrix; TSmatrix *Setmatrix() /建三对角矩阵TSmatrix *T; T=(TSmatrix *)malloc(sizeof(TSmatrix); printf( 请输入矩阵行数或列数:n); scanf(%d,&T-m); printf( 建立三对角矩阵:n); for(int n=0;nm-2;n+) scanf(%d%d%d,&T-datan.i,&T-datan.j,&T-datan.v); return T; TSmatrix *Trabsmatrix(TSmatrix *T) /三对角矩阵转置int n,k,temp; TSmatrix *F; F=(TSmatrix *)malloc(sizeof(TSmatrix); F-m=T-m; for(n=0;nm-2;n+) /将结点信息存入新三元组表中temp=2*T-datan.j+T-datan.i; /计算待存入三元数组下标F-datatemp.i=T-datan.j; F-datatemp.j=T-datan.i; F-datatemp.v=T-datan.v; return F; void TSmatrixout(TSmatrix *T) /三对角矩阵输出int a,b,n; n=0; for(a=0;am;a+) for(b=0;bm;b+) if(T-datan.i=a&T-datan.j=b) printf(%-5d,T-datan.v); n+; else printf(%-5d,zero); printf(n); void main() TSmatrix *T; T=Setmatrix(); printf( 三对角矩阵 :n); TSmatrixout(T); T=Trabsmatrix(T); printf( 转置后三对角矩阵:n); TSmatrixout(T); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - 问题分析:本程序要求实现对压缩存储下的三对角矩阵进行转置,为实现上述功能,需要解决的关键问题是三对角矩阵压缩存储及转置过程。概要设计:利用三元组表以行序为主序压缩存储三对角矩阵。转置时,先利用三元数组中的行标i和列标j 计算出待放入新三元数组的下标temp。由于转置时需要将行标和列标交换,所以temp=2*j+i 。找出待存入的下标后,将相应的信息存入下标为temp 的三元数组中。详细设计:由于三元组表中的结点存放了元素的行标i 和列标j,因此可利用行标和列标互换进行转置, 但这样操作后, 新三元组表中的元素则以列序为主序存放,不便矩阵遍历输出,因此在将互换行标、 列标后的元素存入新三元组表时,应先计算出按行序为主序存放时所在的下标 temp。由于三对角矩阵元素存入三元数组中,所在的下标temp 与其行标i 和列标j 有temp=2*i+j 关系,所以可先求出下标temp,同时将信息存入下标为temp 的数组中,所得的新三元组表即以行序为主序存放的。调试分析及小结:错误及分析: 在开始设计转置函数时,直接利用行标和列标交换方法,因此所得的新三名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - 元组表则以列序为主序存放,输出矩阵时并未正确的转置矩阵。初步改进: 参考课本的转置思想,对三元组表进行转置时,以列序为主序进行转置,转置后所得新三元组表则是以行序为主序存放,但该算法时间复杂度为O(nt) ,其中n 为列数, t 为非 0 元个数。最终改进: 由于三对角矩阵元素存入三元数组中的下标temp 与该元素的行标i 与列标 j有 temp=2*i+j 关系,因此可直接将元素信息存放下标temp 的数组中,该算法时间复杂度为O(t) ,t 为非 0 元个数,程序代码如下:for(n=0;nm-2;n+) temp=2*T-datan.j+T-datan.i; F-datatemp.i=T-datan.j; F-datatemp.j=T-datan.i; F-datatemp.v=T-datan.v; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -