资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,MATLAB & 数学建模,2006.8,1,主要内容:,MATLAB简介及基本运算,MATLAB图形绘制功能,MATLAB程序设计,用MATLAB进行数值计算,2,一、 MatLab简介及基本运算,1、,MATLAB简介,MATLAB (Matrix & Laboratory)是美国MathWorks公司自20世纪80年代中期推出的数学软件,优秀的数值计算能力和卓越的数据可视化能力使其很快在数学软件中脱颖而出。到目前为止,其最高版本7.0版已经推出。随着版本的不断升级,它在数值计算及符号计算功能上得到了进一步完善。MATLAB已经发展成为多学科、多种工作平台的功能强大的大型软件。如今,MATLAB已经成为线性代数、自动控制理论、概率论及数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具。,3,MATLAB具有用法简易、可灵活运用、程式结构强又兼具延展性。以下为其几个特色:,强大的数值计算和工程运算功能,先进的资料视觉化功能,高阶但简单的程式环境,4,开放及可延伸的架构,丰富的程式工具箱,-,面向专门领域的工具箱:小波工具箱、神经网络工具箱、信号处理工具箱、图像处理工具箱、模糊逻辑工具箱、优化工具箱、鲁棒控制工具箱等几十个不同应用的工具箱。,5,MATLAB 能干什么?,MATLAB可以进行:,数学计算、算法开发、数据采集,建模、仿真、原型,数据分析、开发和可视化,科学和工程图形应用程序的开发,包括图形用户界面的创建。,MATLAB广泛应用于:,数值计算、图形处理、符号运算、数学建模、系统辨识、小波分析、实时控制、动态仿真等领域。,6,2、MATLAB界面,包括:命令窗口、图形窗口、编辑窗口、帮助窗口。,7,3、常用MATLAB系统命令,help 在线帮助,who 显示当前变量,whos 显示当前变量的详细信息,clear 清空工作间的变量和函数,pack 整理工作间的内存,load 把文件调入变量到工作间,save 把变量存入文件中,echo 命令回显,what 显示指定的matlab文件,dir 显示目录内容,8,4、基本数学运算,在MATLAB下进行基本数学运算,只需将运算式直接打在提示号 后面,并按Enter键。,MATLAB将计算 的结果以ans显示。,【例】求 的算术运算结果。,(1)用键盘在MATLAB指令窗中输入以下内容, (12+2*(7-4)/32,(2)在上述表达式输入完成后,按【Enter】键,该就指令被执行。,(3)在指令执行后,MATLAB指令窗中将显示以下结果。,ans =,2,我们也可给运算式的结果设定一个变量x:,x = (5*2+1.3-0.8)*102/25,x =,42,变量x的值可以在下个语句中调用:,y= 2*x+1,y =,85,9,变量命名规则:,1.变量名的大小写敏感。,2.变量的第一个字符必须为英文字母,而且不能超过31个字符。,3.变量名可以包含下连字符、数字,但不能为空格符、标点 。,注:,数值型变量和符号型变量在MATLAB中是不相同的,它们之间不能直接进行转化。MATLAB提供了一个将数值型转化成符号型的命令,即sym(syms)。,10,系统预定义的变量,ans 预设的计算结果的变量名,eps MATLAB定义的正的极小值=2.2204e-16,pi 内建的值(= 3.1415926.),inf 值,无限大,NaN 无法定义一个数目( ),i 或 j 虚数单位i=j=,clear 去除所有定义过的变量名称。,11,MATLAB提供基本的算术运算有:,加 (+)、减 (-)、乘 (*)、除 (/)、幂次方 (),,范例为:5+3, 5-3, 5*3, 5/3, 53,MATLAB书写表达式的规则与“手写算式”差不多相同,但要求所有表达式都是以纯文本形式输入。,如果一个指令过长可以在结尾加上.(代表此行指令与下一行连续),,例如:, 1*2+3*4+5*6+7*8+9*10+11*12+.,13*14+15*16,ans =,744,12,MATLAB常用数学函数,三角函数和双曲函数,13,指数函数,名称,含义,名称,含义,名称,含义,exp,E为底的指数,log10,10为底的对数,pow2,2的幂,log,自然对数,log2,2为底的对数,sqrt,平方根,复数函数,14,其他函数,15,5、阵列与矩阵,MATLAB的运算事实上是以阵列 (array) 及矩阵 (matrix) 方式在做运算.阵列强调元素对元素的运算,而矩阵则采用线性代数的运算方式.,宣告一变量为阵列或是矩阵时,须用中括号 将元素置于其中。阵列为一维元素所构成,而矩阵为多维元素所组成.,例如: x=1 2 3 4 5 6 7 8 ;% 一维 1x8 阵列,【例】简单矩阵的输入步骤。,(1)在键盘上输入下列内容:( 以 ; 区隔各列的元素),A = 1,2,3; 4,5,6; 7,8,9,(2)按【Enter】键,指令被执行。,(3)在指令执行后,MATLAB指令窗中将显示以下结果:,A =,1 2 3,4 5 6,7 8 9,16,阵列的运算符号,除了加减符号外其余的阵列运算符号均须多加 . 符号。 阵列运算功能,(注意:一定要 多加 . 符号),+ 加 - 减 .* 乘 ./ 左除 . 右除 . 次方 . 转置,矩阵的几种基本变换操作,(1) 通过在矩阵变量后加的方法来表示转置运算,a=10,2,12;34,2,4;98,34,6;,a,ans =,10 34 98,2 2 34,12 4 6,17,(2) 矩阵求逆,inv(a),ans =,-0.0116 0.0372 -0.0015,0.0176 -0.1047 0.0345,0.0901 -0.0135 -0.0045,(3) 矩阵的特征值,u,v=eig(a),u =,-0.2960 0.3635 -0.3600,-0.2925 -0.4128 0.7886,-0.9093 -0.8352 0.4985,v =,48.8395 0 0,0 -19.8451 0,0 0 -10.9943,18,(4) 取出上三角和下三角,triu(a),ans =,10 2 12,0 2 4,0 0 6,tril(a),ans =,10 0 0,34 2 0,98 34 6,l,u=lu(a),l = 0.1020 0.1500 1.0000,0.3469 1.0000 0,1.0000 0 0,u = 98.0000 34.0000 6.0000,0 -9.7959 1.9184,0 0 11.1000,19,二、MatLab图形绘制功能,基本绘图函数,命 令,含 义,plot,建立向量或矩阵各队队向量的图形,loglog,x、y,轴都取对数,标度建立图形,semilogx,x,轴用于对数,标度,y,轴线性,标度绘制图形,semilogy,y,轴用于对数,标度,x,轴线性,标度绘制图形,title,给图形加标题,xlabel,给x,轴加标记,ylabel,给y,轴加标记,text,在图形指定的位置上加文本字符串,gtext,在鼠标的位置上加文本字符串,grid,打开网格线,20,x=0:0.001:10; % 0到10的1000个点的x座标,y=sin(x); % 对应的y座标,plot(x,y); % 绘图,21,符号表达式画图,在许多的场合,将表达式可视化是有利的。MATLAB提供了函数,ezplot,来完成该任务。, y= 16*x2+64*x+96 ,y=,16*x2+64*x+96, ezplot(y),22,三、MatLab程序设计,1、M文件,我们前面所介绍在MATLAB所做的运算,是适合于所要计算的算式不太长或是想以交谈式方式做运算,如果要计算的算式很长有数十行或是须要一再执行的算式,则那样的方式就行不通了。MATLAB提供了所谓的 M-file 的方式,可让使用者自行将指令及算式写成巨集程式然后储存成一个特别的文档,其扩展名是m,譬如 picture.m,其中的picture就是文件名称。,(1)编写M脚本文件的步骤,点击MATLAB指令窗工具条上的New File图标 ,就可打开如图所示的MATLAB文件编辑调试器。用户即可在空白窗口中编写程序。,23,点击编辑调试器工具条图标 ,在弹出的Windows标准风格的“保存为”对话框中,选择保存文件夹,键入新编文件名(如area),点击【保存】键,就完成了文件保存。,(2)运行文件,使area.m所在目录成为当前目录(系统默认路径),或让该目录处在MATLAB的搜索路径上.,然后在指令窗口运行以下指令area,例:,% 新建M-file, area.m,% 计算一个球的体积,r = input(Type radius 输入半径:);,Area=pi*r2;,volume=(4/3)*pi*r3;,fprintf(半径 The radius is %12.5fn,r),fprintf(面积 The area of a circle is %12.5fn,Area),fprintf(体积The volume of a sphere is %12.5fn,volume),在指令窗口运行指令 area,24,2、M文件函数,一个函数M文件与脚本文件类似之处在于它们都是一个有,.m,扩展名的文本文件。如同脚本M文件一样,函数M文件不进入,命令,窗口,而是由文本编辑器所创建的外部文本文件。一个函数的M文件与脚本文件在通信方面是不同的。函数与MATLAB工作空间之间的通信,只通过传递给它的变量和通过它所创建的输出变量。在函数内中间变量不出现在MATLAB工作空间,或与MATLAB工作空间不交互。一个函数的M文件的第一行把M文件定义为一个函数,并指定它的名字。它与文件名相同,但没有,.m,扩展名。它也定义了它的输入和输出变量。,M文件函数之间可以互相调用.,25,M文件函数必须遵循以下特定的规则:,函数名和文件名必须相同。例如,函数,fli,存储在名为,fli.m,文件中。,例:,计算f(1)f(2)+f,2,(3),首先建立一个,M,函数:fun1.m,function Y= fun1(x),Y=,(x3 - 2*x2 + x - 6.3)/(x2 + 0.05*x - 3.14);,在,指令窗口运行以下指令:,fun1(1)*fun1(2)+fun1(3)*fun1(3),ans =,-12.6023,26,例:,计算阶层函数n! fact.m,function output = fact(n),if n = 1,output = 1;,return;,end,output = n*fact(n-1);,27,3、MATLAB控制流,for循环结构,For循环允许一组命令以固定的和预定的次数重复。For循环的一般形式是:,for x = array,commands,end,在for和end语句之间的commands按数组中的每一列执行一次,。,for循环可按需要嵌套,。,28,例:,for n=1:10,x(n)=sin(n*pi/10);,end, x,x =,Columns 1 through 7,0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090,Columns 8 through 10,0.5878 0.3090 0.0000,29,while循环结构,与for循环以固定次数求一组命令的值相反,while 循环以不定的次数求一组语句的值。while循环的一般形式是:,while expression,commands,end,只要在表达式里的所有元素为真,就执行while和end 语句之间的commands。,可以利用break命令跳出while循环,while循环可按需要嵌套。,30,例:,Fibonacci数组的元素满足Fibonacci 规则:,,,且,现要求该数组中第一个大于10000的元素。,a(1)=1;a(2)=1;i=2;,while a(i)=10000,a(i+1)=a(i-1)+a(i);,%当现有的元素仍小于10000时,求解下一个元素。,i=i+1;,end;,i,a(i),i =,21,ans =,10946,31,if-else-end分支结构,很多情况下,命令的序列必须根据关系的检验有条件地执行。在编程语言里,这种逻辑由某种if-else-end结构来提供。最简单的if-else-end结构是:,if expression,commands,end,如果在表达式中的所有元素为真(非零),那么就执行if和end语言之间的commands,32,假如有两个选择,,if-else-end,结构是:,if expression,commands evaluated if True,else,commands evaluated if False,end,在这里,如果表达式为真,则执行第一组命令;如果表达式是假,则执行第二组命令。,33,当有三个或更多的选择时,If-Else-End结构采用形式,if expression1,commands evaluated if expression1 is True,elseif expression2,commands evaluated if expression2 is True,elseif expression3,commands evaluated if expression3 is True,elseif expression4,commands evaluated if expression4 is True,elseif ,else,commands evaluated if no other expression is True,end,最后的这种形式,只和所碰到的、与第一个真值表达式相关的命令被执行;接下来的关系表达式不检验,跳过其余的If-Else-End结构。而且,最后的else命令可有可无。,34,例:,画三次样条函数的图形,x=0:0.01:5;,for i=1:length(x),if x(i)=0,y(i)=x(i)3/6;,elseif x(i)1,y(i)=-(x(i)-2)3/2-(x(i)-2)2+2/3;,elseif x(i)2,y(i)=(x(i)-2)3/2-(x(i)-2)2+2/3;,elseif x(i)3,y(i)=(4-x(i)3/6;,else y(i)=0;,end,end,plot(x,y),35,switch-case结构,例:,学生的成绩管理,用来演示switch结构的应用。,%划分区域:,满分,(100),,优秀,(90-99),,良好,(80-89),,及格,(60-79),,不及格,(60,)。,N = input(输入分数);,switch N,case 100,%得分为100时,S =满分;,%列为满分等级,case 90,%得分在90和99之间,S = 优秀;,%列为优秀等级,case 80,%得分在80和89之间,S = 良好;,%列为良好等级,case 60,%得分在60和79之间,S = 及格;,%列为及格等级,otherwise,%得分低于60。,S =不及格;,%列为不及格等级,end,disp(S),36,四、用MatLab进行数值计算,方程求解,求解代数方程(组)、求解线性方程、求解微分方程(组,) sovle,fsolve,dsovle,微分和积分,diff int,数值积分,梯形法,trapz,二次函数法,quad,quads,37,线性优化,用命令,x=lp(C,A,b,vlb,vub)。,非线性优化,用命令,x=constr(f ,x0),。,38,曲线拟合与插值,曲 线 拟 合 和 插 值 函 数,polyfit(x, y, n),对描述n阶多项式y=f(x)的数据,进行最小二乘曲线拟合,interp1(x, y, xo),1维线性插值,interp1(x, y, xo, spline ),1维3次样条插值,interp1(x, y, xo, cubic ),1维3次插值,interp2(x, y, Z, xi, yi),2维线性插值,interp2(x, y, Z, xi, yi, cubic ),2维3次插值,interp2(x, y, Z, xi, yi, nearest ),2维最近邻插值,39,谢 谢!,40,
展开阅读全文