《Matlab与数学建模 (2).ppt》由会员分享,可在线阅读,更多相关《Matlab与数学建模 (2).ppt(50页珍藏版)》请在三一办公上搜索。
1、Matlab入门,MATLAB提供了两种 运行方式:命令行方式和M文件方式,1、变量与函数,变量的命名规则:(1)、变量名必须是不含空格的单个词;(2)、变量名区分大小写;(3)、变量名最多不超过19个字符;(4)、变量名必须是以字母打头,之后可以是任意字母、下划线、或数字,不允许是用标点符号.,特殊变量表,数学运算符号表,常用基本函数,例1 求y=sinx在x=/5时的值,y=sin(pi/5),y=,0.5878,函数M文件,函数M文件是文件名后缀为m的文件,,function开始,格式为:function 因变量名=函数名(自变量名),函数M文件的文件名必须与函数名完全一致,在m文件编辑
2、窗口录入下列两行:,function yy=f2(x)yy=sqrt(x-20).2+1002)+sqrt(x-120).2+1202);,x=20:120;y=f2(x);plot(x,y),输入命令指令,1.建立M文件:fun.m,function f=fun(x)f=100*(x(2)-x(1)2)2+(1-x(1)2,2.在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),数组元素的访问,为了访问数组元素(分量),可
3、对数组元素进行编址:,(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
4、;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*c
5、a3=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、矩阵的建立,
6、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,
7、编写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
8、结构.,1、for循环,允许一组命令以固定的和预定的次数重复,for循环的一般形式为:,for x=array commands end,在for和end语句之间的命令串commands按数组(array)中的每一列执行一次.在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:,n),编写m文件forxunhuan.m如下:for n=1:10 x(n)=sin(n*pi/10)endx,2、while循环,与for循环以固定次数求一组命令相反,while循环以不定的次数求一组语句的值,while(expression)commandsend,只要在表达式(expres
9、sion)里的所有元素为真,就执行while和end语句之间的命令串commands.,例2、设银行年利率为11.25%,将10000元存入银行,问多长时间会连本带利翻一番?,编写m文件whilexunhuan.m如下:money=10000;years=0;while money20000 years=years+1;money=money*(1+11.25/100);end yearsmoney,3、if-else-end结构,(1)、有一个选择的一般形式:,if(espression)commands end,例3、设,先建立以下m文件fun1.m定义函数f(x),再在MATLAB命令窗
10、口输入fun1(2)、fun1(-1)即可.,fun1.m如下:function f=fun1(x)if x1 f=x2+1 end if x=1 f=2*xend,(2)、有两个选择的一般形式是:,if(expression)commands1 else commands2 end,(3)、有三个或更多选择的一般形式是:,if(expression1)commands1 else if(expression2)commands2 else if.else commands end.end end,例4、设,先建立以下m文件fun2.m定义函数f(x),再在MATLAB命令窗口输入fun2(2
11、),fun2(0.5),fun2(-1)即可.,function f=fun2(x)if x1 f=x2+1 else if x=0 f=x3 else f=2*x end end,MATLAB作图,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
12、.曲线图,命令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.,解 输入命令:,x=linspace(0,2*pi,30);y=sin(x);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”来实现.,ezpl
13、ot的调用格式:,ezplot(f,a,b)表示在axb绘制显函数f=f(x)的函数图,ezplot(f,xmin,xmax,ymin,ymax)表示在区间xmin,xmax,ymin,ymax绘制隐函数f(x,y)=0,ezplot(x,y,tmin,tmax)表示在区间tmin,tmax绘制参数方程x=x(t),y=y(t)的函数图.,fplot(fun,lims)表示绘制字符串fun指定的函数在 lims=xmin,xmax的图形.fun必须是m文件的函数名或是独立变量为x的字符串,此字符串被送入函数eval.函数fun(x)必须对向量中的每个元素x返一行向量.,fplot函数不能参数方
14、程和隐函数图形,但在一个图上可以画多个图形.,例2、在0,上画y=sinx的图形.,解 输入命令:ezplot(sin(x),0,pi),解 输入命令:ezplot(cos(t).3,sin(t).3,0,2*pi),解 输入命令:ezplot(exp(x)+sin(x*y),-2,0.5,0,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,画函数
15、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
16、),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
17、;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.
18、,解 输入命令:x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,z,x,y);gtext(sin(x);gtext(cos(x);,命令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释放当
19、前图形窗口。注意”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
20、=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块
21、(逐行对块访问)并激活第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
22、,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(
23、x);plot(x,y)zoom on,特殊二、三维图形,1、特殊二维图形,(1)极坐标图:polar(theta,rho,s),用角度theta(弧度表示)和极半径rho作极坐标图,用s指定线型.,解 输入命令: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、
24、绘制seamount散点图.,解 输入命令:load seamount(装载数据)scatter(x,y,5,z),(3)、平面等值线图:contour(x,y,z,n),contour(x,y,z,n)绘制n个等值线的二维等值线图.,解 输入命令: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 cool,2、特殊的三维图形函数,(1)、空间等值线图:,contour3(x,y,z,n),其中n表示等值线数.,例4、山峰的三维和二维等值线图.,解 输入命令:x,y
25、,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),
链接地址:https://www.31ppt.com/p-6511742.html