Matlab与数学建模 (2).ppt
Matlab入门入门MATLAB提供了两种提供了两种 运行方式:命令行方式和运行方式:命令行方式和M文件方式文件方式1、变量与函数、变量与函数变量的命名规则:变量的命名规则:(1)、变量名必须是不含空格的单个词;、变量名必须是不含空格的单个词;(2)、变量名区分大小写;、变量名区分大小写;(3)、变量名最多不超过、变量名最多不超过19个字符;个字符;(4)、变量名必须是以字母打头,之后可以是任意字母、变量名必须是以字母打头,之后可以是任意字母、下划线、或数字,不允许是用标点符号下划线、或数字,不允许是用标点符号.特殊变量表特殊变量表数学运算符号表数学运算符号表常用基本函数常用基本函数例1 求y=sinx在x=/5时的值y=sin(pi/5)y=0.5878例例2 画出函数画出函数图像图像.函数函数M文件文件函数M文件是文件名后缀为m的文件,function开始,格式为:开始,格式为:function 因变量名因变量名=函数名函数名(自变量名自变量名)函数M文件的文件名必须与函数名完全一致在m文件编辑窗口录入下列两行:function yy=f2(x)yy=sqrt(x-20).2+1002)+sqrt(x-120).2+1202);x=20:120;y=f2(x);plot(x,y)输入命令指令输入命令指令例3 计算函数在(1,2)处的函数值.1.建立M文件:fun.mfunction f=fun(x)f=100*(x(2)-x(1)2)2+(1-x(1)22.在在MATLAB命令窗口键入命令:命令窗口键入命令:结果结果 f=100 x=1 2 fun(x)2.数组与矩阵数组与矩阵简单数组的输入方法 x=1 2 3 4 5 8 7 18 y=1:7z=3:2:9v=y zu=linspace(2,9,11)数组元素的访问数组元素的访问为了访问数组元素(分量),可对数组元素进行编址:为了访问数组元素(分量),可对数组元素进行编址:(1)、访问一个元素:数组元素可以用下标访问,如、访问一个元素:数组元素可以用下标访问,如x(i)表示数表示数组组x的第的第i个元素个元素.x=1 2 3 4 5 8 7 18x(4)(2).访问一块元素:访问矩阵的某些元素或子块访问一块元素:访问矩阵的某些元素或子块.x=1,2,3,4,5,6,7,8,9,10y=x(2:2:11)z=x(10:-3:1)X(a:b:c)表示访问数组表示访问数组x的从的从a个元素开始,以步长为个元素开始,以步长为b到第到第c个元素(但不超过个元素(但不超过c)(3)、直接使用元素编址序号、直接使用元素编址序号.x(a b c d)表示提取数组表示提取数组x的第的第a、b、c、d个元素构成一个新的数组个元素构成一个新的数组x(a)x(b)x(c)x(d).m=(5 8 2 7)数组的方向数组的方向b=1,2,3,4d=1 2 3 4c=1;2;3;4e=c说明:以空格或逗号分隔的元素指定的是不同列的元素,说明:以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素而以分号分隔的元素指定了不同行的元素.数组的运算数组的运算(1)、标量、标量-数组运算数组运算数组对标量的加、减、乘、除、乘方是数组的每个元素对该数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量施加相应的加、减、乘、除、乘方运算标量施加相应的加、减、乘、除、乘方运算.设:设:a=a1 a2 an,c 是标量,则是标量,则 a+c=a1+c,a2+c,an+c a*c=a1*c,a2*c,an*c a./c=a1/c,a2/c,an/c a.c=c/a1,c/a2,c/an a.c=a1c,a2c,anc c.a=ca1,ca2,can例例 编写编写m文件文件biaoliangshuzu.m如下:如下:a=1 2 3 4;c=2;a1=a+ca2=a*ca3=a./ca4=a.ca5=a.ca6=c.a(2)、数组、数组-数组运算数组运算当两个数组有相同的维数时,加、减、乘、除、幂运算可当两个数组有相同的维数时,加、减、乘、除、幂运算可按元素对元素的方式进行,维数不同的不能进行运算。按元素对元素的方式进行,维数不同的不能进行运算。设:设:a=a1,a2,an,b=b1,b2,bn,则则a+b=a1+b1,a2+b2,an+bna.*b=a1*b1,a2*b2,an*bna./b=a1/b1,a2/b2,an/bna.b=b1/a1,b2/a2,bn/ana.b=a1b1,a2b2,anbn编写编写m文件文件shuzushuzu.ma=2 2 2 2;b=3 3 3 3;c1=a+bc2=a.*bc3=a./bc4=a.bc5=a.b矩阵矩阵1、矩阵的建立、矩阵的建立a=1 2 3 4;5 6 7 8;9 10 11 12编写编写m文件文件juzhensc.m如下:如下:a=b=zeros(2,3)c=ones(2,3)d=eye(2,3)e=eye(3,3)矩阵中元素的操作矩阵中元素的操作(1)、矩阵、矩阵A的第的第r行:行:A(r,:)(2)、矩阵、矩阵A的第的第r列:列:A(:,r)(3)、依次提取矩阵、依次提取矩阵A的每一列,将的每一列,将A拉伸为一个列向量拉伸为一个列向量:A(:)(4)、取矩阵、取矩阵A的第的第i1i2行、第行、第j1j2列构成新矩阵列构成新矩阵:A(i1:i2,j1:j2)(5)、删除、删除A的第的第i1i2行,构成新矩阵行,构成新矩阵:A(i1:i2,:)=(6)、删除、删除A的第的第j1j2列,构成新矩阵列,构成新矩阵:A(:,j1:j2)=(7)、将矩阵、将矩阵A和和B拼接成新矩阵拼接成新矩阵:A B;A;B编写编写m文件文件juzhencz.ma=1 2 3;4 5 6;7 8 9a1=a(2,:)a2=a(:,2)a3=a(:)a4=a(1:2,2:3)a5=a;a5(1:2,:)=a6=a;a6(:,1)=a7=a a2a8=a;a1矩阵的运算矩阵的运算线性代数中所定义的矩阵运算命令如下:线性代数中所定义的矩阵运算命令如下:编写编写m文件文件juzhenyusuan.ma=1 2 3;4 5 6b=1 2;1 2;1 2c2=a*bc=2 7 3;3 9 4;1 5 3c3=det(c)c4=inv(c)v,d=eig(c)3、MATLAB程序设计程序设计控制流控制流MATLAB提供三种决策或控制流结构:提供三种决策或控制流结构:for循环,循环,while循环和循环和if-else-end结构结构.1、for循环循环 允许一组命令以固定的和预定的次数重复,允许一组命令以固定的和预定的次数重复,for循环的一般形式为:循环的一般形式为:for x=array commands end在在for和和end语句之间的命令串语句之间的命令串commands按数组按数组(array)中中的每一列执行一次的每一列执行一次.在每一次迭代中在每一次迭代中,x被指定为数组的下一列被指定为数组的下一列,即在第即在第n次循环中次循环中,x=array(:,n)例例1、对、对n=1,2,10,分别求分别求的值.编写编写m文件文件forxunhuan.m如下:如下:for n=1:10 x(n)=sin(n*pi/10)endx2、while循环循环与与for循环以固定次数求一组命令相反,循环以固定次数求一组命令相反,while循环以不定循环以不定的次数求一组语句的值的次数求一组语句的值while (expression)commandsend只要在表达式只要在表达式(expression)里的所有元素为真,就执行里的所有元素为真,就执行while和和end语句之间的命令串语句之间的命令串commands.例例2、设银行年利率为、设银行年利率为11.25%,将,将10000元存入银行,问多长元存入银行,问多长时间会连本带利翻一番?时间会连本带利翻一番?编写编写m文件文件whilexunhuan.m如下:如下:money=10000;years=0;while money1 f=x2+1 end if x1 f=x2+1 else if x=0 f=x3 else f=2*x end endMATLAB作图作图Matlab作图是通过描点、连线来实现的,作图是通过描点、连线来实现的,故在画一个曲线图形之前,必须先取得该故在画一个曲线图形之前,必须先取得该图形上的一系列的点的坐标(即横坐标和图形上的一系列的点的坐标(即横坐标和纵坐标),然后将该点集的坐标传给纵坐标),然后将该点集的坐标传给Matlab函数画图函数画图.plot(X,Y,S)plot(X,Y)plot(X,Y1,S1,X,Y2,S2,X,Yn,Sn)X,Y是向量,分别表示点集的横坐标和纵坐标,命令是向量,分别表示点集的横坐标和纵坐标,命令plot(X,Y,S)描绘该点集所表示的曲线,其描绘该点集所表示的曲线,其线形线形(线的形状线的形状)由由S确定如下:确定如下:1.曲线图曲线图命令命令plot(X,Y)画实线,其参数画实线,其参数X、Y与与plot(X,Y,S)中的相同中的相同.命令命令plot(X,Y1,S1,X,Y2,S2,X,Yn,Sn)将多条线画在一起将多条线画在一起.例例1、(1)在区间在区间0,2画画sinx;(2)在在0,2用红线画用红线画sinx,用绿圈画用绿圈画cosx.解解 输入命令:输入命令:(1)x=linspace(0,2*pi,30);(2)y=sin(x);(3)plot(x,y)(2)x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,y,r,x,z,co)2、符号函数、符号函数(显函数、隐函数和参数方程显函数、隐函数和参数方程)画图画图符号函数画图可以通过函数符号函数画图可以通过函数“ezplot”或或“fplot”来来实现实现.ezplot的调用格式:ezplot(f,a,b)表示在表示在axezplot(sin(x),0,pi)解解 输入命令:输入命令:ezplot(cos(t).3,sin(t).3,0,2*pi)例例4、在、在-2,0.5,0,2上画隐函数上画隐函数的图形的图形.解解 输入命令:输入命令:ezplot(exp(x)+sin(x*y),-2,0.5,0,2)例例5、在、在-1,2上画上画的图形的图形.解解 先建先建m文件文件myfun1.m:function Y=myfun1(x)Y=exp(2*x)+sin(3*x.2)再输入命令:再输入命令:fplot(myfun1,-1,2)例例6、在、在-2,2范围内绘制函数范围内绘制函数tanh的图形的图形.解解 fplot(tanh,-2,2)例例7、将、将x、y的取值范围都限制在的取值范围都限制在-2,2,画函数画函数tanx,sinx,cosx的图形的图形.解解 fplot(tan(x),sin(x),cos(x),2*pi*-1 1-1 1)3、对数坐标图、对数坐标图例例8、用方形标记创建一个简单的、用方形标记创建一个简单的loglog图图.解解 输入命令:输入命令:x=logspace(-1,2);loglog(x,exp(x),-s)grid on例例9、创建一个简单的半对数坐标图、创建一个简单的半对数坐标图.解解 输入命令:输入命令:x=0:0.1:10;semilogy(x,10.x)三维图形三维图形(空间曲线和曲面)(空间曲线和曲面)三维曲线三维曲线例例1、在区间、在区间0,10画出参数曲线画出参数曲线x=sint,y=cost,z=t.并分别标注并分别标注.解解 输入命令:输入命令:t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)例例2、画多条曲线,观察函数、画多条曲线,观察函数Z=(X+Y)2.解解 输入命令:输入命令:x=-3:0.1:3;y=1:0.1:5;X,Y=meshgrid(x,y);变成矩阵(配套组合)变成矩阵(配套组合)Z=(X+Y).2;plot3(X,Y,Z)2、空间曲线、空间曲线例例3、画函数、画函数Z=(X+Y)2的图形的图形.解解 输入命令:输入命令:x=-3:0.1:3;y=1:0.1:5:X,Y=meshgrid(x,y);Z=(X+Y).2;surf(X,Y,Z)例例4、将曲面、将曲面peaks平滑平滑.解解 输入命令:输入命令:X,Y,Z=peaks(30)surf(X,Y,Z)shading flat例例5、画出曲面、画出曲面Z=(X+Y)2的网格图的网格图.解解 输入命令:输入命令:x=-3:0.1:3;y=1:0.1:5:X,Y=meshgrid(x,y);Z=(X+Y).2;mesh(X,Y,Z)例例6、绘、绘peaks的网格图的网格图.解解 输入命令:输入命令:X,Y=meshgrid(-3:0.125:3);Z=praks(X,Y);meshz(X,Y,Z)处理图形处理图形例例1、在区间、在区间0,2*pi画画sinx的图形,加格栅,并加注图例的图形,加格栅,并加注图例自变量自变量X、函数函数Y、示意图示意图.解解 输入命令:输入命令:x=linspace(0,2*pi,30);y=sin(x);plot(x,y)grid on xlabel(自变量自变量X);ylabel(函数函数Y);title(示意图示意图)例例2、在、在0,2*pi画画sinx,cosx,并分别标注并分别标注sinx、cosx.解解 输入命令:输入命令:x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,z,x,y);gtext(sin(x);gtext(cos(x);命令命令axis(XMIN XMAX YMIN YMAN ZMIN ZMAX)x、y、z的最大、最小值的最大、最小值命令命令axis auto将坐标轴返回到自动缺省值将坐标轴返回到自动缺省值.例3、在区间0.005,0.01显示y=sin(1/x)的图形.解解 输入命令:输入命令:x=linspace(0.0001,0.01,1000);y=sin(1./x);plot(x,y);axis(0.005 0.01-1 1)定制坐标定制坐标图形保持图形保持(1)、hold on hold off命令命令hold on 保持当前图形,以便继续画图到当前的图上保持当前图形,以便继续画图到当前的图上.命命令令hold off释放当前图形窗口。注意释放当前图形窗口。注意”hold on”hold off”后后面不能跟分号面不能跟分号“;”.若想将多条曲线画在一起,则可用若想将多条曲线画在一起,则可用“hold on”例例4、将、将y=sinx、y=cosx分别用点和线画在同一屏幕上分别用点和线画在同一屏幕上.解解 输入命令:输入命令:x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,z,ro:);hold on plot(x,y);(2)H=figure figure(H)命令命令H=figure创建图形并返回图形的句柄创建图形并返回图形的句柄.命令命令figure(H)新建新建H窗口,激活图形窗口,激活图形H使其可见,并把它置于使其可见,并把它置于 其他图形之上其他图形之上.例例5、在区间、在区间0,2*pi分别画出分别画出y=sinx;z=cosx的图形,保持并的图形,保持并显示显示y=sinx的图形的图形.解解 输入命令:输入命令:x=linspace(0,2*pi,100);y=sin(x);z=cos(x);plot(x,y);title(sin(x);pause figure(2);plot(x,z);title(cos(x);图区控制图区控制(分隔平面分隔平面)若打算在一个屏幕上画各自独立的多个图形,则需将屏幕分割若打算在一个屏幕上画各自独立的多个图形,则需将屏幕分割为多块,并分别作图为多块,并分别作图.H=subplot(mrows,ncols,thisPlot)subplot(mrows,ncols,thisPlot)subplot(1,1,1)命令命令H=subplot(mrows,ncols,thisPlot)划分整个作图区域为划分整个作图区域为 mrows*ncols块块(逐行对块访问逐行对块访问)并激活第并激活第thisPlot块,其后的块,其后的作图语句将图形画在该块上作图语句将图形画在该块上.命令命令subplot(mrows,ncols,thisPlot)激活已划分为激活已划分为 mrows*ncols块的屏幕中的第块的屏幕中的第thisPlot块,其后的作图语句块,其后的作图语句将图形画在该块上将图形画在该块上.命令命令subplot(1,1,1)返回非分割状态返回非分割状态.例例6、将屏幕分割为四块,并分别画上、将屏幕分割为四块,并分别画上y=sinx;z=cosx;a=sinx*cosx;b=sinx/cosx.解解 输入命令:输入命令:x=linspace(0,2*pi,100);y=sin(x);z=cos(x);a=sin(x).*cos(x);b=sin(x)./(cos(x)+eps);subplot(2,2,1);plot(x,y);title(sin(x);subplot(2,2,2);plot(x,z);title(cos(x);subplot(2,2,3);plot(x,a);title(sin(x)cos(x);subplot(2,2,4);plot(x,b);title(sin(x)/cos(x);缩放图形缩放图形 zoom on 为当前图形打开缩放模式为当前图形打开缩放模式.单击鼠标左键,则在当前图形窗口中,以鼠标点中的点单击鼠标左键,则在当前图形窗口中,以鼠标点中的点为中心的图形放大为中心的图形放大2倍;单击鼠标右键,则缩小倍;单击鼠标右键,则缩小2倍倍.zoom off 关闭缩放模式关闭缩放模式.例例7、缩放、缩放y=sinx的图形的图形.解解 输入命令:输入命令:x=linspace(0,2*pi,30);y=sin(x);plot(x,y)zoom on特殊二、三维图形特殊二、三维图形1、特殊二维图形、特殊二维图形(1)极坐标图:极坐标图:polar(theta,rho,s)用角度用角度theta(弧度表示弧度表示)和极半径和极半径rho作极坐标图,用作极坐标图,用s指定线型指定线型.例例1、画、画的极坐标图形的极坐标图形.解解 输入命令:输入命令:theta=linspace(0,2*pi);rho=sin(2*theta).*cos(2*theta);polar(theta,rho,g);title(Polar plot of sin(2*theta).*cos(2*theta);(2)、散点图:、散点图:scatter(X,Y,S,C)scatter(X,Y,S,C)在向量在向量X和和Y的指定位置显示彩色圈的指定位置显示彩色圈.X和和Y必必须大小相同须大小相同.例例2、绘制、绘制seamount散点图散点图.解解 输入命令:输入命令:load seamount(装载数据装载数据)scatter(x,y,5,z)(3)、平面等值线图:、平面等值线图:contour(x,y,z,n)contour(x,y,z,n)绘制绘制n个等值线的二维等值线图个等值线的二维等值线图.例例3、在范围、在范围-2x2,-2y3内画内画的等值线图的等值线图.解解 输入命令:输入命令:X,Y=meshgrid(-2:0.2:2,-2:0.2:3);Z=X.*exp(-X.2-Y.2);C,h=contour(X,Y,Z);clabel(C,h)colormap cool2、特殊的三维图形函数、特殊的三维图形函数(1)、空间等值线图:、空间等值线图:contour3(x,y,z,n),其中其中n表示等值线数表示等值线数.例例4、山峰的三维和二维等值线图、山峰的三维和二维等值线图.解解 输入命令:输入命令:x,y,z=peaks;subplot(1,2,1)contour3(x,y,z,16,s)grid,xlabel(x-axis),ylabel(y-axis)zlabel(z-axis)title(contour3 of peaks);subplot(1,2,2)contour(x,y,z,16,s)grid,xlabel(x-axis),ylabel(y-axis)title(contour of peaks)(2)、三维散点图、三维散点图 scatter3 scatter3(X,Y,Z,S,C)在向量在向量X,Y和和Z指定的位置上显示彩色圆圈指定的位置上显示彩色圆圈.向量向量X,Y和和Z的大小必须相同的大小必须相同.例例5、绘制三维散点图、绘制三维散点图.解解 输入命令:输入命令:x,y,z=sphere(16);X=x(:)*.5 x(:)*.75 x(:);Y=y(:)*.5 y(:)*.75 y(:);Z=z(:)*.5 z(:)*.75 z(:);S=repmat(1.75.5*10,prod(size(x),1);C=repmat(1 2 3,prod(size(x),1);scatter3(X(:),Y(:),Z(:),S(:),C(:),filled),view(-60,60)