| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

数据结构课程设计报告n维矩阵乘法

文***品

贡献于2020-06-29

字数:7803


数结构
课程设计报告


设计题目: n维矩阵法:A B-1

专 业 计算机科学技术
班 级 计
学 生
学 号
指导教师
起止时间 2007X32007X11




学年第 I 学期


具体务
功:
设计矩阵相程序首先键盘输入两矩阵ab容输出两矩阵输出ab-1结果
分步实施:
1初步完成总体设计搭框架确定机话界面确定函数数
2完成低求:建立文件完成2维矩阵情况
3进步求:通键盘输入维数n兴趣学扩充系统功
求:
1界面友函数功划分
2总体设计应画流程图
3程序加必注释
4提供程序测试方案
5程序定起测试宁功少运行起运行程序没价值
二 软件环境
Microsoft Visual C++ 60
三 问题需求分析

程序二维数组作矩阵存储结构通键盘输入矩阵维数n动态分配存空间创建n维矩阵矩阵建立通键盘输入矩阵元素值通文件读入矩阵项数(维数元素值)
矩阵作进步操作(A*BA*B^(1))时先判断存中否已相关数存未数存提示户先输入相关数
矩阵进行求逆时先利矩阵逆充条件:|A| 0 判断矩阵否逆矩阵行列式 |A| 0 提示该矩阵逆 |A| 0 求逆矩阵终端显示逆矩阵


四 算法设计思想流程图

1.抽象数类型

ADT MatrixMulti{



数象:D {a(Ij)|i 123…nj 12…na(ij)∈ElemSetn矩阵维数}

数关系 R {RowCol}
Row {| 1 < i < n 1 < j < n1}
Col {| 1 < i < n1 1 < j < n}

基操作
Swap(&a&b)
初始条件:记录ab已存
操作结果:交换记录ab值
CreateMatrix(n)
操作结果:创建n维矩阵返回该矩阵
Input(&M)
初始条件:矩阵M已存
操作结果:终端读入矩阵M元素值
Print(&M)
初始条件:矩阵M已存
操作结果:终端显示矩阵M元素值
ReadFromFile()
操作结果:文件读入矩阵相关数
Menu_Select()
操作结果:返回菜单选项
MultMatrix(&M1&M2&R)
初始条件:矩阵M1M2R已存
操作结果:矩阵M1M2作法运算结果放R中
DinV(&M&V)
初始条件:矩阵MV已存
操作结果:求矩阵M逆矩阵结果放入矩阵V中
MatrixDeterm(&Mn)
初始条件:矩阵M已存
操作结果:求矩阵M行列式值

} ADT MatrixMulti


2.矩阵求逆算法设计思想

算法采高斯约旦法(全选元)求逆思想:
首先k0n1作步:
① 第k行第k列开始右角子阵中选取绝值元素记住元素行号列号通行交换列交换交换元素位置步称全选元
② 元求倒:M(kk) 1 M(kk)


③ M(kj) M(kj) * M(kk)j 01…n1j k
④ M(ij) M(ij) – M(ik) * M(kj)ij 01…n1ijk
⑤ M(ik) M(ik) * M(kk)i 01…n1i k
根全选元程中记录行列交换信息进行恢复恢复原:
全选元程中先交换行(列)进行恢复原行(列)交换列(行)交换恢复

3矩阵行列式求值运算算法设计思想

利行列式性质:行列式等行(列)元素应代数余子式积
D ∑a(ik)*A(ik) k 12…n
D ∑a(kj)*A(kj) k 12…n
利函数递调法实现求值

4.函数间调关系
Main()
ReadFromFile()
DinV()
Swap ()
Print()
Menu_Select()
MatrixDeterm()
CreateMatrix()
MultMatrix()
Input()


5流程图













开始
switch(Menu_Select())
case 1
case 3
case 2
n > 0

输入矩阵维数n
输入矩阵AB
输出矩阵维数n
system(pause)
通键盘输入需矩阵求逆求出相应该逆阵显示求逆阵system(pause)矩阵逆返回菜单
case 4
RA*B显示矩阵R system(pause)
case 5







RA*B^(1)显示矩阵R
system(pause)B逆返回菜单
case 6
指定文件中读入矩阵数
case 0
exit(0)
结果






五 源代码

#include
#include
#include
#include
#include
#include


#define YES 1
#define NO 0
typedef float ElemType
ElemType **A 矩阵A
ElemType **B 矩阵B
ElemType **R 矩阵R存放运算结果
ElemType **V 矩阵V存放逆矩阵
int n0 矩阵维数
int flag1 标记
void swap(ElemType *aElemType *b) 交换记录ab值
{
ElemType c
c*a
*a*b
*bc
}


ElemType **CreateMatrix(int n) 创建n维矩阵返回该矩阵
{
int ij
ElemType **M
M (ElemType **)malloc(sizeof(ElemType *)*n)
if(M NULL)
exit(1)
for(i0i {
*(M+i) (ElemType *)malloc(sizeof(ElemType)*n)
for(j0j *(*(M+i)+j) 0
}
return M
}


ElemType MatrixDeterm(ElemType **Mint n)
*递法求n维矩阵行列式值返回运算结果*
{
int ijkls
ElemType **T1
ElemType **T2
T1CreateMatrix(n)
T2CreateMatrix(n)
ElemType u


ElemType value0 运算结果
for(i0i {
for(j0j {
T1[i][j]M[i][j]
T2[i][j]M[i][j]
}
}
if(n2) 2维矩阵直接运算返回运算结果
{
valueT2[0][0]*T2[1][1]T2[0][1]*T2[1][0]
return value
}
else
{
for(j0j {
uT1[0][j]
for(i1l0i {
for(k0s0k {
if(kj)
continue
else
{
T2[l][s]T1[i][k]
s++
}
}
l++
}
valuevalue+u*((int)pow(1j))*MatrixDeterm(T2n1)
*行列式等某行元素代数余子式积*
}
return value
}
}



int DinV(ElemType **MElemType **V)
*全选元法求矩阵M逆矩阵结果存入矩阵V中*


{
int ijk
ElemType d
ElemType u
int *JS*IS
JS(int *)malloc(sizeof(int)*n)
IS(int *)malloc(sizeof(int)*n)
uMatrixDeterm(Mn) 返回矩阵A行列式值
if(u0)
return 1
for(i0i for(j0j V[i][j]M[i][j]
for(k0k {
d0
for(iki {
for(jkj {
if(fabs(V[i][j])>d)
{
dfabs(V[i][j]) d记录绝值元素值
*绝值元素数组中行列坐标分存入IS[K]JS[K]*
IS[k]i
JS[k]j
}
}
}
if(d+10 10)
return 0 元素0
if(IS[k] k)
*绝值元素第k行矩阵IS[K]行元素k行元素相交换*
for(j0j swap(&V[k][j]&V[IS[k]][j])
if(JS[k]k)
*绝值元素第k列矩阵JS[K]列元素k列元素相交换*
for(i0i swap(&V[i][k]&V[i][JS[k]])
V[k][k]1V[k][k] 绝值元素求倒
for(j0j

*矩阵M第k行元素M[k][k]身外M[k][k]*
if(jk)
V[k][j]V[k][j]*V[k][k]
for(i0i*矩阵第k行元素第k列元素外身减M[i][k]*M[k][j] 中ij元素身矩阵位置坐标*
if(ik)
for(j0j if(jk)
V[i][j]V[i][j]V[i][k]*V[k][j]
for(i0i *矩阵M第k列元素M[k][k]身外M[k][k]*
if(ik)
V[i][k]V[i][k]*V[k][k]
}
for(kn1k>0k)
*根面记录行IS[k]列JS[k]信息恢复元素*
{
for(j0j if(JS[k]k)
swap(&V[k][j]&V[JS[k]][j])
for(i0i if(IS[k]k)
swap(&V[i][k]&V[i][IS[k]])
}
free(IS)
free(JS)
return 0
}

void MultMatrix(ElemType **M1ElemType **M2ElemType **R)
*矩阵M1M2 结果存入矩阵R*
{
int ijk
for(i0i {
for(j0j {
R[i][j]0
}
}
for(i0i {
for(j0j

{
for(k0k {
R[i][j]R[i][j]+M1[i][k]*M2[k][j]
}
}
}
}

void Input(ElemType **M) 输入矩阵M元素值
{
int ij
char str[10]
char c'A'
if(flag1)
c'B'
system(cls)
printf(\n\n输入矩阵c(d*d)\ncnn)
for(i0i {
for(j0j {
scanf(f*(M+i)+j)
}
}
flag1
gets(str) 吸收余字符
}

void Print(ElemType **M) 显示矩阵M元素值
{
int ij
printf(\t)
for(i0i {
for(j0j {
printf( 3fM[i][j])
}
puts()
printf(\t\t)
}
}




int Menu_Select()
{
char c
do{
system(cls)
puts(\t\t*************n维矩阵法器*************)
puts(\t\t| 1 通键盘输入项数 |)
puts(\t\t| 2 显示矩阵AB |)
puts(\t\t| 3 矩阵求逆显示逆矩阵 |)
puts(\t\t| 4 求矩阵运算A*B显示运算结果 |)
puts(\t\t| 5 求矩阵运算A*B^(1)显示运算结果|)
puts(\t\t| 6 文件读入矩阵AB维数n |)
puts(\t\t| 0 退出 |)
puts(\t\t***************************************)
printf(\t\t请选择(06))
cgetchar()
}while(c<'0'||c>'6')
return (c'0')
}


void ReadFromFile() 指定文件读入矩阵维数矩阵元素值
{
int ij
FILE *fp
if((fpfopen(txtxtr))NULL)
{
puts(法开文件)
system(pause)
exit(0)
}
fscanf(fpd&n) 读入矩阵维数
ACreateMatrix(n) 创建矩阵A B V R
BCreateMatrix(n)
VCreateMatrix(n)
RCreateMatrix(n)
for(i0i {
for(j0j {
fscanf(fpf&A[i][j])
}
}


for(i0i {
for(j0j {
fscanf(fpf&B[i][j])
}
}
puts(\n\n读文件成功)
fclose(fp)
flag1
}



int main()
{
int i
char ch
char str[10]
for()
{
switch(Menu_Select())
{
case 1 flag1
for()
{
system(cls)
printf(\n\n\t矩阵维数n)
scanf(d&n)
gets(str)
if(n>0)
break
else
{
printf(\n\t输入误请重新输入\n)
puts()
system(pause)
}
}
ACreateMatrix(n)
BCreateMatrix(n)
VCreateMatrix(n)
RCreateMatrix(n)
Input(A)


Input(B)
break
case 2 system(cls)
if(flag1)
{
puts(\n\n\t存矩阵数请先输入数)
system(pause)
break
}
puts(\n)
printf(\tA )
Print(A)
puts(\n)
printf(\tB )
Print(B)
puts()
system(pause)
break
case 3 system(cls)
if(flag1)
{
puts(\n\n\t存矩阵数请先输入数)
system(pause)
break
}
for()
{
printf(\n\n\t输入需求逆矩阵(AB))
hgetchar()
cgetchar()
hgetchar()
if(c'A'||c'a')
{
iDinV(AV)
if(i1)
{
puts(\n\n\t矩阵A行列式等0逆)
system(pause)
break
}
printf(\tA )
Print(A)
puts(\n)
printf(A^(1) )


Print(V)
puts()
system(pause)
break
}
else if(c'B'||c'b')
{
iDinV(BV)
if(i1)
{
puts(\n\n\t矩阵B行列式等0逆)
system(pause)
break
}
printf(\tB )
Print(B)
puts(\n)
printf(B^(1) )
Print(V)
puts()
system(pause)
break
}
else
puts(\n\n\t输入误请重新输入\n)
}
break
case 4 system(cls)
if(flag1)
{
puts(\n\n\t存矩阵数请先输入数)
system(pause)
break
}
MultMatrix(ABR)
printf(\n\n\tA*B )
Print(R)
puts()
system(pause)
break
case 5 system(cls)
if(flag1)
{
puts(\n\n\t存矩阵数请先输入数)


system(pause)
break
}
iDinV(BV)
if(i1)
{
puts(\n\n\t矩阵B行列式等0逆)
system(pause)
break
}
MultMatrix(AVR)
printf(\n\nA*B^(1) )
Print(R)
puts()
system(pause)
break
case 6 system(cls)
ReadFromFile()
puts()
system(pause)
break
case 0 puts(\t\t正常退出)
exit(0)
break
}
}
return 0
}







六 运行结果









1.界面:


2.输入6回车文文件txtxt中读入矩阵数:










3.回车回菜单界面输入2回车显示文件读入矩阵数:


4.回车回菜单界面输入3回车指定矩阵求逆:(里矩阵A逆仅矩阵B例)










5.回车回菜单界面输入4回车求矩阵运算A*B:


6.回车回菜单界面输入5回车求A*B^(1)值:


7.回车回菜单界面输入0回车退出程序果需定矩阵维数元素值请利菜单里1号功行输入数进行种运算操作
七 收获体会
通次课程设计次复线性代数里矩阵相关知识n维矩阵求逆矩阵逆充分必条件(|A| 0)矩阵矩阵法运算行列式求值方法等样复量C语言里关数组重概念维数组动态分配问题数组指针关系等
记学期新开设单片机基础课吴涛老师次强调定常锻炼编程力常说:编程思维体操方面力


实力非常限远远班学通次课程设计充分体会句话精华
电脑程序作体脑思维延伸程序功会脑思维断完善变更加强决定加强方面锻炼学激励断前进


八 参考文献


数结构(C语言版) 严蔚敏吴伟民 编著 清华学出版社
C语言程序设计 洪维恩 编著 中国铁道出版社
C语言程序设计教程 谭浩强 张基温 唐永炎 编著 高等教育出版社
工程数学——线性代数 第四版 济学应数学系 编 高等教育出版社






200712
文档香网(httpswwwxiangdangnet)户传


《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 4 香币 [ 分享文档获得香币 ]

购买文档

相关文档

数据结构和算法课程设计题目

XX大学课程设计课程名称: 数 据 结 构 与 算 法院(部)名 称: 信息与计算科学学院组长姓名学号 同组人员姓名指导教师姓名: 设 计 时 间: 2010.6.7----2009.6.27一、《数据结构与算法》课程设计参考题目(一)参考题目一(每位同学选作一个,同组人员

文***品 11个月前 上传378   0

数据结构课程设计报告最小生成树Kruskal算法

计算机科学与技术系课程设计报告 2014-2015学年第二学期课程数据结构课程设计名称Kruskal算法求最小生成树学生姓名 学号 专业班级 软件工程指导教师 2014年X月题目:设计程序完成如下功能:对给定过的网和起点,用kruskal算法的基本思想求解其所有的最小生成树1、问题分析和任务定义根据课设题目要求,拟将整体程序分为三大模块

文***品 1年前 上传204   0

哈夫曼树应用数据结构课程设计报告

数据结构课程设计报告设计题目:哈夫曼树应用 专 业 : 软件工程 班 级 : 软件 学 生 : 学 号 : 指导教师 : 起止时间 :2011-07-04—2011-07

文***品 2年前 上传468   0

数据结构课程设计报告——图书管理系统

课程设计报告 课设课题: 课程设计——图书管理系统 学 院: 电 子 信 息 学 院 专 业: 网 络 工 程 姓 名: 班级学号: 指导教师:

文***享 3年前 上传681   0

车牌号管理系统数据结构课程设计报告

XX 学 院 计算机工程学院课程设计报告设计名称: 数据结构课程设计 选题名称: 车牌号管理系统 姓 名: 学 号: 专业班级: 软件工程 系 (院): 计算机工程学院

文***享 3年前 上传429   0

数据结构实习报告

数据结构实习报告  一、需求分析1、  程序所实现的功能;2、  程序的输入,包含输入的数据格式和说明;3、  程序的输出,程序输出的形式;4、  测试数据,如果程序输入的数据量比较大,需要给出测试数据;5、  合作人及其分工二、设计说明1、  主要的数据结构设计说明;2、  程序的主要流程图;3、  程序的主要模块,要求对主要流程图中出现的模块进行说明4、  程序的主要函数及其伪代码说明

s***n 8年前 上传1041   0

数据结构(C语言版)课程设计报告表达式求值说明书

XX大学数据结构课程设计说明书题目: 表达式求值 院 系: 计算机科学与工程学院 专业班级: 计算机班 学 号: 学生姓名: 指导教师:  2013年 X 月X 日

文***享 3年前 上传536   0

数据结构课程设计报告多关键字排序高考排序

XX工 学 院 计算机工程学院课程设计报告设计名称: 数据结构课程设计 选题名称: 多关键字排序 姓 名: 学 号: 专业班级: 网络工程 系 (院): 计算机工程学院

文***享 6个月前 上传185   0

算法与数据结构的商品货架管理课程设计报告(还有程序源代码)

课程设计课 程: 算法与数据结构 题 目: 商品货架管理 专 业: 计算机类 班 级: 座 号: 姓 名: 2012年 X月 X 日一、要解决的问题商店货架以栈

文***品 1年前 上传322   0

设计散列表实现电话号码查找系统数据结构课程设计

XX学院课程设计报告书专 业:计算机科学与技术 课程设计名称:《数据结构课程设计》题 目:设计散列表实现电话号码查找系统班 级: 学    号: 姓    名: 同 组 人 员: 无指 导 老 师: 完 成 时 间: 摘要电话号码的查找系统软件是现在很实用工具,随着时代的发展,信息化得发

文***品 2年前 上传579   0

高校教材管理系统数据结构课程设计

数据结构课程设计题 目: 高校教材管理系统 课 程 设 计 任 务 书一、课程设计题目: 高校教材管理系统 二、课程设计应解决的主要问题: (1) 实现出版社、教材类型等的管理

文***品 3年前 上传775   0

数据结构文本编辑器课程设计

数据结构课程设计报告一. 需求分析1.题目及要求名称:简单的文本编辑器内容:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行。要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一字符或者子串,并将后面的字符前移。

文***享 1年前 上传300   0

数据结构课程设计图的建立与输出

数据结构课程设计设计题目:图的建立与输出系 别: 电子与信息工程学院 专 业: 电子信息工程 班 级: 级班 姓 名: 学 号: 指导教师:

文***享 6个月前 上传175   0

关于数据结构课程设计心得体会范文

关于数据结构课程设计心得体会范文   关于数据结构课程设计心得体会(1)   这学期开始两周时间是我们自己选题上机的时间, 这学期开始两周时间是我们自己选题上机的时间,虽然 上机时间只有短短两个星期但从中确实学到了不少知识。 上机时间只有短短两个星期但从中确实学到了不少知识。   数据结构可以说是计算机里一门基础课程, 据结构可以说是计算机里一门基础课程,但我觉得我们一低 计算机里一门

焦***宝 5年前 上传1416   0

数据结构课程设计舞伴配对程序

沈阳航空航天大学课 程 设 计 报 告课程设计名称:数据结构课程设计课程设计题目:舞伴配对程序院(系):计算机学院专 业:计算机科学与技术班 级: 学 号:姓 名:指导教师:完成日期:2014年目 录第1章 概要设计 11.1题目的内容与要求 11.2总体结构 2第2章 详细设计 32.1主函数的流程图 32.

文***享 1年前 上传285   0

数据结构课程设计运动会分数统计(C语言版)

数据结构课程设计运动会分数统计(C语言版)目 录第一章 绪 论 1 1.1 运动会分数统计系统的背景 1 1.2 运动会分数统计系统的任务和目标 1第二章 运动会分数统计系统的需求分析 2 2.1 功能需求 2 2.2 功能模块 2 2.3 数据要求 3 2.4 性能要求 3第三章 系统开发工具及关键技术 4 3.1 系统开

文***品 3年前 上传638   0

数据结构实验报告

实验报告课程:数据结构 班级:网络工程 学号: 姓名: 实验1 链表的插入和删除一、实验目的 1、 了解单链表、循环链表和双链表的基本知识;2、 掌握算法思想和数据结构的描述;3、 掌握链表的插入、删除的相关语句及基本方法。二、 实验步骤

z***u 2年前 上传331   0

数据结构实践报告

 数据结构实践报告学 号: 姓 名: 班 级: 班 指导老师: 时 间: 2016-12-21

文***享 1年前 上传586   0

环保“四维矩阵”监管模式

创新工作机制促进投诉受理工作再上新台阶 环保“四维矩阵”监管模式  近年来,**区经济社会迎来了又一轮的飞速发展,人民群众对周边环境的关心也日益增强,随之而来暴露出的环保问题亦是越来越多,这对**区的环境保护提出了更高的要求和挑战。原有的工作机制和方法已远远不能满足现阶段人民群众对环保工作的需求。**区按照“信息化、智能化、一体化”的标准,创新实施了“四位矩阵”工作机制,有效促进了环保投诉受

n***8 11年前 上传11326   0

定点原码一位乘法器的设计课程设计

课 程 设 计 报 告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码一位乘法器的设计院(系):专 业:班 级:学 号:姓 名:指导教师:完成日期:目 录第1章 总体设计方案 11.1 设计原理 11.2 设计思路 21.3设计环境 3第2章 详细设计方案 52.1 顶层方案图的设计与实现 52.1.

文***品 1年前 上传310   0

数据结构实验报告《三、串及其应用》

数据结构实验报告- - - - 串及其应用之文学研究助手 专业班级: 电信班 时间:2011年X月X日数据结构实验报告- - - -

文***享 3年前 上传1301   0

第N份 项目进展报告

   第N份 项目进展报告 来自:http://www.chinaspis.com 作者:林锐 电子工业出版社出版发行   基本信息 项目名称   报告日期   项目编号   报告批次 第N份 项目经理   项目所处阶段   项目进展状况 计划 实际情况 任务与进度     工作成果     费用     人力资源    

1***9 9年前 上传2423   0

“3+N”多维成长课堂模式数学解读

“3+N”多维成长课堂教学模式是我校在高效课堂教学模式基础上,由中心校领导带领学校年轻教师一起独创的改进版教学模式,就是以最小的教学和学习投入获得最大学习效益的课堂。

天***9 2年前 上传606   0

第N份 质量保证报告

   第N份 质量保证报告 来自:http://www.chinaspis.com 作者:林锐 电子工业出版社出版发行 基本信息 项目名称   报告日期   质量保证员   报告批次 第N份 工作描述   参加人员   过程质量检查 受检查的过程域 检查结果             产品质量检查 受检查的工作成果 检查结果  

法***啦 14年前 上传26742   0

离散数学实验报告:建立关系矩阵实验

建立关系矩阵实验的目的是理解并掌握关系的矩阵表示方法、为用序偶集合表示的关系建立相应的关系矩阵。学会用所学过的程序设计语言编程,解决关系矩阵的自动建立问题。实验的内容是用二维数组或向量存储关系矩阵,根据输入的用序偶集合表示的关系,建立相应的关系矩阵。用建立二维数组的方法构造关系矩阵。

s***1 5年前 上传2226   0