比赛常用matlab语言.doc_第1页
比赛常用matlab语言.doc_第2页
比赛常用matlab语言.doc_第3页
比赛常用matlab语言.doc_第4页
比赛常用matlab语言.doc_第5页
免费预览已结束,剩余5页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 Matlab常用函数1.1 数学函数1.2 数组x=linspace(first,last,n) 创建从first开始,到last结束,有n个元素的行向量。1.3 矩阵b=zeros(m,n) 产生一个m行、n列的零矩阵c=ones(m,n) 产生一个m行、n列的元素全为1的矩阵d=eye(m,n) 产生一个m行、n列的单位矩阵2 图形处理功能2.1 plot命令X=0 0.5 0.75 0.95 0.8 0.35; plot(X)2.1.1 plot(X,Y)x=0:0.01*pi:pi; y=sin(x).*cos(x); plot(x,y) 2.1.2 若在同一幅图中出现多条曲线x=0:0.01*pi:pi; y=sin(x),cos(x);plot(x,x,y)2.1.3 当plot函数有三个输入变量时:plot(X,Y, Linespec)线型:-实线; : 点线;-. 虚点线;-虚线;颜色:y 黄;m紫;c青;r 红;g 绿;b 蓝;w 白;k 黑;标识:. 点;o圆点;x 叉号;+ 加号;* 星号;s方形;d菱形;v下三角; 上三角; 右三角;p 五角星;h 六角星x=1:0.1*pi:2*pi; y=sin(x); z=cos(x); plot(x,y,-k,x,z,-.kd) 2.2 fplot命令不知道某一函数随自变量变化的趋势。fplot(fun, xmin xmax ymin ymax) 在xmin xmax内画出字符串fun表示的函数的图形,ymin ymax给出了y的限制fplot(sin(x)./x,-20 20 -0.3 1.3) 2.3 axis函数控制坐标轴的特征x=0:0.025:pi/2; plot(x,tan(x),-ko) %使用axis命令设定坐标轴之前的图形 图6axis(0 pi/2 0 5) %使用axis命令设定坐标轴之后的图形 2.4 zoom函数控制坐标轴的缩放 zoom 在zoom on 和zoom off之间切换;zoom on 允许对图形进行缩放;zoom off 禁止对图形进行缩放;zoom xon 允许x 轴缩放;zoom yon 允许y轴缩放;zoom out 恢复进行的一切缩放2.5 grid函数控制平面图形的坐标网格x=0:0.1*pi:2*pi; y=sin(x);plot(x,y) grid on 2.6 图形的标注xlabel ylabel 为x, y坐标轴添加标注xlabel(x,)title 为图形添加标题x=1:0.1*pi:2*pi; y=sin(x);plot(x,y) xlabel(x(0-2pi), fontweight, bold);title(y=sin(x),fontsize, 12, fontweight, bold) %12不加单引号 alpha;beta;gamma;delta;epsilon;zeta;pi;omega;Omega用户也可以对文本标注进行显示控制,如:bf 黑体,it 斜体,rm 标准形式,例如:x=-10:0.1:10; y=exp(-x.2/2);plot(x,y, -)title(bf y=e-x2/2) 2.7 文本标注text(x,y, 标注文本及控制字符串)x=1:0.1*pi:2*pi; y=sin(x);plot(x,y)text(3*pi/4,sin(3*pi/4), leftarrow sin(3pi/4)=0.707)text(5*pi/4,sin(5*pi/4),sin(5pi/4)=,num2str(sin(5*pi/4),rightarrow,HorizontalAlignment, right, Fontsize, 12) 2.8 gtext使用该函数,用户可以通过使用鼠标来选择文本输入的点,单击后,系统将把指定的文本输入到所选的位置上x=1:0.1*pi:2*pi; y=sin(x);plot(x,y)gtext(y=sin(x), Fontsize, 12)2.9 图例标注x=0:0.1*pi:2*pi; y=sin(x); z=cos(x); plot(x,y,k-o,x,z,k-h)legend(sin(x), cos(x)2.10 图形保持x=0:0.1*pi:2*pi; y=sin(x); z=cos(x);plot(x,y,k-*) hold onplot(x,z, k-o) plot(x,y+z,k-h)legend(sin(x), cos(x), sin(x)+cos(x), 0)hold off 2.11 子图subplot(m,n,p)2.12 axis,hold,title,xlabel,grid等都可以只针对某个子图进行图形设置,而不会影响到其他子图3 插值3.1 一维插值Lagrange 插值分段线性插值三次样条插值x0=-5:5; %原变量范围y0=1./(1+x0.2); %产生节点(x0,y0)x=-5:0.1:5; %产生插值点x,间隔0.1y=1./(1+x.2); %计算g(x)用于比较,这是 真解y1=lagr(x0,y0,x); %计算拉格朗日插值y2=interp1(x0,y0,x); %计算分段线性插值 y3=interp1(x0,y0,x,spline); %计算三次样条插值或者y4=spline(x0,y0,x);z=0*x; %产生横轴subplot(2,2,1),plot(x,z,r,x,y),title(真解)subplot(2,2,2),plot(x,z,r,x,y1)title(lagrange解)subplot(2,2,3),plot(x,z,r,x,y2)title(分段线性插值解)subplot(2,2,4),plot(x,z,r,x,y3)title(三次样条插值解)例题:x0=0 3 5 7 9 11 12 13 14 15;y0=0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6;x=0:0.1:15; %插值点y1=lagr(x0,y0,x); %拉格朗日插值y2=interp1(x0,y0,x); %计算分段线性插值 y3=interp1(x0,y0,x,spline); %计算三次样条插值subplot(3,1,1),plot(x0,y0,r+,x,y1)grid,title(lagrange解)subplot(3,1,2),plot(x0,y0,r+,x,y2)grid,title(分段线性插值解)subplot(3,1,3),plot(x0,y0,r+,x,y3)grid,title(三次样条插值解)例:在1-12的11小时内,每隔1小时测量一次温度,测得的温度依次为:5,8,9,15,25,29,31,30,22,25,27,24。试估计每隔1/10小时的温度值。解:程序hours=1:12;temps=5 8 9 15 25 29 31 30 22 25 27 24;h=1:0.1:12;t=interp1(hours,temps,h,spline); %(直接输出数据将是很多的)plot(hours,temps,+,h,t,hours,temps,r:) %作图xlabel(Hour),ylabel(Degrees Celsius)4 拟合若要求所求曲线(面)通过所给所有数据点,就是插值问题;若不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,这就是数据拟合,又称曲线拟合或曲面拟合。4.1 用MATLAB作线性最小二乘拟合4.1.1 a=polyfit(x,y,m) x,y-输入同长度的数组X,Ym-拟合多项式次数a-输出拟合多项式系数a=a1, am , am+1 (数组)4.1.2 多项式在x处的值y可用以下命令计算:y=polyval(a,x)4.1.3 用解超定方程的方法1)输入以下命令:x=0:0.1:1;y=-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2;R=(x.2) x ones(11,1);A=Ry2)计算结果: = -9.8108 20.1293 -0.0317用多项式拟合的命令1)输入以下命令:x=0:0.1:1;y=-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2;A=polyfit(x,y,2)z=polyval(A,x);plot(x,y,k+,x,z,r) %作出数据点和拟合曲线的图形2)计算结果: = -9.8108 20.1293 -0.03174.2 非线性最小二乘拟合4.2.1 Lsqcurvefit已知数据点: xdata=(xdata1,xdata2,xdatan),ydata=(ydata1,ydata2,ydatan)lsqcurvefit用以求含参量x(向量)的向量值函数F(x,xdata)=(F(x,xdata1),F(x,xdatan)输入格式为:(1) x = lsqcurvefit (fun,x0,xdata,ydata);(2) x =lsqcurvefit (fun,x0,xdata,ydata,options);(3) x = lsqcurvefit (fun,x0,xdata,ydata,options,grad);(4) x, options = lsqcurvefit (fun,x0,xdata,ydata,);(5) x, options,funval = lsqcurvefit (fun,x0,xdata,ydata,);(6) x, options,funval, Jacob = lsqcurvefit (fun,x0,xdata,ydata,);fun是一个事先建立的定义函数F(x,xdata) 的M-文件, 自变量为x和xdatax0-迭代初值xdata,ydata-已知数据点options-选项见无约束优化例题:用下面一组数据拟合中的参数a,b,k10020030040050060070080090010004.544.995.355.655.906.106.266.396.506.59该问题即解最优化问题:解法1. 用命令lsqcurvefitF(x,tdata)= ,x=(a,b,k)1)编写M-文件 curvefun1.mfunction f=curvefun1(x,tdata)f=x(1)+x(2)*exp(-0.02*x(3)*tdata)%其中 x(1)=a; x(2)=b;x(3)=k;2)输入命令tdata=100:100:1000cdata=1e-03*4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59;x0=0.2,0.05,0.05;/初始化a,b,cx=lsqcurvefit (curvefun1,x0,tdata,cdata)f= curvefun1(x,tdata)3)运算结果为:f =0.0043 0.0051 0.0056 0.0059 0.00610.0062 0.0062 0.0063 0.0063 0.0063x = 0.0063 -0.0034 0.25424)结论:a=0.0063, b=-0.0034, k=0.25424.3 Lsqnonlin输入格式为:1) x=lsqnonlin(fun,x0);2) x= lsqnonlin (fun,x0,options);3) x= lsqnonlin (fun,x0,options,grad);4) x,options= lsqnonlin (fun,x0,);5) x,options,funval= lsqnonlin (fun,x0,);fun是一个事先建立的定义函数f(x)的M-文件,自变量为xx0-迭代初值options-选项见无约束优化5 数值积分与数值微分5.1 求解定积分5.1.1 h=pi/200;x=0:h:pi/2;y=sin(x);z1=sum(y(1:100)*h; %左矩形公式z2=sum(y(2:101)*h; %右矩形公式z3=trapz(y)*h; %梯形公式z4=quad(sin(x),0,pi/2);%辛普森公式 自动满足的要求z5=quadl(sin(x),0,pi/2);%自适应Gauss-Lobatto公式5.1.2 先建立以weixing.m为名的函数M文件:function y=weixing(t) a=7782.5;b=7721.5;y=sqrt(a2*sin(t).2+b2*cos(t).2); %(1)式的被积函数然后编程如下:t=0:pi/10:pi/2; %将区间5等分y1=weixing(t); format long %长格式输出l1=4*trapz(t,y1) %梯形公式计算l2=4*quad(weixing,0,pi/2) %辛普森公式5.2 二重定积分的数值求解I=dblquad(f,a,b,c,d,tol,trace)该函数求f(x,y)在a,bc,d区域上的二重定积分。参数tol,trace的用法与函数quad完全相同。(1) 建立一个函数文件fxy.m:function f=fxy(x,y)global ki;ki=ki+1; %ki用于统计被积函数的调用次数f=exp(-x.2/2).*sin(x.2+y);(2) 调用dblquad函数求解。global ki;ki=0;I=dblquad(fxy,-2,2,-1,1)kiI = 1.57449318974494ki = 10385.2.1 数值微分x=0:0.1:1;y=-0.447 1.973 3.16 6.43 7.07 7.58 7.68 9.78 9.43 9.32 11.2;n=2;p=polyfit(x,y,n)xi=linspace(0,1,100);z=polyval(p,xi);plot(x,y,o,x,y,xi,z,:)xlabel(x),ylabel(y),title(二次拟合曲线)6 常微分方程数值解6.1 求微分方程(组)的解析解命令:dsolve(方程1, 方程2,方程n, 初始条件, 自变量)求 的通解.解 输入命令:dsolve(Du=1+u2,t)ans = tan(t+C1)6.2 求微分方程的特解. 解 输入命令: y=dsolve(D2y+4*Dy+29*y=0,y(0)=0,Dy(0)=15,x)y =3*exp(-2*x)*sin(5*x) y =3e-2xsin(5x)6.3 求微分方程组的通解. 解 输入命令 : x,y,z=dsolve(Dx=2*x-3*y+3*z,Dy=4*x-5*y+3*z,Dz=4*x-4*y+2*z, t); x=simple(x) % 将x化简 y=simple(y) z=simple(z)x =(C1+C2*exp(-3*t)-C2+C3-C3*exp(-3*t)*exp(2*t)y =(-C1*exp(-4*t)+C1+C2*exp(-4*t)+C2*exp(-3*t)-C2+C3-C3*exp(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论