- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
N为矩阵相乘
目 录
目录 1
一.问题分析 2
1.问题描叙 2
2.问题的数学模型 2
二.系统分析 4
1.系统流程 4
三.系统设计 4
1.系统功能: 4
2.主要数据结构 5
3.主要函数说明 6
4.主要算法说明 6
四.系统实现 7
1.运行环境 7
2.源程序 7
3.程序运行结果 8
五.系统评价 9
1.本系统已完成的基本操作 9
2.本系统还需改进的功能 9
六. 心得体会 9
附录 A 源程序 10
附录 B 参考文献 15
一.问题分析
1.问题描叙
高等数学中常涉及到矩阵的加、减、乘、除等算法,人工实现有一定的复杂性,现将此问题转化成让计算机实现。用户从键盘上输入需要计算的两个矩阵,然后让计算机保存起来并选择相应的算法操作,最后将结果以矩阵的形式反馈给用户。
设计要求:
1.用C语言实现利用实现的基本功能的各个功能模块要求用函数的形式实现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;iN;i++) //将la中的元素转化为矩阵中的数据
for(j=0;jN;j++)
{
a[i][j]=pa-data;
pa=pa-next;
if(pa==NULL)
break;
}
for(i=0;iN;i++) //将lb中的元素转化为矩阵中的数据
for(j=0;jN;j++)
{
b[i][j]=pb-data;
pb=pb-next;
if(pb==NULL)
break;
}
for(i=0;iN;i++) //对矩阵进行乘法运算
for(j=0;jN;j++)
for(k=0;kN;k++)
c[i][j]+=a[i][k]*b[k][j];
for(i=0;iN;i++) //将矩阵以链表的形式保存
for(j=0;jN;j++)
{
pc-data=c[i][j];
pd=(linklist)malloc(sizeof(ArrayList)); //为lc创建空间
pd-next=NULL;
pc-next=pd;
pc=pc-next;
}
}
linklist Createlist()
2.两个矩阵的加法运算 void Addlist(linklist la,linklist lb,linklist *lc)
3.两个矩阵的减法运算 void Sublist(linklist la,linklist lb,linklist *lc)
4.两个矩阵的乘法运算 void Mullist(linklist la,linklist lb,linklist *lc)
5.输出矩阵 A B void printlist1(linklist la,linklist lb)
6.输出矩阵C void printlist2(linklist *lc)
4.主要算法说明
1.矩阵相加
矩阵相加实际对应就是将A链和B链对应位置元素相加,然后将相加的结果保存在新开辟的C链中,然后将C链的元素以N维矩阵的形式显示出来。
2.矩阵相减
矩阵相减过程类似如矩阵相加过程,在此不必赘述。
3.矩阵相乘
矩阵相乘就是先将a链和b链中对应的元素分别转化到行和列相等的矩阵A和B中,然后将A矩阵的第n行中的所有元素与B矩阵的第n列中对应的所有元素相乘,并求和,将结果存储在矩阵C中,最后将矩阵C中的元素依次的转化到c链中存储,并显示矩阵C.
四.系统实现
1.运行环境
DOS/WIN XP/Vista 操作系统,VC6.0编译系统。
2.源程序
源程序见附录A。
3.程序运行结果
五.系统评价
1.本系统已完成的基本操作
1.通过链表实现了矩阵的存储。
2.利用函数实现了相应的功能。
2.本系统还需改进的功能
1.矩阵的行和列
文档评论(0)