矩阵操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

淮阴工学院

C++程序设计课程设计报告

选题名称:矩阵操作

系(院):计算机工程系

专业:计算机科学与技术(信息安全方向)班级: *********

姓名: ****** 学号: ********** 指导教师:于永彦

学年学期:2007 ~ 2008 学年第 2 学期二〇〇八年六月十四日

设计任务书

指导教师(签章):

年月日

1

摘要:

编写代码,实现矩阵的翻转功能、卷动功能和旋转功能。运行程序后,随机生成一个元素为三位正整数的5×5矩阵。矩阵翻转,本课程设计只考虑沿中心轴翻转(或垂直翻转或水平翻转)。矩阵翻转的实质是,矩阵的每行(或每列)元素进行倒序排放。矩阵卷动涉及两个问题:(1)卷动的方向(或左右卷动,或上下卷动);(2)卷动幅度,如上下卷动行数,左右卷动列数。矩阵卷动的实质是将某行或某列元素循环移位。上下卷动时,是将每列元素循环移位,左右卷动时,是将每行元素循环移位,卷动方向决定是左移还是右移。矩阵旋转(绕中心点)涉及两个方面:(1)旋转方向,顺时针还是逆时针;(2)旋转角度,如90°、180°、270°、360°等。矩阵旋转的实质是数组元素的重新组合,对应交换元素值。因此关键是某圈元素的旋转、交换。

关键词:行数;列数;幅度;角度;翻转;卷动;旋转

2

目录

摘要 (2)

1课题综述 (4)

1.1课题的来源及意义 (4)

1.2 预期目标 (4)

1.3 面对的问题 (5)

1.4 需要解决的关键技术 (5)

2 系统分析 (5)

2.1 涉及的知识基础 (5)

2.2 解决问题的基本思路 (7)

2.3 总体方案 (8)

2.4 功能模块框图 (8)

3 系统设计 (9)

3.1 算法描述 (9)

3.2 实现方法 (9)

3.3 详细流程图 (9)

4 代码编写 (11)

4.1 矩阵翻转 (11)

4.2 矩阵卷动 (12)

4.3 矩阵旋转 (14)

5 程序调试 (15)

6 运行结果与测试 (15)

6.1 矩阵翻转 (15)

6.2 矩阵卷动 (16)

6.3 矩阵旋转 (16)

6.4 退出程序 (17)

7 总结与展望 (18)

总结 (19)

致谢 (20)

参考文献 (21)

附录 (22)

3

1课题综述

矩阵的研究历史悠久,拉丁方阵和幻方在史前年代已有人研究。作为解决线性方程的工具,矩阵也有不短的历史。1693年,微积分的发现者之一戈特弗里德·威廉·莱布尼茨建立了行列式论(theory of determinants)。1750年,加布里尔·克拉默其后又定下了克拉默法则。1800年代,高斯和威廉·若尔当建立了高斯—若尔当消去法。1848年詹姆斯·约瑟夫·西尔维斯特首先创出matrix一词。研究过矩阵论的著名数学家有凯莱、威廉·卢云·哈密顿、格拉斯曼、弗罗贝尼乌斯和冯·诺伊曼。

1.1课题的来源及意义

矩阵就是由方程组的系数及常数所构成的方阵。把用在解线性方程组上既方便,又直观。例如对于方程组

A1X+B1Y+C1Z=D1

A2X+B2X+C2Z=D2

A3X+B3Y+C3Z=D3

来说,我们可以构成两个矩阵:

A1 B1 C1A1 B1 C1 D1

A2 B2 C2A2 B2 C2 D2

A3 B3 C3A3 B3 C3 D3

因为这些数字是有规则地排列在一起,形状像矩形,所以数学家们称之为矩阵,通过矩阵的变化,就可以得出方程组的解来。数学上,一个m×n矩阵乃一m行n列的矩形阵列。矩阵由数组成,或更一般的,由某环中元素组成。矩阵常见于线性代数、线性规划、统计分析,以及组合数学等。

1.2 预期目标

编写代码,实现矩阵翻转、卷动和旋转。运行程序后,随机生成一个元素为三位正整数数的5×5矩阵,并显示下面的参考界面:

4

选择一个菜单后,要求输入操作的方向、行数或列数或角度,输入后,显示操作结果。

1.3 面对的问题

怎样在一个函数中实现矩阵垂直翻转和水平翻转?怎样实现矩阵左右卷动,上下卷动和设置矩阵卷动幅度?矩阵顺时针旋转和逆时针之间有什么样的联系,以及各旋转度数之间的联系?

1.4 需要解决的关键技术

编写一个函数实现矩阵90°旋转,然后多次调用这个函数实现矩阵的180°、270°、360°转转。逆时针旋转可以看作为“过度”旋转,如逆时针旋转90°,可以认为是顺时针旋转270°。

2 系统分析

2.1 涉及的知识基础

2.1.1if语句

if语句的基本形式可分为两种:

(1)if (表达式) 语句

其执行过程是:首先计算表达式的值,若不为0,条件判断为真,则执行()后面的语句,否则,if语句中止执行,即不执行()后面的语句。

(2)if(表达式)语句1

else 语句2

其执行过程是:首先计算表达式的值,若不为0,条件判断为真,则执行()后面的语句,否则执行语句2。

5

if语句中的任何一个子句可以是任意可执行语句,当然也可以是一条if语句,这种情况称为if语句嵌套。当出现if语句的嵌套时,不管书写格式如何,else

格式都将与它前面最靠近的未曾配对的if语句相配对,构成一条完整的if语句。它的格式为:

if(表达式1) 语句1;

else if (表达式2)语句2;

……

else if (表达式n)语句n;

else 语句n+1;

2.1.2 for语句

这种循环语句不仅用于循环次数已知的情况,还能用于循环次数预先不能确定只给出循环结束条件的情况下。

for 语句的一般形式:

for (表达式1;表达式2;表达式3)

{

语句;//循环体

}

其执行的过程有以下几个步骤:

第一步:求解表达式1;

第二步:求解表达式2,若其值为真,则执行for语句中指定的循环体语句,然后执行下面的第三步。若为假,则结束循环,转到第五步;

第三步:求解表达式3;

第四步:转回上面第二步继续执行;

第五步:循环结束,执行for语句后面的其他语句。

从执行流程来看,for语句属于先判断类型。For语句中的三个表达式都是包含逗号表达式在内的任意表达式。for语句中的三个表达式可部分或全部省略,但两个分号不能省略。

2.1.3 数组

数组是一种顺序容器,是由但一类型元素组成的一个有序集合。数组是一种

6

相关文档
最新文档