《Matlab初步教程.ppt》由会员分享,可在线阅读,更多相关《Matlab初步教程.ppt(39页珍藏版)》请在三一办公上搜索。
1、,第一章 Matlab6.5概述,Matlab名字的产生应该追溯到两个美文单词:Matrix和Laboratory。20世纪70年代后期,美国新墨西哥大学计算机主任Cleve Moler教授为了便于教学,为Linpack和Eispack两个软件包编写了接口程序,从而为学生编写FORTRAN程序减轻负担,此即MATLAB的萌芽。1984年,成立MATH WORKS公司,并把MATLAB正式推向市场。,MATHEMATICA,MATHCAD,Matlab6.5概述,在当前30多个教学类科技应用软件中,就数学处理功能而言,可分为两个大类:1)数值计算型软件:如MATLAB、XMATH、GAUSS等
2、2)数学分析型软件:MATHEMATICA、MAPLE,Matlab6.5概述,该软件的缺点:由于Matlab的程序不用编译等预处理,也不生成可执行文件。程序属于解释执行,所以程序的执行速度较慢,另外由于该软件运行过程中对赋值后的变量未作处理前,变量常驻内存,因而程序运行到一定程度会消耗很大的内存空间。在图形界面编程能力方向该软件和Visual C+和Visual Basic等可视化编程软件相比功能相对较差。,MATLAB的安装和内容选择,第二章 Matlab6.5初步知识,2.1Matlab的启动1点击桌面上的Matlab6.5快捷图标2通过打开开始菜单的程序选项选择Matlab6.5的程序
3、选项3在Matlab6.5binwin32文件类中的Matlab.exe.建议优先采用方法一。,Matlab6.5初步知识,2.2Desktop工具界面简介 默认情况下,Matlab6.5工作界面包括6个窗口:主窗口、命令窗口、命令历史记录窗口、当前目录窗口、工作空间窗口和发行说明窗口。该界面的上层铺放着3个最常用的界面:指令窗(命令窗口Command window)历史指令窗(command History),工作空间浏览器(Workspace Browser)。还有一个当前目录窗口(current Directory)铺放在桌面下层。,Matlab6.5初步知识,1、command win
4、dow2、command history3、current directory4、workspace browser和array editor5、lunch pad6、editor/debugger7、Help Navigator/Browser,Matlab6.5初步知识,2.2.2Command Window入门1、简介2、计算器功能3、数值、变量、表达式(与其它语言类似,特别留意复数表示,自学)4、数值计算结果的显示格式5、指令行的标点符号(,。;:()_.),Matlab6.5初步知识,其它操作界面Command History,Current directory,Workspace
5、Browser,Array Editor,Launch Pad,Editor/Debugger和教本编写初步,Matlab6.5初步知识,的帮助系统1、纯文本帮助(help help)2、导航/浏览器交互界面帮助(navigator)3、PDF帮助(documentation),Matlab6.5初步知识,2.4引导【例2.1-1】绘制函数 在 时的曲线。x=0:0.1:1y=x.*exp(-x)plot(x,y,xlabel(x),ylabel(y),title(y=x*exp(-x),Matlab6.5初步知识,2.5一维数组的创建和寻访1)逐个元素输入法 x=2 3 4 52)冒号生成法
6、 x=1:1:103)定数线性采样法 x=linspace(a,b,n)4)定数对数采样法 x=logspace(a,b,n),Matlab6.5初步知识,2.6二维数组的创建和标识1)直接输入法 a=1 2 3;4 5 6;7 8 92)利用M文件创建和保存数组 MyMatrix.m Creation and preservation of matrix AMAM=101,102,103,104,105,106,107,108,109;.201,202,203,204,205,206,207,208,209;.301,302,303,304,305,306,307,308,309;3)“全下
7、标”标识a(1,2)=2a(m,n)表示第m行第n列的元素,Matlab6.5初步知识,2.7执行数组运算的常用函数(p46)2.8数组运算和矩阵运算(p48),自学,第三章 Matlab6.5程序设计语言,用Matlab编程语言编写的可以在Matlab工作空间中运行的程序,称为M文件。M文件根据调用方式的不同分为两类:命令文件和函数文件。,Matlab6.5程序设计语言,例如:用Matlab语言来定义一个函数,并计算x=1时,y的值。1)采用命令文件直接计算函数值建立文件f.mX=1;Y=x2 2*x+3,Matlab6.5程序设计语言,2)采用函数文件定义函数f(x)a.建立函数文件f.m
8、 function y=f(x)y=x2 2*x+3 b.在命令窗口键入x=1;y=f(x),Matlab6.5程序设计语言,两者的区别:命令文件不需要输入参数,也不返回输出参数,它是命令的叠加。命令文件对空间中的变量进行操作。函数文件通常包含输入参数,也可以返回输出参数,它还能解决参数传递和出数调用的问题,第一句必须以function的引导。函数文件的变量为局域变量,Matlab6.5程序设计语言,函数文件的格式:function a,b,c=funexm(x,y,z)输出参数 函数名 输入参数(若没有输出参数时,输出参数为空,或用空的中括号表示)function funexm(x)func
9、tion=funexm(x)*注意:不识别汉字文件名,第四章 数值计算,一、插值和样条 Matlab6.5提供的插值指令有6条,这里只介绍一维插值。命令:Method 具体取名有:linear:线性插值,作为缺省设置cubic:三次多项式插值spline:三次样条插值nearst:最近邻插值(同最近邻点的值相等),x,y已知的基准数据x1待插值点Method插值方法,例1:p62例题5(p62exp5.m)已知丙苯粘度随温度变化的四点数据 T 40 45 55 75 0.68 0.64 0.56 0.45求70度的粘度。x=40 45 55 75;y=0.68 0.64 0.56 0.45;x
10、1=70y1=interp1(x,y,x1,cubic)plot(x,y,b,x,y,o,x1,y1,*),第四章 数值计算,二、多项式拟合和非线性最小二乘法1、多项式的表示:例如:p=1-5 6 8poly2sym(p)%(将多项式向量表示为符号表达式形式),第四章 数值计算,2、多项式的值p=1 2 3 4 5;b=2 2;3 3polyval(p,b)(对每个元素进行计算,把x=2,2,3,3分别代入计算)polyvalm(p,b)(按矩阵计算,把x=b矩阵代入计算),第四章 数值计算,3、多项式的拟合(exp3.m)例如:x=1 2 3 4 5 6;y=1 4 9 16 24 35;p
11、=polyfit(x,y,2)x1=1:0.1:6;y1=polyval(p,x1);plot(x,y,*,x1,y1,r),第四章 数值计算,4、非线性参数拟合(非线性最小二乘估计)有两种方法:fminsearch,lsqnonlin(marquadst麦夸托算法)1)假设被估参数不太多(比如,不超过5,6个),且对最小值点有较好的初试估计,fminsearch是优先推荐使用的Matlab指令),第四章 数值计算,例如:x=0:0.2:4;y=15.135 9.0162 5.9249 4.115 3.2235 2.5787 2.10121.7052 1.7500 1.4815 1.4026
12、1.3424 1.2808 1.1347 0.88330.8761 0.96520.8953 0.6840 0.7743 0.4731;a0=1 1 1 1options=optimset(fminsearch)a=fminsearch(exps,a0,options,x,y)function E=exps(a,x,y)Y=a(1)*exp(-a(3)*x)+a(2)*exp(-a(4)*x)E=sum(y-Y).2);,X的列表数据,y的列表数据,第四章 数值计算,2)Marquadst算法相关指令:function E=lsqnonlinfun(a,x,y)Y=a(1)*exp(-a(3)
13、*x)+a(2)*exp(-a(4)*x)E=Y-y;x=0:0.2:4y0=3*exp(-0.4*x)+12*exp(-3.2*x)y=y0+0.3*(rand(size(x)-0.5)a0=1 10 0.2 1options=optimset(lsqnonlin)a=lsqnonlin(lsqnonlinfun,a0,options,x,y),第四章 数值计算,三、LU分解和恰定方程组的解1、LU分解 LU=PA(可理解为按列选主元)L,U,P=lu(A)P为倒置推导,为了保证主元消去策略的实施,一般说来,必须对 被分解矩阵实施行置换。P含有行转置信息。当L,U=lu(a),L、U一般不是
14、上三角和下三角矩阵 当L,U,P=lu(a),L、U为三角矩阵2、AX=b 恰定方程组的解 X=Ab,第四章 数值计算,四、函数的零点1、多项式的根 对于 的多项式 p=roots(p),第四章 数值计算,2、一元函数的零点(非线性方程的根)1)利用作图指令获取初步近似植。2)求一元函数零点的精确指令 Z=fzero(fun,x0)完整指令:z,f_z,exitflag,output=fzero(fun,x0,option,p1,p2,)*注意:fzero只能求取一元连续函数穿越横轴的零点,不会确定与x轴接触而不穿越的零点,如sinx=0,(x-1)2=0,第四章 数值计算,例1:求 以 t为
15、自变量的f(t)=0的根function y=fzeroexp(t,a,b)y=sin(t)2*exp(-a*t)-b*abs(t);a=0.1;b=0.5;t=-10:0.01:10;y=fzeroexp(t,a,b)plot(t,y,r);hold onplot(t,zeros(size(t),k,xlabel(t);ylabel(y(t);hold offzoom ontt,yy=ginput(5);zoom offt4,y4,exitflag=fzero(fzeroexp,tt(4),a,b),例2:教材P109例8。D=0:0.02:0.5y=fp109exp8(D)plot(D,y
16、,r)hold onplot(D,zeros(size(D),k)tt,yy=ginput(1);D=fzero(fp109exp8,tt)function y=f(D)y=8820*D.5-2.31*D-0.6465;,第四章 数值计算,3、多元函数的零点(非线性方程组求根)有了初始零点后,求零点的精确解,可以借助fsolve进行,指令格式如下:x=fsolve(fun,x0)x,fval,exitflag,output,Jacob=fsolve(fun,x0,options,p1,p2,),第四章 数值计算,例:解二元方程组的零点 f1(x,y)=sin(x-y)=0 f2(x,y)=co
17、s(x+y)=0function y=fsolveexp(x)y(1)=sin(x(1)-x(2);y(2)=cos(x(1)+x(2);xy,f,exit=fsolve(fsolveexp,x0,y0),第四章 数值计算,五、常微分方程 1、初值问题 指令格式:t,yy=ode45(f,tspan,y0)t,YY,Te,Ye,Ie=solver(F,tspan,y0,options,p1,p2,),积分区间,函数初值,其它输入参数,例1:用龙格库塔法解(教材P150例12)x,y=ode45(fp150exp12,0 1,0 1)plot(x,y(:,1),*)hold onplot(x,y(:,2),r)function dy=fp150exp12(x,y)dy=x*y(2)+1;-x;,第四章 数值计算,例2:Matlab教材P179,第四章 数值计算,function Yd=Dydt(t,Y)Global G Me Yd=y(3);y(4);-G*Me*y(1)/sqrt(y(1)2+y(2)2)3;主程序:Global G Me G=6.672e-11;Me=5.97e24;t0=0;tf=60*60*24*9 Tspan=t0,tf y0=-4.2e7;0;0;4000 t,YY=ode45(Dydt,tspan,y0),第四章 数值计算,2、边值问题,