590 likes | 707 Views
MATLAB 入门. 参考教材: MATLAB 与科学计算 《 金融数量方法 》 软件: Matlab6.5 上海财经大学金融学院. 第一章 Matlab 简介.
E N D
MATLAB入门 • 参考教材: • MATLAB与科学计算 • 《金融数量方法》 • 软件: • Matlab6.5 上海财经大学金融学院
第一章 Matlab 简介 • MATLAB软件是由美国Mathworks公司推出的用于数值计算和图形处理的科学计算系统环境。MATLAB是英文MATrix LABoratory(短阵实验室)的缩写。它的第1版(DoS版本1.0)发行于1984年。 MATLAB集中了日常数学处理中的各种功能,包括高效的数值计算、矩阵运算、信号处理和图形生成等功能。在MATLAB环境下,用户可以集成地进行程序设计、数值计算、图形绘制、输入输出、文件管理等各项操作。
与利用c语言或FoRTRAN语言作数值计算的程序设计相比,利用MATLAB可以节省大量的编程时间。在美国的一些大学里,MATLAB正在成为对数值线性代数以及其他一些高等应用数学课程进行辅助教学的有益工具。在工程技术界,MATLAB也被用来解决一些实际课题和数学模型问题。典型的应用包括数值计算、算法预设计与验证,以及一些特殊的短阵计算应用,如自动控制理论、统计、数字信号处理(时间序列分析)等。进入20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。 到九十年代初期,在国际上30几个数学类科技应用软件中,MATLAB在数值计算方面独占鳌头,而Mathematica和Maple则分居符号计算软件的前两名。
MATLAB 语言的优势 • 编程简单,类似于其他语言,如C • 集成度更高,扩展性更好 • 数学问题数值解能力强大 • 由Maple内核构成的符号运算工具箱可以继承Maple所有解析解的求解能力 • 在数学、工程领域各种“工具箱” • 强大的系统仿真能力,Simulink建模 • 在控制界是国际首选的计算机语言
金融建模为什么要学习计算机数学语言? • 金融建模离不开数学和统计 • 金融建模往往要处理大量的数据 • 金融建模往往要进行复杂的计算
先考虑下面一些例子 高等数学问题:已知函数,如何 求导及高阶导数? 思路:① 由分式求导公式,得出 ② 逐次求导则可以得出 问题:求导过程很繁杂,容易出错 使用Matlab: syms x; y=sin(x)/(x^2+4*x+3); diff(y,4) pretty(ans)
计算机求解结果 不是最简
基于计算机的化简结果 • 靠手工推导的方法难以准确得出 手工无从推导,计算机能,只要几秒
代数方程求根 • 具体实例 • a=[1,9,135/4,135/2,1215/16,729/16,729/64]; • roots(a) • ans = -1.5056 + 0.0032i • -1.5056 - 0.0032i • -1.5000 + 0.0065i • -1.5000 - 0.0065i • -1.4944 + 0.0032i -1.4944 - 0.0032i
实例:Hilbert 矩阵,n=20 • 该行列式的值为多少? • 传统数值分析结论:矩阵奇异 • 使用Matlab:a=hilb(20); det(a) • ans = -1.1004e-195
该矩阵行列式的精确结果 • 近似值
MATLAB 语言程序设计基础 • MATLAB 语言的变量名规则 由一个字母引导,后面可以为其他字符 区分大小写 Abc不等于ABc 不要超过31个字符 不要包含空格,标点等但可用连接符_ 有效 MYvar12, MY_Var12和 MyVar12_ 错误的变量名 12MyVar, _MyVar12 • MATLAB 的保留常量 比如eps, i, j, pi, NaN, Inf, i=sqrt(-1) Realmax,realmin,nargin,nargout
符号型变量数据类型 • 符号型,sym(A), 常用于公式推导 • 变量声明 • 采用变精度函数求值 求出 p的 300 位有效数字
MATLAB 的基本语句结构 • 直接赋值语句 表示矩阵
试输入复数矩阵 需要避免的语句
函数调用语句 • 冒号表达式
子矩阵提取 • 基本语句格式 • 子矩阵提取 • 提取 A矩阵全部奇数行,所有列 • 提取 A矩阵 3,2,1 行、2,3,4 列构成子矩阵 • 将 A矩阵左右翻转
基本数学运算 • 代数运算 • 逻辑运算 • 比较运算 • 解析结果的化简与变换 • 基本数论运算
矩阵的代数运算 • 矩阵表示 • 矩阵转置 • 数学表示 • MATLAB 求解B=A’
矩阵加减法 • 注意其一为标量的情形 • 矩阵乘法 • 数学表示 • MATLAB 表示 • 注意相容性
矩阵除法 • 矩阵左除:AX = B,求 X • MATLAB 求解:X=A\B • 最小二乘解 • 矩阵右除:XA = B,求 X • MATLAB求解:X=B/A • 最小二乘解
矩阵翻转 • 左右翻转 • 上下翻转 • 旋转 90o • 如何旋转180o? • 矩阵乘方 • A为方阵,求 • MATLAB 实现:
点运算 • 矩阵对应元素的直接运算 • 例如
矩阵的逻辑运算 • 逻辑运算(相应元素间的运算) • 与运算 • 或运算 • 非运算 • 异或运算
矩阵的比较运算 • 各种允许的比较关系 >, >=, <, <=, ==,~=, find(), all(), any() • 实例A=[1,2,3;4,5,6;7,8,0]; • find(A>=5),any(A>=5) • [i,j]=find(A>=5) • all(A>=5) • A>=5
解析结果的化简与变换 syms s p=(s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64) Simple(p)
变量替换 • syms x y • c=x^2+y • subs(c,[x,y],[2,3]) • ans = 7
求其 Taylor 幂级数展开 >> clear >> syms a b c d t >> f=cos(a*t+b)+sin(c*t)*cos(d*t); >> f1=taylor(f,3,a,0) f1 =cos(b)+sin(c*t)*cos(d*t)-sin(b)*t*a-1/2*cos(b)*t^2*a^2
对下面的数据进行取整运算 -0.2765,0.5772,1.4597,2.1091,1.191,-1.6187
MATLAB 语言流程控制 • 循环结构 • for 结构 • while 结构
用循环求解 用循环求解 求最小的 m s=0;m=0; while s<=10000, m=m+1;s=s+m; end, [s,m]
用循环求解 求最大的 m s=0; for i=1:10000 s=s+i; if s>10000 break End end
MATLAB 函数的编写 • 函数是 MATLAB 编程的主流方法 • 除了函数外,还可以采用 M-script 文件 • M-script 适合于小规模 若最大值不为 10000,需修改程序 对 m 和 10000 值的设置,不适合于M-script
MATLAB语言的函数的基本结构 • nargin, nargout, varargin, varargout
前面的要求,m, 10000 • 无需修改程序
若只给出一个输入参数,则会自动生成一个方阵若只给出一个输入参数,则会自动生成一个方阵 • 在函数中给出合适的帮助信息 • 检测输入和返回变量的个数 edit myhilb
可变输入输出个数 可以计算两个多项式的积 用 varargin 实现任意多个多项式的积
inline 函数和匿名函数 • inline 函数,可以免去文件 • MATLAB 7.0
二维图形绘制 二维图形绘制基本语句 构造向量: