390 likes | 558 Views
第 2 章 MATLAB 语言概述. 东北大学信息学院 薛定宇. 数学建模问题及数学语言工具. 可以分为两个单独的问题 如何从给出的用语言描述的问题建立起其数学描述(即数学模型) 如何得出数学模型的解 数学模型的求解需要计算机工具 MATLAB 为首选 学会 MATLAB 语言,一般编程和使用方法 学会各个分支数学问题的计算机求解 灵活运用 MATLAB 解决遇到的问题 计算机仿真问题求解( Simulink ). 参考阅读建议. 薛定宇、陈阳泉,高等应用数学问题的 MATLAB 求解, 2004, 2008 ,清华大学出版社 (数学分支覆盖全面),英文版
E N D
第2章MATLAB语言概述 东北大学信息学院 薛定宇 数学建模课程模板 东北大学信息学院
数学建模问题及数学语言工具 • 可以分为两个单独的问题 • 如何从给出的用语言描述的问题建立起其数学描述(即数学模型) • 如何得出数学模型的解 • 数学模型的求解需要计算机工具 • MATLAB为首选 • 学会MATLAB语言,一般编程和使用方法 • 学会各个分支数学问题的计算机求解 • 灵活运用MATLAB解决遇到的问题 • 计算机仿真问题求解(Simulink) 数学建模课程模板 东北大学信息学院
参考阅读建议 • 薛定宇、陈阳泉,高等应用数学问题的MATLAB求解,2004, 2008,清华大学出版社 (数学分支覆盖全面),英文版 • 张志涌,精通MATLAB 6.5,北京航空航天大学出版社,2003 (编程介绍深入) • 陈怀琛,MATLAB及其在理工课程中的应用指南,2000,2004,西安电子科技大学出版社 (在相关课程问题的覆盖面全) 数学建模课程模板 东北大学信息学院
内容提要 • MATLAB语言简介 • MATLAB编程基础 • MATLAB变量的基本运算 • MATLAB语言基本程序结构 • MATLAB语言与可视化 • MATLAB应用演示 数学建模课程模板 东北大学信息学院
2.1 MATLAB 语言简介 • MATLAB是当今国际上三大数学语言之一,是科学技术领域事实上的通用计算机语言 • 语句集成度高,使用灵活 • 易于入门、程序易于调试、跨平台 • 可视化(图形表示)功能强大 • 几乎适用于所有应用数学与工程分支 • 强大的计算机仿真功能 数学建模课程模板 东北大学信息学院
其他“高级”语言(如C)的局限性 • 语句繁杂 • 没有基本数学运算求解工具 • 程序冗长,容易出错,得出结果难以令人相信 • 各种各样的隐患 • 结果可视化效果不佳 数学建模课程模板 东北大学信息学院
例1 矩阵特征值求解 • 用数学库EISPACK • 用MATLAB: eig(A) 数学建模课程模板 东北大学信息学院
例2 可能的隐患 Fibonacci数列 • 数学描述 • C语言实现 • 存在问题:数据结构的预定义 • MATLAB实现 数学建模课程模板 东北大学信息学院
2.2 MATLAB编程基础 • 变量与常量 • 数据结构 • 基本语句结构 • 语句流程 • 程序结构 • 程序调试 数学建模课程模板 东北大学信息学院
2.2.1 变量与常量 • 变量名由字母开头,后面可跟其他字母、数字和下划线 • MATLAB变量名区分大小写 • MATLAB保留的变量名为常量,如pi,i,j,eps,Inf 和 NaN • 常量内容可改写,但应该慎重,必要时需要重新定义 i=sqrt(-1) 数学建模课程模板 东北大学信息学院
2.2.2 数据结构 • 和科学计算相关的主要有两种: • 双精度数组 (矩阵为最主要形式,用于数值运算,可以为复数矩阵;还可以直接定义出向量、标量等) • 符号变量 (用于公式推导和解析解求解) • 其他数据类型 • 单精度变量、整型变量等数值型变量 • 字符串、多维数组、结构体、类与对象等 数学建模课程模板 东北大学信息学院
双精度数据结构 • 矩阵的表示 • 矩阵简单分析 F=inv(A) • 复数矩阵的表示 数学建模课程模板 东北大学信息学院
特殊矩阵的输入 • 单位矩阵 A=eye(m,n) • 零矩阵 A=zeros(n,m) • 对角矩阵 A=diag([1,3,5,7,2]) • 均匀分布随机数矩阵 A=rand(n,m) • 多项式 按照降幂排列输入系数向量 p=[1 2 3 4 0 5] • 伴随矩阵 A=compan(p) 数学建模课程模板 东北大学信息学院
符号变量定义与处理 • 和数值型不一样,可以用于公式推导 • 定义方法 syms A B C syms A B positive 还有real,nonzero等选项 • 转换方法,用于精确运算 B=sym(A) 数值、符号变量区别 1/9 0.111111111111111 数学建模课程模板 东北大学信息学院
符号变量的化简与显示 • 符号变量数值显示 vpa命令 问题:p 可以记忆到小数点后多少位? • 非最简的结果可以用simple函数化简 • collect合并同类项 • expand展开 • numden,gcd, lcm, factor • 变量替换 subs • pretty, latex 数学建模课程模板 东北大学信息学院
2.2.3 基本语句结构 • 直接赋值语句 • 函数调用语句 A=5; B=[1 2; 3 4]; C=A+6+B^2; [e,f,g]=funname(a,b,c) 数学建模课程模板 东北大学信息学院
2.2.4 程序流程 • 循环语句 for, while • 转移语句 if, elseif, else • 开关语句 switch case • 试探语句 try catch • 不同流程语句的嵌套使用 • 每个流程应该对应一个end 数学建模课程模板 东北大学信息学院
for 循环 • 循环结构 • 例题:求和 • MATLAB实现 数学建模课程模板 东北大学信息学院
while 循环 • 循环结构 • MATLAB举例 数学建模课程模板 东北大学信息学院
不同循环结构有不同的特色、用途 • 看似for循环优于while循环 • 例:for循环解决不了的问题,求最小m • 用while循环可以直接求解 数学建模课程模板 东北大学信息学院
条件转移语句结构 • 各种结构 数学建模课程模板 东北大学信息学院
开关结构 • 和C语言的开关结构有区别 数学建模课程模板 东北大学信息学院
全新的试探结构 • 全新结构 • 优点: • 设置错误陷阱 • 提高算法的执行效率 数学建模课程模板 东北大学信息学院
2.3 矩阵的运算 • 代数运算 • +、- 、* 、/ 、\ • ^, 点运算 • 逻辑运算 • &、|、~、xor • 比较运算 • >= 、<= 、> 、< 、~= • find 、all 、any 数学建模课程模板 东北大学信息学院
2.4 基本程序结构 • 交互式命令 • 脚本程序 • M-函数 主流编程方法 • 为什么需要M-函数 • M-函数实现 • 何时使用M-函数 数学建模课程模板 东北大学信息学院
函数的结构与编程 • 函数的入口 • 函数的调用 数学建模课程模板 东北大学信息学院
2.5 MATLAB语言与科学可视化(将数据用图形表示) • 二维曲线 • 直角坐标系、极坐标、 • 三维图形 • 三维曲线、轨迹 • 三维曲面 • 四维表示 • 动画 (时间为第4维) • 三维图下的切面表示 数学建模课程模板 东北大学信息学院
2.5.1 二维曲线绘制 • 由实测或计算出来的数据直接绘图 • 已知 • 绘图语句 • 构造绘图变量 • 画图 plot(t, y) • 扩展 • 图形后处理 数学建模课程模板 东北大学信息学院
已知函数曲线绘制 • 已知函数 • 自变量向量生成 • 等间距 • 等对数间距 logspace • 不等间距 • 计算函数值 (点运算) • 绘图并检验 数学建模课程模板 东北大学信息学院
函数 • MATLAB命令 • 检验 • 数据存储 • 导入 数学建模课程模板 东北大学信息学院
极坐标图形绘制 • 绘制极坐标函数 • 仍然首先生成q 向量,再用点运算计算r • 调用polar函数绘图 • 绘制曲线 • 注意周期检验 数学建模课程模板 东北大学信息学院
2.5.2 隐函数绘制 • 有的函数不能这样绘制 • 例:隐函数 • 非单值函数 • MATLAB 语句 数学建模课程模板 东北大学信息学院
2.5.3 三维曲线绘制 • 三维曲线及三维参数方程 • 曲线绘制 • 生成 t • 计算 x,y,z • 绘图 • 图坐标读取及坐标系旋转 数学建模课程模板 东北大学信息学院
2.5.4 三维曲面绘制 • 数学函数 • 曲面绘制方法 • 在 x-y 平面生成网格 • 计算网格上每点的函数值 • 用surf绘制表面图或mesh画网格图 • 语句 • 插值或光滑处理 数学建模课程模板 东北大学信息学院
2.5.5 视角设置 • 用可视方法旋转 • 用命令旋转 • 视角定义 • 仰角 • 方位角 • 唯一确定视角 • 视角设置 view(a,b) • 三视图 数学建模课程模板 东北大学信息学院
2.6 MATLAB应用演示 • 高等数学公式推导 • 线性代数运算 • 积分变换与复变函数 • 非线性方程求解与最优化 • 微分方程求解 • 数据插值与拟合 • 概率论与数理统计 • 非传统方法 (FL, NN, GA, PSO, RS, FDA等) 数学建模课程模板 东北大学信息学院
2.6.1 高等数学中的公式推导 • 高等数学几乎全部内容用5个函数即可求解 • 求极限 limit • (偏)导数、微分运算 diff • 积分运算 int • Taylor级数展开 taylor • 级数求和 symsum • 不必记忆类型及方法、技巧,直接求解 • 没有中间结果 数学建模课程模板 东北大学信息学院
函数分析实例 • 已知函数 • 先定义自变量为符号变量,再写函数 • 函数分析 • 一阶导数 • 高阶导数 • 导数还原(积分) • Taylor幂级数展开 • 有限项Taylor幂级数逼近效果研究 数学建模课程模板 东北大学信息学院
小 结学习 MATLAB语言的方法 • “三十字” 学习方法: 带着问题学, 活学活用,学用结合, 急用先学,立竿见影, 要在用字上狠下功夫。 数学建模课程模板 东北大学信息学院