没有合适的资源?快使用搜索试试~ 我知道了~
数据结构实验,学生课程设计
资源详情
资源评论
资源推荐
一、 具体任务
功能:
设计一个矩阵相乘的程序,首先从键盘输入两个矩阵 a,b 的内容,并
输出两个矩阵,输出 ab
-
1
结果。
分步实施:
1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个
数;
2.完成最低要求:建立一个文件,可完成 2 维矩阵的情况;
3.进一步要求:通过键盘输入维数 n。有兴趣的同学可以自己扩充系统
功能。
要求:
1.界面友好,函数功能要划分好
2.总体设计应画一流程图
3.程序要加必要的注释
4.要提供程序测试方案
5.程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能
运行的程序是没有价值的。
二、 软件环境
Microsoft Visual C++ 6.0
三、 问题的需求分析
程序以二维数组作为矩阵的存储结构,通过键盘输入矩阵维数 n,动态
分配内存空间,创建 n 维矩阵。矩阵建立后再通过键盘输入矩阵的各个元
素值;也可以通过文件读入矩阵的各项数据(维数及各元素值)。
当要对矩阵作进一步操作(A*B 或 A*B^(-1))时,先判断内存中是否
已经有相关的数据存在,若还未有数据存在则提示用户先输入相关数据。
当要对矩阵进行求逆时,先利用矩阵可逆的充要条件:|A| != 0 判断矩
阵是否可逆,若矩阵的行列式 |A| = = 0 则提示该矩阵为不可逆的;若 |A| !
=0 则求其逆矩阵,并在终端显示其逆矩阵。
四、 算法设计思想及流程图
1
1.抽象数据类型
ADT MatrixMulti{
数据对象:D = {a(I,j)|i = 1,2,3,…,n;j = 1,2,
…,n;a(i,j)∈ElemSet,n 为矩阵维数}
数据关系: R = {Row,Col}
Row = {<a(i,j),a(i,j+1)>| 1 <= i <= n , 1 <= j <=
n-1}
Col = {<a(i,j),a(i+1,j)>| 1 <= i <= n-1 , 1 <= j <=
n}
基本操作:
Swap(&a,&b);
初始条件:记录 a,b 已存在。
操作结果:交换记录 a,b 的值。
CreateMatrix(n);
操作结果:创建 n 维矩阵,返回该矩阵。
Input(&M);
初始条件:矩阵 M 已存在。
操作结果:从终端读入矩阵 M 的各个元素值。
Print(&M)
初始条件:矩阵 M 已存在。
操作结果:在终端显示矩阵 M 的各个元素值。
ReadFromFile();
操作结果:从文件读入矩阵的相关数据。
Menu_Select();
操作结果:返回菜单选项。
MultMatrix(&M1,&M2,&R);
初始条件:矩阵 M1,M2,R 已存在。
操作结果:矩阵 M1,M2 作乘法运算,结果放在 R 中。
DinV(&M,&V);
初始条件:矩阵 M,V 已存在。
操作结果:求矩阵 M 的逆矩阵,结果放入矩阵 V 中。
MatrixDeterm(&M,n);
初始条件:矩阵 M 已存在。
操作结果:求矩阵 M 的行列式的值。
} ADT MatrixMulti
2.矩阵求逆算法设计思想
2
算法采用高斯-约旦法(全选主元)求逆,主要思想如下:
首先,对于 k 从 0 到 n-1 作如下几步:
1 从第 k 行、第 k 列开始的右下角子阵中选取绝对值最大的元素,
并记住此元素所在的行号与列号,再通过行交换和列交换将它
交换到主元素位置上。这一步称为全选主元。
2 主元求倒:M(k,k) = 1 / M(k,k)
3 M(k,j) = M(k,j) * M(k,k);j = 0,1,…,n-1;j != k
4 M(i,j) = M(i,j) – M(i,k) * M(k,j);i,j = 0,1,…,n-1;i,j!=k
5 M(i,k) = - M(i,k) * M(k,k),i = 0,1…,n-1;i != k
最后,根据在全选主元过程中所记录的行、列交换的信息进行恢复,恢复
原则如下:
在全选主元过程中,先交换的行(列)后进行恢复;原来的行(列)交换
用列(行)交换来恢复。
3.矩阵行列式求值运算算法设计思想
利用行列式的性质:行列式等于它的任一行(列)各元素与其对应的代数
余子式乘积,即
D = ∑a(i,k)*A(i,k) ; k = 1,2,…,n;
D = ∑a(k,j)*A(k,j) ; k = 1,2,…,n;
再利用函数的递归调用法实现求其值。
4.各函数间的调用关系
3
5.流程图
Main()
ReadFromFile()
DinV()
Swap ()
Print()
Menu_Select()
MatrixDeterm()
CreateMatrix()
MultMatrix()
Input()
4
剩余19页未读,继续阅读
lixue22
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0