在有色金属、交通运输、化学化工、航空航天、金融工程、生物医学等许多领域,经常会遇到各种各样的计算问题。例如,求解具有几十个变量的线性或非线性方程组、求解复杂的微分方程,这些问题高度复杂,计算量很大,往往没有办法求得理论解。随着计算机技术的发展,人们可以有效地解决这类问题,由此诞生了一门新兴交叉学科—科学计算,它成为继理论研究和科学实验之后的第三种科学研究方法。
科学计算是研究工程技术问题以及其他应用问题的近似求解方法,并在计算机上进行编程实现的一门课程,它既有数学理论上的抽象性和严谨性,又有程序设计技术上的实用性和实践性。20世纪80年代以来,MATLAB等科学计算软件的产生,使得科学计算问题的实现变得十分方便、高效。
MATLAB代表了当今国际科学计算软件的先进水平,它将数值计算、符号计算、图形处理、系统仿真和程序流程控制等功能集成在统一的系统环境中,已发展成为适合多学科、广泛应用于科学研究和工程技术领域的程序设计语言。使用MATLAB作为计算工具,人们不需关注各种数值计算方法的具体细节和计算公式,也不需要繁琐的底层编程,从而可以专注于实际问题的分析和设计,大大提高工作效率和质量,为科学研究与工程应用提供重要手段。在高等学校,MATLAB已经成为许多课程的基本计算工具,颇受广大大学生、研究生的青睐。
本课程主要介绍科学计算问题的MATLAB实现方法,包括MATLAB基础知识、MATLAB矩阵处理、MATLAB程序流程控制、MATLAB绘图、数据分析与多项式计算、数值微积分与方程求解、MATLAB符号计算、MATLAB图形用户界面设计、Simulink系统仿真和外部程序接口共10个学习专题。
在学完本课程后,希望大家能理解MATLAB功能实现的数学背景与算法原理,掌握利用MATLAB进行问题求解的基本规律,能够使用MATLAB作为专业应用的工具,能从繁杂的计算事务中解放出来,促进计算机和专业应用的结合,促进计算机应用水平的提高和对专业知识的掌握。
校内课程考核要求:
(1)过程考核占总成绩的50%。
过程考核包括线上学习过程考核和线下学习过程考核,各占过程考核的50%。
线上学习过程考核要求按中国大学MOOC平台课程考核要求完成学习过程并取得成绩。要求每位同学在MOOC讨论区至少提6个和课程内容相关的问题。
线下学习过程考核包括线下大作业(占过程考核的20%)、线下操作考试(占过程考核的20%)、线下考勤及课程参与度(占过程考核的10%)。
(2)线下期末笔试占总成绩的50%。
开卷考试,考试时只能携带一本正式出版的相关教材进入考场,不能夹带其他资料。
中国大学MOOC平台课程考核要求:
MOOC课程考试采用百分制,其中单元测验和单元作业各占30%(单元作业采用学生互评的方式),MOOC课程考试占40%。总评成绩达到60分但低于85分的同学可以获得合格证书,总评成绩在85分及以上的同学可以获得优秀证书。
(1)每个视频后的随堂测试没有提交时间的限制,也不计入课程成绩。
(2)单元作业在完成并提交后需要同学们互评,只有成功提交自己的作业后,才能参与作业互评。设置的作业互评最少份数为5份,如果未参与互评将给与所得分数的70%,未完成互评将给与所得分数的80%,全部完成互评将给与所得分数的100%。
序 号 | 专 题 | 主要教学内容 |
1 | 专题〇 初识MATLAB | |
课程导入 | 什么是计算?什么是科学计算?科学计算与MATLAB的关系?MATLAB功能演示;课程学习目标与内容 | |
专题一 MATLAB基础知识 | ||
1.1 MATLAB系统环境 | MATLAB操作界面;文件搜索路径 | |
1.2 MATLAB数值数据 | MATLAB数据类型;输出格式;常用数学函数 | |
1.3 变量及其操作 | 变量与赋值语句;预定义变量;变量的管理 | |
1.4 MATLAB矩阵的表示 | 矩阵的建立;冒号表达式;结构矩阵和单元矩阵 | |
1.5 矩阵元素的引用 | 矩阵元素的引用方式;子矩阵;删除矩阵的元素;改变矩阵的形状 | |
1.6 MATLAB基本运算 | 算术运算;关系运算;逻辑运算 | |
1.7 字符串处理 | 字符串的表示;字符串处理函数;字符串应用举例 | |
2 | 专题二 MATLAB矩阵处理 | |
2.1 特殊矩阵 | 通用特殊矩阵;学科性特殊矩阵 | |
2.2 矩阵变换 | 对角阵与三角阵;矩阵的转置与旋转;矩阵求逆 | |
2.3 矩阵求值 | 方阵的行列式;矩阵的秩与迹;向量和矩阵的范数;矩阵的条件数 | |
2.4 矩阵的特征值与特征向量 | 特征值与特征向量的概念;求特征值与特征向量;特征值的几何意义 | |
2.5 稀疏矩阵 | 矩阵的存储方式;稀疏存储方式的产生;稀疏矩阵应用举例 | |
3 | 专题三 MATLAB程序流程控制 | |
3.1 顺序结构程序 | 程序和程序设计;程序的三种基本结构;脚本文件和函数文件;顺序结构;顺序结构程序举例 | |
3.2 用if语句实现选择结构 | 什么是选择结构;if语句的格式与执行过程;程序举例 | |
3.3 用switch语句实现选择结构 | switch语句的格式与执行过程;程序举例 | |
3.4 用for语句实现循环结构 | 什么是循环结构;for语句的格式与执行过程;采用向量化运算对程序进行优化;程序举例(计算π的三种方法) | |
3.5 用while语句实现循环结构 | while语句的格式与执行过程; break和continue语句;循环的嵌套 | |
3.6 函数文件的定义与调用 | 函数文件的定义与调用;匿名函数;程序举例 | |
3.7 函数的递归调用 | 递归函数的概念;调用过程;应用举例 | |
3.8 函数参数与变量的作用域 | 函数参数的可调性;全局变量与局部变量 | |
4 | 专题四 MATLAB绘图 | |
4.1 二维曲线 | plot函数;fplot函数 | |
4.2 绘制图形的辅助操作 | 图形标注;坐标控制;图形保持;图形窗口的分割 | |
4.3 其他形式的二维曲线 | 其他坐标图形;统计图;矢量图形 | |
4.4 三维曲线 | plot3函数;fplot3函数 | |
4.5 三维曲面 | 三维数据的生成;绘制三维曲面的方法 | |
4.6 图形修饰处理 | 视点处理;色彩处理;裁剪处理 | |
4.7 交互式绘图工具 | 绘图工具的使用 | |
5 | 专题五 数据分析与多项式计算 | |
5.1 数据统计分析 | 最大值和最小值;求和与求积;平均值和中值;累加和与累乘积;标准方差与相关系数;排序 | |
5.2 多项式计算 | 多项式的四则运算;多项式的导函数;多项式的求值;多项式的求根 | |
5.3 数据插值 | 数据插值的概念与原理;插值函数;实例(机翼的加工问题,粮储仓的通风问题) | |
5.4 数据插值应用举例 | 机动车刹车距离问题;沙盘制作问题 | |
5.5 曲线拟合 | 曲线拟合的概念与最小二乘原理;相关函数;实例(人口预测问题,家庭收入与储蓄关系问题) | |
5.6 曲线拟合应用举例 | 股票预测问题;算法的参数优化问题 | |
6 | 专题六 数值微积分与方程求解 | |
6.1 数值微分与数值积分 | 数值微积分基本原理;数值积分实现方法;应用举例 | |
6.2 线性方程组求解 | 线性方程组的直接解法;线性方程组的迭代解法 | |
6.3 线性方程组应用举例 | 平面桁架结构受力分析的问题;小行星运行轨道计算问题 | |
6.4 非线性方程求解与函数极值计算 | 单变量非线性方程求解;非线性方程组求解;函数极值计算;实例(仓库选址问题) | |
6.5 常微分方程数值求解 | 一般概念;求解函数;刚性问题 | |
6.6 常微分方程应用举例 | 洛特卡-沃尔泰拉(Lotka-Volterra)模型的分析与求解 | |
7 | 专题七 MATLAB符号计算 | |
7.1 符号对象 | 建立符号对象;符号对象的运算;符号矩阵 | |
7.2 符号微积分 | 符号极限;符号导数;符号积分 | |
7.3 级数 | 级数符号求和;函数的泰勒级数 | |
7.4 符号方程求解 | 符号代数方程求解;符号常微分方程求解 | |
8 | 专题八 MATLAB图形用户界面设计 | |
8.1 图形窗口与坐标轴 | 图形对象的句柄;图形对象的属性;图形窗口的操作;坐标轴的操作 | |
8.2 曲线与曲面对象 | 曲线对象;曲面对象;光照处理;图形对象的反射特性 | |
8.3 图形用户界面设计方法 | 图形用户界面的组成;控件对象及其操作;菜单对象及其操作 | |
8.4 用户界面设计工具 | 图形界面设计窗口;图形用户界面设计工具;定义回调函数 | |
8.5 APP设计工具 | App Designer的使用;App组件;App程序 | |
8.6 图形用户界面应用举例 | GUIDE设计实例;App Designer实例 | |
9 | 专题九 Simulink系统仿真 | |
9.1 Simulink仿真基础 | Simulink的启动;系统仿真模型的创建;仿真参数的设置 | |
9.2 子系统的创建与封装 | 子系统的创建;子系统的封装;子系统的条件执行 | |
9.3 S函数的设计与应用 | 什么叫S函数;用M文件编写S函数的方法;在仿真模型中使用S函数的方法 | |
9.4 Simulink仿真应用举例 | 蹦极跳(Bungee Jumping)系统的建模与仿真 | |
10 | 专题十 外部程序接口 | |
10.1 在Excel中使用MATLAB | 在Excel中使用MATLAB的方法 | |
10.2 MATLAB文件操作 | 文件的概念;文件操作函数;文件操作举例 | |
10.3 在其他语言程序中读写MATLAB的数据文件 | MAT文件的概念;C++程序中MAT文件的基本操作;mxArray对象;生成应用程序并运行 | |
10.4 在MATLAB中调用其他语言编写的程序 | MEX库函数;MEX文件源程序的构成;MEX文件的编译 | |
10.5 在其他语言程序中调用MATLAB函数 | MATLAB引擎的概念、使用、编译与运行 | |
11 | 课程考试 |
高等数学,线性代数
刘卫国主编,MATLAB程序设计与应用(第3版),ISBN 978-7-04-047813-6,普通高等教育“十一五”国家级规划教材,教育部大学计算机课程改革项目规划教材,湖南省普通高等学校优秀教材,高等教育出版社,2017年8月
(教材中有许多微视频,直接扫描二维码即可观看,还有大量练习题和操作题可供学习过程中使用)
Q1:本课程的适用对象有哪些?
A1:本课程作为高等学校信息技术系列课程,适合理、工、农、医、经济管理等专业本科生和研究生学习。中南大学从2000年开始开设该课程,在历次人才培养方案制定中,很多学院开设了该课程。此外,本课程也适用于广大工程技术人员、科学研究工作者学习参考。
Q2:MATLAB也算一门程序设计语言吗?
A2:当然算,因为MATLAB具备程序设计语言的基本特征,能实现程序流程控制。但MATLAB语言又有别于传统意义上的程序设计语言,它出现的初衷是为了做矩阵运算,因此我们更愿意将MATLAB作为一种科学计算软件推荐给大家。MATLAB主要还是在学科应用层面使用,而且具备和学科应用结合的天然优势,所以本课程是助力“新工科”建设的重要课程(但MATLAB的应用范围绝不限于“工科”)。
Q3:本课程使用哪个MATLAB版本?
A3:本课程使用MATLAB R2016a,但不妨碍大家使用别的版本,因为在不同版本中大部分功能是一样的。大家也要注意不同MATLAB版本的差异,在实际操作时会因所使用的版本不同而使得有些函数或功能不完全相同或不能使用。例如,MATLAB R2016b/R2017b版本中没有eigshow函数,fplot、fplot3函数的用法跟MATLAB版本有关,等等。在实际操作中,可以借助于MATLAB的帮助信息分析不同版本的差异。
Q4:学习本课程是否需要先学习计算机程序设计?
A4:没有此要求,但如果具有高等数学、线性代数方面的基本知识对本课程的学习是有帮助的。
Q5:本课程的教学内容是如何组织的?
A5:本课程主要从算法实现角度组织课程内容,介绍利用MATLAB语言进行科学计算的方法(其实,我们讲MATLAB的应用,会涉及科学计算,但已远远超过科学计算的范畴)。本课程也介绍算法的基本思想,但和数学上的出发点是不同的,数学上介绍算法的构造、完成公式推导、分析算法性能(证明收敛性、分析误差等),本课程讲计算原理是为了更好地理解MATLAB的实现机理,更好地应用MATLAB解决实际问题,让大家既懂科学计算,又能做科学计算。