河南城建学院MATLAB上机实验答案_第1页
河南城建学院MATLAB上机实验答案_第2页
河南城建学院MATLAB上机实验答案_第3页
河南城建学院MATLAB上机实验答案_第4页
河南城建学院MATLAB上机实验答案_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

河南城建学院第1页一熟悉Matlab工作环境1、熟悉Matlab的5个基本窗口思考题:(1)变量如何声明,变量名须遵守什么规则、是否区分大小写。答:变量一般不需事先对变量的数据类型进行声明,系统会依据变量被赋值的类型自动进行类型识别,也就是说变量可以直接赋值而不用提前声明。变量名要遵守以下几条规则:变量名必须以字母开头,只能由字母、数字或下划线组成。变量名区分大小写。变量名不能超过63个字符。关键字不能作为变量名。最好不要用特殊常量作为变量名。(2)试说明分号、逗号、冒号的用法。分号:分隔不想显示计算结果的各语句;矩阵行与行的分隔符。逗号:分隔欲显示计算结果的各语句;变量分隔符;矩阵一行中各元素间的分隔符。冒号:用于生成一维数值数组;表示一维数组的全部元素或多维数组某一维的全部元素。(3)linspace()称为“线性等分”函数,说明它的用法。LINSPACELinearlyspacedvector.线性等分函数LINSPACE(X1,X2)generatesarowvectorof100linearlyequallyspacedpointsbetweenX1andX2.以X1为首元素,X2为末元素平均生成100个元素的行向量。LINSPACE(X1,X2,N)generatesNpointsbetweenX1andX2.ForN<2,LINSPACEreturnsX2.以X1为首元素,X2为末元素平均生成n个元素的行向量。如果n<2,返回X2。ClasssupportforinputsX1,X2:float:double,single数据类型:单精度、双精度浮点型。(4)说明函数ones()、zeros()、eye()的用法。ones()生成全1矩阵。zeros()生成全0矩阵。eye()生成单位矩阵。2、Matlab的数值显示格式思考题:(1)3次执行exist(’pi’)的结果一样吗?如果不一样,试解释为什么?>>pians=3.1416>>sin(pi);>>exist('pi')ans=5>>pi=0;>>exist('pi')ans=1>>pipi=0>>clear>>exist('pi')ans=5>>pians=3.1416河南城建学院第4页答:3次执行的结果不一样。exist()函数是返回变量搜索顺序的一个函数。在第一次执行时返回5代表变量pi是由Matlab构建的变量。在第二次执行时已经通过赋值语句定义了变量pi,返回1代表pi是工作空间变量。第三次执行前清除了工作空间,此时pi为系统默认常量,和第一次执行时性质一样,所以又返回5。(2)圆周率pi是系统默认常量,为什么会被改变为0。pi=0为赋值语句,此时pi不再是系统默认常量,而是定义的变量了。二MATLAB语言基础1、向量的生成和运算练习:使用logspace()创建1~4π的有10个元素的行向量。>>A=logspace(0,1.0992,10)A=1.00001.32471.75502.32493.07994.08015.40517.16039.485612.56612、矩阵的创建、引用和运算(1)矩阵的创建和引用练习:创建以下矩阵:A为3×4的全1矩阵、B为3×3的0矩阵、C为3×3的单位矩阵、D为3×3的魔方阵、E由C和D纵向拼接而成、F抽取E的2~5行元素生成、G由F经变形为3×4的矩阵而得、以G为子矩阵用复制函数生成6×8的大矩阵H。>>A=ones(3,4),B=zeros(3,3),C=eye(3,3),D=magic(3)A=111111111111262234>>A1=sqrtm(A)A1=2.2447+0.2706i0.6974-0.1400i0.9422-0.3494i-0.5815+1.6244i2.1005-0.8405i1.7620-2.0970i1.9719-1.8471i-0.3017+0.9557i0.0236+2.3845i5)矩阵的指数与对数(以e为底)>>Ae=expm(A)Ae=1.0e+004*1.06530.54150.63230.48300.24650.28760.63160.32060.3745>>Ael=logm(A)Ael=1.7129+0.4686i0.5305-0.2425i0.5429-0.6049i1.1938+2.8123i0.3658-1.4552i-0.5514-3.6305i-0.0748-3.1978i0.7419+1.6546i1.8333+4.1282i6)矩阵的提取(取右上三角)与翻转(逆时针转90度)>>a=triu(A)a=63405700-3>>a1=rot90(A)a1=47-335-16-283、多维数组的创建及运算练习:创建三维数组A,第一页为1342,第二页为1>>a=[13;42],b=[12;21],c=[35;71]>>A=cat(3,a,b,c)A(:,:,1)=1342A(:,:,2)=1221A(:,:,3)=3571>>B=reshape(A,3,2,2)B(:,:,1)=124132B(:,:,2)=271531三Matlab数值运算1、多项式运算练习:求s2>>p1=conv([101],conv([13],[11]))p1=14443>>[qr]=deconv(p1,[1021])q=14r=002-5-12、多形式插值和拟合有一组实验数据如附表1-1所示。请分别用拟合(二阶至三阶)和插值(线性和三次样条)的方法来估测X=9.5时Y的值X12345678910Y163270142260436682101014321960>>x=1:10;y=[163270142260436682101014321960];>>p1=polyfit(x,y,1)p1=204.8000-522.4000>>y1=polyval(p1,9.5)y1=1.4232e+003>>p2=polyfit(x,y,2),y2=polyval(p2,9.5)p2=32.0000-147.2000181.6000y2=1.6712e+003>>p3=polyfit(x,y,3),y3=polyval(p3,9.5)p3=2.0000-1.00005.000010.0000y3=1.6820e+003>>y4=interp1(x,y,9.5)y4=1696>>y5=spline(x,y,9.5)y5=16823、习题(1)用函数roots求方程x2>>roots([1-1-1])ans=-0.61801.6180(2)y=sinx,>>x=linspace(0,2*pi,8),y=sin(x)x=00.89761.79522.69283.59044.48805.38566.2832y=00.78180.97490.4339-0.4339-0.9749-0.7818-0.0000>>xi=linspace(0,2*pi,100);y0=sin(xi);y1=interp1(x,y,xi);y2=interp1(x,y,xi,'spline');>>plot(xi,y0,'*',xi,y1,'-.',xi,y2)>>e1=y1-y0;e2=y2-y0;>>plot(xi,e1)>>plot(xi,e2)(3)大气压强p随高度x变化的理论公式为p=1.0332e高度/m0300600100015002000压强/Pa0.96890.93220.89690.85190.79890.7491插值法:>>x=[0300600100015002000];p=[0.96890.93220.89690.85190.79890.7491];>>xi=linspace(0,2000);p0=1.0332*exp(-(xi+500)/7756);>>p1=interp1(x,p,xi,'spline');>>plot(xi,p0,'*',xi,p1)>>e1=p1-p0;>>e=sum(e1.^2)e=1.8652e-005拟合法:>>x=[0300600100015002000];p=[0.96890.93220.89690.85190.79890.7491];>>P=log10(p)P=-0.0137-0.0305-0.0473-0.0696-0.0975-0.1255>>p1=polyfit(x,P,1)p1=-0.0001-0.0137>>b=p1(1)/0.4343,a=10.^p1(2)b=-1.2863e-004a=0.9689>>xi=linspace(0,2000);p0=1.0332*exp(-(xi+500)/7756);>>p2=polyval(p1,xi);P2=10.^p2;>>e2=P2-p0;e=sum(e2.^2)e=1.8116e-005

四Matlab数值运算1、数值微积分练习:瑞士地图如图所示,为了算出其国土面积,首先对地图作如下测量:以由西向东方向为X轴,由南到北方向为Y轴,选择方便的原点,并将从最西边界点到最东边界点在X轴上的区间适当划分为若干段,在每个分点的Y方向测出南边界点和北边界点的Y坐标Y1和Y2,根据地图比例尺知道18mm相当于40km,试由测量数据计算瑞士国土近似面积,与其精确值41228km2比较。X710.51317.53440.544.548566168.576.580.591Y14445475050383030343634414546Y24459707293100110110110117118116118118X96101104106.5111.5118123.5136.5142146150157158Y143373328326555545250666668Y2121124121121121116122838182868568>>x=[7,10.5,13,17.5,34,40.5,44.5,48,56,61,68.5,76.5,80.5,91,96,101,104,106.5,111.5,118,123.5,136.5,142,146,150,157,158];>>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,116,122,83,81,82,86,85,68];>>X=x./18*40;Y1=y1./18*40;Y2=y2./18*40;>>t1=trapz(X,Y1),t2=trapz(X,Y2),t=t2-t1t1=3.3819e+004t2=7.6328e+004t=4.2510e+004>>expt=t-41228expt=1.2819e+0032、习题(4)利用梯形法和辛普森法求定积分的值,并对结果进行比较。如果积分区间改为-5~5结果有何不同?梯形积分中改变自变量x的维数,结果有何不同?1>>x=linspace(-3,3);y=exp(-x.^2/2);>>t=(1/2*pi)*trapz(x,y)t=3.9267>>q=(1/2*pi)*quad('exp(-x.^2/2)',-3,3)q=3.9268>>x=linspace(-5,5);y=exp(-x.^2/2);>>t=(1/2*pi)*trapz(x,y)t=3.9374>>q=(1/2*pi)*quad('exp(-x.^2/2)',-5,5)q=3.9374>>x=linspace(-3,3,150);y=exp(-x.^2/2);>>t=(1/2*pi)*trapz(x,y)t=3.9268(5)分别用矩形法、梯形法、辛普森法和牛顿-科茨4种方法近似计算定积分01矩形法:>>x=linspace(0,1);y=x./(x.^2+4);>>t=cumsum(y)*1/99;T=t(100)T=0.1126梯形法:>>x=linspace(0,1);y=x./(x.^2+4);>>t=trapz(x,y)t=0.1116辛普森法:>>q=quad('x./(x.^2+4)',0,1)q=0.1116牛顿-科茨法:>>q=quadl('x./(x.^2+4)',0,1)q=0.1116五Matlab符号运算1、符号矩阵创建练习:分别用sym和syms创建符号表达式:f1=cosx+->>f1=sym('cos(x)+(-(sin(x)^2))^(1/2)')f1=cos(x)+(-(sin(x)^2))^(1/2)>>symsyet>>f2=y/exp(-2*t)f2=y/exp(-2*t)2、习题(2)试创建以下2个矩阵:A=6、符号表达式的变量替换练习:(1)已知f=a>>f=sym('(a*x^2+b*x+c-3)^3-a*(c*x^2+4*b*x-1)')f=(a*x^2+b*x+c-3)^3-a*(c*x^2+4*b*x-1)>>f1=collect(f),f2=collect(f,'a')f1=a^3*x^6+3*b*a^2*x^5+((c-3)*a^2+2*b^2*a+a*(2*(c-3)*a+b^2))*x^4+(4*(c-3)*b*a+b*(2*(c-3)*a+b^2))*x^3+((c-3)*(2*(c-3)*a+b^2)+2*b^2*(c-3)+a*(c-3)^2-a*c)*x^2+(3*(c-3)^2*b-4*b*a)*x+(c-3)^3+af2=a^3*x^6+3*(b*x+c-3)*x^4*a^2+(3*(b*x+c-3)^2*x^2-c*x^2-4*b*x+1)*a+(b*x+c-3)^38、符号方程的求解练习:(1)求lim>>f=sym('(x^2-1)/(x^2-3*x+2)');>>limit(f,'x',2)ans=NaN(2)求函数f(x)=cos2x-sin2x的积分;求函数gx>>f=sym('cos(2*x)-sin(2*x)');>>int(f)ans=1/2*sin(2*x)+1/2*cos(2*x)>>g=sym('(exp(x)+x*sin(x))^(1/2)');>>diff(g)ans=1/2/(exp(x)+x*sin(x))^(1/2)*(exp(x)+sin(x)+x*cos(x))(3)计算定积分0>>f=sym('sin(x)+2');>>int(f,'x',0,pi/6)ans=-1/2*3^(1/2)+1/3*pi+1(4)求下列线性方程组的解x+y+z=10>>f1=sym('x+y+z=10');>>f2=sym('3*x+2*y+z=14');>>f3=sym('2*x+3*y-z=1');>>g=solve(f1,f2,f3,'x','y','z')g=x:[1x1sym]y:[1x1sym]z:[1x1sym]>>g.xans=1>>g.yans=2>>g.zans=7(5)求解当y(0)=2,z(0)=7时,微分方程组的解dy>>[g_y,g_z]=dsolve('Dy-z=sin(x)','Dz+y=1+x','y(0)=2','z(0)=7','x')g_y=cos(x)+6*sin(x)+1/2*sin(x)*x+1+xg_z=-3/2*sin(x)+6*cos(x)+1+1/2*cos(x)*x六Matlab程序设计1、程序流程控制结构练习:(1)请把exp2.函数文件用while循环改写。functions=exp3(x)n=1;s=0;whilen<=xs=s+n;n=n+1;ends(2)用π4=1-1k=0;jspi=1;i=3;while(1/i)>=10e-6k=k+1;ifrem(k,2)==0jspi=jspi+1/i;elsejspi=jspi-1/i;endi=i+2;endp=4*jspi,k2、子函数和参数传递练习:编写求矩形面积函数rect,当没有输入参数时,显示提示信息;当只输入一个参数时,则以该参数作为正方形的边长计算其面积;当有两个参数时,则以这两个参数为长和宽计算其面积。functions=mianji(a,b)switchnargincase0error('没有输入参数')case1s=a*a;case2s=a*b;end3、习题(3)编写一个函数project1.m,其功能是判断某一年是否为闰年。functionryear(year)s=0;ifrem(year,4)==0s=s+1;endifrem(year,100)==0s=s-1;endifrem(year,400)==0s=s+1;endifs==1fprintf('%4d是闰年.\n',year)elsefprintf('%4d不是闰年.\n',year)end(4)编制一个函数,使得该函数能对输入的两个数值进行比较并返回其中的最小值。functionc=bijiao(a,b)ifnargin==2ifa<bc=a;elsec=b;endelse

温馨提示

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

最新文档

评论

0/150

提交评论