![n维矩阵的乘法AB-1__第1页](http://file2.renrendoc.com/fileroot_temp3/2021-4/26/2a2d30fb-d527-47e6-9de8-2fe292dc3ddb/2a2d30fb-d527-47e6-9de8-2fe292dc3ddb1.gif)
![n维矩阵的乘法AB-1__第2页](http://file2.renrendoc.com/fileroot_temp3/2021-4/26/2a2d30fb-d527-47e6-9de8-2fe292dc3ddb/2a2d30fb-d527-47e6-9de8-2fe292dc3ddb2.gif)
![n维矩阵的乘法AB-1__第3页](http://file2.renrendoc.com/fileroot_temp3/2021-4/26/2a2d30fb-d527-47e6-9de8-2fe292dc3ddb/2a2d30fb-d527-47e6-9de8-2fe292dc3ddb3.gif)
![n维矩阵的乘法AB-1__第4页](http://file2.renrendoc.com/fileroot_temp3/2021-4/26/2a2d30fb-d527-47e6-9de8-2fe292dc3ddb/2a2d30fb-d527-47e6-9de8-2fe292dc3ddb4.gif)
![n维矩阵的乘法AB-1__第5页](http://file2.renrendoc.com/fileroot_temp3/2021-4/26/2a2d30fb-d527-47e6-9de8-2fe292dc3ddb/2a2d30fb-d527-47e6-9de8-2fe292dc3ddb5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计 题目n 维矩阵的乘法 AB-1 学号_ 姓名_ 专业_ 指导老师 数据结构课程设计 第一章:课程设计的目的 第二章:课程设计的内容和要求 课程设计的内容 运行环境 第三章:课程设计分析 矩阵的存储 矩阵的输入与输出 矩阵的乘法运算 矩阵的求逆运算 第四章:课程设计的算法描述 矩阵的存储 矩阵的输出 矩阵的乘法 矩阵的求逆运算 第五章:源代码 11 第六章:结束语 第3页共11页 第一章:课程设计的目的 本学期我们对数据结构这门课程进行了学习。这门课程是一门实践性非 常强的课程,为了让大家更好地理解与运用所学知识, 提高动手能力,我们进行 了此次课程设计实习。这次课程设计不但要
2、求实习者掌握 数据结构中的各方 面知识,还要求实习者具备一定的 C语言基础和编程能力。 具体说来,这次课程设计主要有两大方面目的。 一是让实习者通过实习掌握 数据结构中的知识。对于矩阵乘法这一课题 来说,所要求掌握的数据结构知识主要是数组的相关概念和数组用来存储矩阵的 相关便利性。 二是通过实习巩固并提高实习者的 C语言知识,并初步了解Visual C+的知 识,提高其编程能力与专业水平。 章:课程设计的内容和要求 课程设计的内容 设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出 两个矩阵,输出ab-1结果。 要求 要求 1) 2) 3) 4) 5) 界面友好,函数功能要划分
3、好 总体设计应画一流程图 程序要加必要的注释 要提供程序测试方案 程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是 没有价值的。 运行环境 该程序的运行环境为 Windows xp系统,Microsoft Visual C+6.0版本。 第三章:课程设计分析 矩阵的存储 矩阵的结构类似于c语言中的二维数组,所以可以用二维数组来存储矩阵, 这样 的结构很简便而且也最符合要求。 矩阵的输入与输出 选择二维数组作为矩阵的存储结构那么可以采用二维数组的输入与输出的方式 来对矩阵进行输入输出操作。利用两个 for循环语句可以实现将矩阵中的元素存 入到二维数组中,但是要注意的是矩阵的
4、行和列的下标都是从 1开始的但是二维 数组的行和列的下标都是从0开始所以在编写程序的时候要注意这些差别。 矩阵的乘法运算 矩阵的乘法运算时线性代数里的知识,两个n阶的矩阵相乘,设有三个矩阵A,B,C, 矩阵A乘矩阵B等于矩阵C,那么矩阵C中的第i行第j列的元素等于矩阵A 的第i行元素和矩阵B的第j列对应的元素的乘积的和。 矩阵的求逆运算 定义一个矩阵的求逆的运算的函数,函数名为inverse,函数的参数为数组B,利 用线性代数中的初等变换的知识求矩阵的逆 第四章:课程设计的算法描述 矩阵的存储 printf(” 输入矩阵 a:); for(i=0;iN;i+) for(j=0;jN;j+) 数
5、据结构课程设计 /*输入矩阵 A*/ printf(”请再输入矩阵b:); for(i=0;iN;i+) for(j=0;jN;j+) scan f(%f, /*输入矩阵B*/ 矩阵的输出 printf(”请输出矩阵A和B的乘积矩阵C:n); for(i=0;iN;i+) for(j=0;jN;j+) prin tf(%ft,cij); prin tf(n); 矩阵的乘法 定义一个全局变量 sum初值为0.0; for(i=0;iN;i+) for(j=0;jN;j+) for(k=0;kN;k+) sum+=aik*bkj; cij=sum; sum=0; /*矩阵的乘法的函数的内容 */
6、矩阵的求逆运算 y=1;矩阵维数N, 定义一个函数,函数名为inverse;之前定义全局变量 和整型变量i,和j, 第4页共11页 数据结构课程设计 函数的参数为数组 B,返回值为数组B的逆矩阵B-1 void in verse(float mNN) /*inverse函数是对矩阵的求逆运算的函数*/ int dN2*N; float t,x; int k; printf(B 原矩阵为:n); for (i=0;iN;i+) for (j=0;jN;j+) prin tf(%3.2ft,mij); prin tf(n); /*将原数组输出*/ for(i=0;iN;i+) for(j=0;j(
7、2*N);j+) if (jN) dij=mij; else if (j=N+i) dij=1.0; else dij=O.O; /*将数组b中的元素转存到变量数组d中,其中d中的另 半元素对应一个单位矩阵 */ for(i=0;iN;i+) for(k=0;kN;k+) if(k!=i) t=dki/dii; for(j=0;j(2*N);j+) x=dij*t; dkj=dkj-x; 第8页共11页 /*矩阵的初等变换*/ for(i=0;iN;i+) t=dii; for(j=0;j(2*N);j+) dij=dij/t; for(i=0;iN;i+) y=y*dii; if(y=0)
8、n); printf(对不起,您输入的矩阵没有逆矩阵,请重新输入。 else for(i=0;iN;i+) for(j=0;jN;j+) mij=dij+N; printf(B 逆矩阵为:n); for (i=0;iN;i+) for (j=0;jN;j+) prin tf(%3.2ft,mij); prin tf(n); 第五章:源代码 #in clude #defi ne N 3 int i,j,k; float y=1.0; float aNN,bNN,cNN;/*定义全局变量的三个数组*/ /*矩阵的乘法的函数的内容 */ void in verse(float mNN); int m
9、ai n() printf(” 输入矩阵 a:); for(i=0;iN;i+) for(j=0;jN;j+) scan f(%f, /*输入矩阵A*/ printf(”请再输入矩阵 b:); for(i=0;iN;i+) for(j=0;jN;j+) scan f(%f, /*输入矩阵B*/ in verse(b);/*调用in verse函数对矩阵b进行求逆运算*/ for(i=0;iN;i+) for(j=0;jN;j+) for(k=0;kN;k+) cij+=aik*bkj; printf(”请输出矩阵 A和B的乘积矩阵C:n); for(i=0;iN;i+) for(j=0;jN;
10、j+) prin tf(%3.2ft,cij); prin tf(n); 数据结构课程设计 /*主函数结束*/ void in verse(float mNN) /*inverse函数是对矩阵的求逆运算的函数*/ float dN2*N; float t,x; int k; printf(B 原矩阵为:n); for (i=0;iN;i+) for (j=0;jN;j+) prin tf(%3.2ft,mij); prin tf(n); /*将原数组输出*/ for(i=0;iN;i+) for(j=0;j(2*N);j+) if (jN) dij=mij; else if (j=N+i) d
11、ij=1.0; else dij=0.0; /*将数组b中的元素转存到变量数组d中,其中d中的另 半元素对应一个单位矩阵 */ for(i=0;iN;i+) for(k=0;kN;k+) if(k!=i) t=dki/dii; for(j=0;j(2*N);j+) x=dij*t; dkj=dkj-x; 第8页共11页 数据结构课程设计 第11页共11页 /*矩阵的初等变换*/ for(i=0;iN;i+) t=dii; for(j=0;j(2*N);j+) dij=dij/t; for(i=0;iN;i+) y=y*dii; if(y=0) n); printf(对不起,您输入的矩阵没有逆矩
12、阵,请重新输入。 else for(i=0;iN;i+) for(j=0;jN;j+) mij=dij+N; printf(B 逆矩阵为:n); for (i=0;iN;i+) for (j=0;jN;j+) prin tf(%3.2ft,mij); prin tf(n); 输入鉅阵自二1 0 0 18再输入拒阵b: L B厲矩阵为= 1, W0* W 1. 002, 00 1. 00比 00 E逆拒阵为= 1. 000. 00 -0. E00. 50 0. 00-0. 33 12 0 12 3 00120123 0*8 0.00 3.00 0.00 0,00 (X 33 0*00 0.00
13、1,00 to continue 第六章: 结束语 请输出矩阵积走阵 1* 00Q* 00 0* 00k 00 0.00-0.00 Pressany key 转眼,为期两周的数据结构课程设计实习即将结束了。在这次实习中, 自己的C语言知识和数据结构知识得到了巩固,编程能力也有了一定的提高。 同时也学会了解决问题的方法。总结起来,自己主要有以下几点体会: 1.必须牢固掌握基础知识。由于 C语言是大一所学知识,有所遗忘,且未掌 握好这学期所学的数据结构这门课,所以在实习之初感到棘手。不知如何下 手,但在后来的实习过程中自己通过看书和课外资料,并请教其他同学,慢慢地 对C语言和数据结构知识有所熟悉。这时才逐渐有了思路。所以,这次实习之 后,我告诫自己:今后一定要牢固掌握好专业基础知识。 2必、须培养严谨的科学态度。自己在编程时经常因为一些类似于“少了分号” 的小错误而导致错误,不够认真细致,这给自己带来了许多麻烦。编程是一件十 分严谨的事情,容不得马虎。所以在今后自己一定要培养严谨的科学态度。 我想 这不仅是对于程序设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论