下载此文档

n为矩阵相乘.doc


文档分类:高等教育 | 页数:约16页 举报非法文档有奖
1/16
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/16 下载此文档
文档列表 文档介绍
目录
目录 1
2
2
2
4
4
4
: 4
5
6
6
7
7
7
8
9
9
9
六. 心得体会 9
附录 A 源程序 10
附录 B 参考文献 15


高等数学中常涉及到矩阵的加、减、乘、除等算法,人工实现有一定的复杂性,现将此问题转化成让计算机实现。用户从键盘上输入需要计算的两个矩阵,然后让计算机保存起来并选择相应的算法操作,最后将结果以矩阵的形式反馈给用户。
设计要求:
.
.
、减法、乘法基本运算功能.
4. 程序的各个功能模块要求用函数的形式实现.

实验要求是做一个矩阵相乘系统,而本实验所采用的是以链表和矩阵来作为媒介,来进行处理和存储,用两条链存储需要相乘的矩阵,然后用将链转化为矩阵进行相应数据处理并将处理结果用链来存储。
具体问题描叙如图(此图是以三维矩阵为实例):
Head | A1
A链:
A2 |
Head | B1
NULL
B链:
B2 |
A8|
。。。
A9 |
。。。
B8|
B9 |
NULL
A矩阵:
A1 A2 A3
A4 A5 A6
A7 A8 A9
B矩阵:
B1 B2 B3
B4 B5 B6
B7 B8 B9
C矩阵:
A1*B1+A2*B4+A3*B7 A1*B2+A2*B5+A3*B8 A1*B3+A2*B6+A3*B9
A4*B1+A5*B4+A6*B7 A4*B2+A5*B5+A6*B8 A4*B3+A5*B6+A6*B9
A7*B1+A8*B4+A9*B7 A7*B2+A8*B5+A9*B8 A7*B3+A8*B6+A9*B9
C链:
Head | A1*B1+A2*B4+A3*B7
A1*B2+ A2*B5+A3*B8|
。。。
A7*B2+A8*B5+A9*B8|
A7*B3+A8*B6+A9*B9|
NULL

开始
输入数据
选择操作







5.
选择操作错误
输出矩阵
结束


:
本系统将两个矩阵以链表的形式存储在计算机中,只要输入相应的操作,就可以通过本系统实现矩阵的加法、减法、乘法运算,并将结果以链表的形式存储,同时以矩阵的形式显示出来。

void Mullist(linklist la,linklist lb,linklist *lc) //矩阵乘法 c=a*b
{
linklist pa,pb,pc,pd;
int i,j,k,a[N][N],b[N][N],c[N][N]={0}; //为链表创建矩阵
pa=la->next;
pb=lb->next;
pc=(linklist)malloc(sizeof(ArrayList)); //为lc创建空间
pc->next=NULL;
*lc=pc;
for(i=0;i<N;i++) //将la中的元素转化为矩阵中的数据
for(j=0;j<N;j++)
{
a[i][j]=pa->data;
pa=pa->next;
if(pa==NULL)
break;
}
for(i=0;i<N;i++) //将lb中的元素转化为矩阵中的数据
for(j=0;j<N;j++)
{
b[i][j]=pb->data;
pb=pb->next;
if(pb==NULL)
break;
}
for(i=0;i<N;i++) //对矩阵进行乘法运算
for(j=0;j<N;j++)
for(k=0;k<N;k++)
c[i][j]+=a[i][k]*b[k][j];

for(i=0;i<N;i++) //将矩阵以链表的形式保存
for(j=0;j<N;j++)
{
pc->data=c[i][j];
pd=(linklist)malloc(sizeof(ArrayList)); //为lc创建空间
pd->next=NULL;
pc->next

n为矩阵相乘 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数16
  • 收藏数0 收藏
  • 顶次数0
  • 上传人aibuaiwo1318
  • 文件大小941 KB
  • 时间2018-05-02