C语言课程设计报告

发布 2022-10-03 02:59:28 阅读 4310

东南大学。课程名称: 计算机综合课程设计。

学院。设计题目: n阶方阵求逆

级别b学生姓名。

学号。同组学生。

学号。指导教师。

2023年 8月 29日。

1.课程设计任务书3

2.题目分析4

3.系统设计4

4.模块分析6

5.程序分析12

6.结果与分析18

7.总结20

8.参考文献21

1. 课程设计任务书。

1.功能简介。

求n阶矩阵的逆矩阵。

a) 输入一个n(n<256)阶方阵a,方程系数矩阵与向量均从文本文件读入;

b) 输出a的逆矩阵至文本文件;

c) 将得到的逆矩阵与矩阵a相乘,验证其结果是否为单位矩阵。

2.设计总体要求:

采用模块化程序设计;

鼓励可视化编程;

源程序中应有足够的注释;

学生可自行增加新功能模块(视情况可另外加分);

必须上机调试通过;

注重算法运用,优化存储效率与运算效率;

需提交源程序(含有注释)及相关文件(数据或数据库文件);

cpp文件、txt或dat文件等)

提交设计报告书。

2.题目分析。

n阶方阵求逆是一道线性代数中有关矩阵的题目,所以我们在编写程序之前,首先要先搞清楚矩阵与逆矩阵的关系,从而选择合适的编程方式,以尽可能的提升效率。

首先,我们都知道:设a为n阶方阵,如果存在n阶方阵b使得ab=ba=e,则称a是可逆的,并称b是a的逆矩阵;否则,便说a不可逆。此为逆矩阵的概念,并且逆矩阵是唯一的。

而求逆矩阵的方法也是多样化的,其中常用的有行初等变化法和求伴随矩阵法。而在平时我们大多数情况下都会选择行初等变换法,但我个人认为在编程时其并不好实现,在将右边添加的单位矩阵转移到左边时困难重重。而反观求伴随矩阵法,应用此方法的关键是求原矩阵的伴随矩阵和行列式的值,而求伴随矩阵则需要求原矩阵各元素对应的代数余子式,而求代数余子式的关键则是求原矩阵任意去掉第i行j列后剩余部分组成的新矩阵及其对应的行列式的值。

综上诉述,整个程序的核心就分成了两部分:求矩阵任意去掉第i行j列后剩余部分组成的新矩阵和求行列式的值。除此之外为了求伴随矩阵还需要用到令矩阵转置的程序,为了验证矩阵与其逆矩阵相乘后得到的是单位矩阵还需要用到矩阵相乘的程序。

同时,无论选择哪种方法我们都要实现从文本的输入输出,这一点只要掌握了相应的格式就易于实现,而选择求伴随矩阵法思路清晰且易于实现,所以在此次课程设计中我选择编写通过求伴随矩阵来求逆矩阵的程序。

3.系统设计。

1. 程序设计思路。

根据课程设计要求矩阵要从文本文件读入同时运行程序所得的逆矩阵也要输出至文本文件,所以要提供文件的输入和输出操作;为将得到的逆矩阵与原矩阵相乘从而验证其结果是否为单位矩阵,应提供矩阵相乘的操作;剩余的部分即为本课程设计的重点,求一个方阵的逆矩阵的操作。

流程图为开始。

从文本读入数组。

否a=0是。

向文本输出逆矩阵输出“矩阵不可逆“

结束。4.模块分析。

double hanglieshi(double a[n

int i,j,b,m;

double k,h=1.0;

for(m=0;m

if(m for(i=b+1;ik=a[i][b]/a[b][b];

for(j=0;ja[i][j]=a[i][j]-k*a[b][j];

for(i=0;i

return(h);

if(m==n)

return(0);

上述程序为定义的求行列式的函数,其主要利用for 循环通过初等行变换来将从主函数中读入的数组变换成相应的上三角的形式,我们都知道对于上三角形式的矩阵其对应的行列式的值就等于主对角线上的元素的乘积,。同时,此部分程序还担当着判断矩阵是否可逆的功能,在将数组转换成上三角形式时程序还在判断着是否有某一列的元素全为零,如果发现有某一列的元素全为零,则立刻跳出循环,并向外输出“无逆矩阵”的提示语言。

void xiangcheng(double a[n], double b[n

int i,j,m;

double c[n][n]=;

for(i=0;i for(j=0;jfor(m=0;mc[i][j]+=a[i][m]*b[m][j];

printfn");

printf("输出矩阵与其逆矩阵相乘的结果:");

for(i=0;i

上述程序为定义的求矩阵相乘的函数并向外输出矩阵相乘的结果。其根据矩阵相乘的概念利用for循环来实现矩阵相乘的目的。

下述程序为定义的主函数,由于此部分程序较为复杂,所以将直接在程序中对各部分逐一进行解释。

void main() 定义主函数。

int i,j,m,d定义整型变量i,j,m,d用于循环运算。

double a[n][n],b[n-1][n-1]=,c[n][n]=,k,t,y[n][n]=;

/定义原数组a[n][n] ,去掉第i行j列后的数组b[n-1][n-1],原矩阵的逆矩阵c[n][n],辅助矩阵y[n][n],辅助变量k,t。

c语言课程设计报告 课程设计报告

周口师范学院。课程设计报告。院 系 计算机科学与技术学院 班级。学生姓名学号。设计题目 职工工资管理系统。完成日期 年月日 课程设计任务书。设计题目 工资管理系统 教研室主任指导教师 年月日。摘要11设计内容 任务及具体要求2 1.1设计内容2 1.2设计任务及具体要求2 2概要设计3 2.1该系统...

C语言课程设计报告

华中科技大学计算机科学与技术学院。题目 专业 班级 学号 姓名 成绩 指导教师 完成日期 2016年月日。目录。一 系统需求分析 1 二 总体设计 2 三 数据结构设计 3 四 详细设计 4 五 系统实现 5 六 运行测试与结果分析 6 七 总结 7 八 参考文献 8 九 指导教师评语 9 对所要解...

C语言课程设计报告

c语言。课程设计。商业销售管理系统。学号 121407210 姓名 宋军。班级 软件1202 指导老师 邹姝稚。成绩 2013年6月。一 任务描述。编写一个商品销售管理系统,是其能够拥有商品买卖和库存管理功能。在顾客选购时,需给出输入商品名称,或商品型号,或选择列表进而输入商品编号三种选择,在顾客选...