
数学建模 MATLAB简介第一部分 MATLAB基础.doc
5页附录:MATLAB简介第一部分 MATLAB基础一、 MATLAB入门启动MATLAB后,就进入命令窗口(Command Window),提示符为>>1、简单的运算例1 计算球体积r=2; %有“;”不显示结果v=4/3*pi*r^3 %没有“;”显示结果注意:1、可多个命令写一行,命令间用“,”或“;”分开 2、允许使用←↑→↓键来编辑前面的命令2、变量和数据(1)变量有数值型和字符型两类,变量类型和数组大小无需预先定义2)常用的常量 i或j―复数单位 pi― Inf―无穷大(3)变量名以字母开头,后可跟字母、数字和下划线,区分大小写4)变量查询用who或whos,清除变量用clear5)数据显示格式是整数作为整数显示,实数显示4位小数,可通过format命令改变6)数据保存用save,调用用load例2 变量定义、查询和清除a=1+2*iA=’This is a string’who %变量查询whos %变量查询a %显示变量a的值clear a A; %清除变量a和Aclear; %清除所有变量例3 数据显示、保存和调用b=5c=piformat rational;cformat;csave; %当前所有变量和数据保存到数据文件matlab.matclear;cload;c3、数学函数如 sin(A) asin(A) tan(A) cot(A) exp(A) sqrt(A) abs(A) log(A)二、作图 图形可直接保存为M文件,也可以将其作为图片剪贴到WORD文档或其它应用程序中,图形的颜色、线型、标记均可设定。
1、曲线图 plot(x,y) 作出以数据(x(i),y(i))为节点的折线图 fplot(‘fun’,[a,b]) 作出函数fun在区间[a,b]上的曲线图 plot3(x,y,z) 作出空间曲线图例4 作平面曲线的图形x=-1:0.2:2;y=abs(x).^2.*sin(5*x);plot(x,y,’:ro’);close;fplot(‘x^3-x-1’,[-1,2])close; %关闭已有图形窗口fplot(‘[tan(x),sin(x),cos(x)]’,[-2*pi,2*pi,-2*pi,2*pi])例5 作空间曲线的图象clear; close;t=0:0.1:20; r=exp(-0.2*t); h=0.5*pi*t;x=r.*cos(h); y=r.*sin(h); z=t;plot3(x,y,z)2、曲面图 [x,y]=meshgrid(xa,ya) 生成x-y平面上的网格数据 mesh(x,y,z) 绘制网面图例6 作曲面图象clear; close; %关闭已有图形窗口xa=-2:0.2:2; ya=xa;[x,y]=meshgrid(xa,ya);z=x.*exp(-x.^2-y.^2);mesh(x,y,z)三、符号运算 符号运算的变量、表达式均为符号对象,应当用sym或syms生成。
如syms a,b,c; %生成符号变量a,b,c例7 多项式运算举例syms x; f=(x-1)^3; g=(x+1)^3;h=f*gs=expand(h) %展开hf=factor(s) %因式分解hsub=subs(s,x,x^2+x+1) %变量代换hsim=simple(hsub) %化简四、代数方程(组)求根 roots 求多项式方程的根 fzero 求一元函数在[a,b]的实根(要求函数在a,b两点异号) fsolve 求方程(组)的数值解 solve 方程(组)求解例8 求方程的根roots([1 2 0 -5])例9 求方程在[2,6]中的实根fzero(‘sin(x)-0.1*x’,[2,6])例10 解方程组[x,y,f]=fsolve(‘[4*x(1)-x(2)+exp(x(1))/10-1 , -x(1)+4*x(2)+x(1)^2/8]’,[0,0])例11 求方程和方程组的根solve(‘x^2-3*x+exp(x)-2’,’x’)solve(‘x^2-3*x+exp(x)=2’)[x,y]=solve(‘x^2+x*y+y=3’,’x^2-4*x+3=0’)五、曲线插值与拟合1、一维插值 Y1=interp1(X,Y,X1,’method’)其中X和Y为原始数据点;X1为加细的数据点或是我们希望得到插值数据的数据点。
method是指定插值方法: linear 线性插值 cubic 三次多项式插值spline 三次样条插值pp=spline(x,y) 得到样条插值的分段多项式[b,c]=unmkpp(pp) b显示样条函数的结点,c显示样条函数的各个分段三次多项式的系数例12 线性插值clear allx=[7.0 10.5 13.0 17.5 34.0 40.5 44.5 48.0 56.0 61.0 68.5 76.5 80.5 91.0 96.0 101.0 104.0 106.5 111.5 118.0 123.5 136.5 142.0 146.0 150.0 157.0 158.0];y1=[44 45 47 50 50 38 30 30 34 36 34 41 45 46 43 37 33 28 32 65 55 54 52 50 66 66 68];y2=[44 59 70 72 93 100 110 110 110 117 118 116 118 118 121 124 121 121 121 122 116 83 81 82 86 85 68];newx=7:0.1:158;newy1=interp1(x,y1,newx,’linear’);newy2=interp1(x,y2,newx,’linear’);Area=sum(newy2- newy1)*0.1/18^2*1600例13 三次多项式插值clear;close;x=linspace(0,2*pi*300,19);y=[502.8 ,525.0,514.3,451.0,326.5,188.6,92.2,59.6,62.2,102.7,147.1,191.6,236.0,280.5,324.9,369.4413.8,458.3,502.8];plot(x,y,’o’);axis([0,2000,0,550]);可见,可以用三次多项式插值,下面画出柱高插值曲线图。
xi=0:2*pi*300;yi=interp1(x,y,xi,’cubic’);plot(xi,yi);例14 三次样条插值x=1:12;y=[5 6 9 15 25 29 31 30 22 25 27 24];close; plot(x,y,x,y,’+’)pp=spline(x,y);[b,c]=unmkpp(pp)例15 三次样条插值t=[0 0.921 1.843 2.949 3.871 4.978 5.9 7.006 7.982 8.967 10.954 12.032 12.954 13.875 14.982 15.903 16.826 17.931 19.037 19.959 20.839 22.958 23.88 24.986 25.908]; r=[54.516 42.320 38.085 41.679 33.297 37.814 30.748 38.455 32.122 41.718 73.686 76.434 71.686 60.19 68.333 59.217 52.011 56.626 63.023 54.859 55.439 57.602 57.766 51.891 36.464];plot(t,r,’b+’); % (t,r)表示时间和流速title(‘流速散点图’);xlabel(’时间(小时)’); ylabel(‘流速(立方米/小时)’)使用MATLAB软件中的三次样条插值命令得到用水率函数如下图所示。
x0=t;y0=r;[l,n]=size (x0); dl=x0(n)-x0(1);x=x0(1):1/3600:x0(n); %被插值点ys=interp1 (x0,y0,x,’spline’); %样条插值输出plot (x,ys);title(‘样条插值下的流速图’);xlabel(’时间(小时)’); ylabel(‘流速(立方米/小时)’)2、曲线拟合 p=polyfit(x,y,n) 按n次多项式拟合例16 线性函数拟合x=[100 110 120 130 140 150 160 170 180 190];y=[45 51 54 61 66 70 74 78 85 89];close; plot(x,y)p=polyfit(x,y,1)例17 非线性函数化为线性函数拟合t=[0 1 2 3 4 5 6 7 8 9 10];u=[100 75 55 40 30 20 15 10 10 5 5];close; plot(t,u)T=t; U=log(u);p=polyfit(T, U,1)b=p(1)a=exp(p(2))例18 多项式函数拟合x=[34 36 37 38 39 39 39 40 40 41 42 43 43 45 47 48];y=[1.30 1.00 0.73 0.90 0.81 0.70 0.60 0.50 0.44 0.56 0.30 0.42 0.35 0.40 0.41 0.60];close; plot(x,y)p=polyfit(x,y,2)xi=linspace(34,48,1000); %绘图的X轴数据z=polyval(p,xi); %得到多项式在数据点处的值close; plot(x,y,’ko’,xi,z,’r-’)。












