《Matlab上机题库和详细答案.docx》由会员分享,可在线阅读,更多相关《Matlab上机题库和详细答案.docx(68页珍藏版)》请在课桌文档上搜索。
1、Matlab上机题库及详细答案例1、用一个简单命令求解线性系统3xl+x2-x3=3.6xl+2x2+4x3=2.1-l+4x2+5x3=-1.4解:A=31-1;124;-145;b=3.6;2.1;-1,4;x=Ab%Inv(八)*bX=1.4818-0.46060.3848例2、用简短命令计算并绘制在0x6范围内的sin(2x)、SinX2、sin2x解:x=linspace(0,6)yl=sin(2*x),y2=sin(x.2),y3=(sin(x).2;plot(x,yl,x,y2,x,y3)例3:画出指数衰减曲线yl=exp(-t/指*sin(3*t)和它的包络y2=exp(-t3
2、),t的取值范围是(0,4pi)o解:t=0:pi/100:4*pi;y2=exp(-t3):yl=y2.*sin(3*t);plot(t,yl,-r,t,y2,:b,t,-y2,:b)知识点:1. A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。2. A(i:i+m,:)表示取A矩阵第ii+行的全部元素;A(:,k:k+m)表示取A矩阵第kk+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m列中的所有元素。A=l,2,3,4,5:11,12,13,14,15;21,22,23
3、,24,25;31,32,33,34,35;A(2:3,4:5)A(2:3,1:2:5)3. 利用end运算符,end表示某一维的末尾元素下标。A=l,2,3,4,5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35;A(Cnd,:)先取A最后一行元素A(l,4,3:end)%取A第1、4行中第3列到最后一列元素。4. A(:)将矩阵A的每一列元素堆叠起来,成为一个行向量。例4:使用关系运算和元素的逻辑运算找出大于60小于100的数的位置。解:num=round(rand(l,10)*100);%生成60)&(numl00)n=n.*numReSUlt=
4、find(n)%查找非0位置,按索引方式as=n(result)%显示这些数字例5:产生对角线上全L其余为0的2行3列矩阵的命令是_C。A.ones(2,3)B.ones(3,2)C.eye(2,3)D.eye(3,2)例6:已知a=0:4,b=l:5,下面的运算表达式出错的为_D_。A.a+bB.a.*bC.a,*bD.a*b例7:有一个2行2列的元胞数组c,则c(2)指的是D。A.第1行第2列的元素内容B.第2行第1列的元素内容C.第1行第2列的元素D.第2行第1列的元素例8:已知x=0:10,则X有B个元素。A.10B.11C.9D.12例9:已知数组a=则a(:,end)是指CA.所有
5、元素B.第一行元C.第三列元素D.第三行元素例10:计算X从0到20,y=sin(x)中,0的所有值。解:x=0:20;xl=x.*(xpi)(x0)例11:设A=l23;456为2X3矩阵,分别建立3X3、3X2和与矩阵A同样大小的零矩阵。解:zeros(3);zeros(3,2);A=123;456;zeros(size(八))例12:建立随机矩阵:(1)在区间20,50内均匀分布的5阶随机矩阵。(2)均值为0.6方差为0.1的5阶正态分布随机矩阵解:x=20+(50-20)*rand(5);y=0.6+sqrt(0.l)*randn(5)例13:将101125等25个数填入一个5行5列的
6、表格中,使其每行每列及对角线的和均为565。解:M=100+magic(5)M=117124101108115123105107114116104106113120122HO112119121103111118125102109例14:先建立5X5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,,第五行乘以5。解A=17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19;D=diag(l:5);D*A%用D左乘A,对A的每行乘以一个指定常数例15:输入x,y的值,并将它们的值互换后输出。程序如下:x=inputCInp
7、utXplease.,);y=input(,Inputyplease.,);z=x;x=y;y=z;disp(x);disp(y);例16::求一元二次方程ax2+bx+c=0的根。程序如下:a=input(,a=?);b=input(b=?);c=inputCc=?);d=b*b-4*a*c;x=(-b+sqrt(d)(2*a),(-b-sqrt(d)/(2*a);disp(,xl=,num2str(x(l),x2-,num2str(x(2);例17:输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输
8、出。解:c=input(请输入一个字符,s);ifc=A&c=,a,&c三,0,&c三,9,disp(abs(c)-abs(,0,);elsedisp(c);end例18:某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用PriCe来表示):price200没有折扣200price5003%折扣500price10005%折扣IoOOWPriCe25008%折扣2500price0)Sum;mean=sumcntend例22:求100,200之间第一个能被21整除的整数。程序如下:解:forn=100:200ifrem(n,21)=0Continuejendbreakend例23:若一
9、个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求1,500之间的全部完数。解:form=l:500;S=Ojfork=l:m/2;ifrem(m,k)=0;s=s+k;end;end;ifm=sdisp(m);end;end例24:编写函数文件求半径为r的圆的面积和周长。函数文件如下:解:functions,p=fcircle(r)%CIRCLEcalculatetheareaandperimeterofacircleofradiir%r圆半径%s圆面积%p圆周长s=pi*r*r;p=2*pi*r;例25:利用函数文件,实现直角坐标(x,y)与极坐标(P,)之间的
10、转换。函数文件tran.m:解:functionrho,theta=tran(x,y);rho=sqrt(x*x+y*y);theta=atan(yx);调用tran.m的命令文件InainI.m:在x=input(Pleaseinputx=:);y=input(,Pleaseinputy=:,);rho,the=tran(x,y);rho例26:在0x2区间内,绘制曲线y=2c-0.5XCOS(4冗x)解:程序如下:x=0:pi/100:2*pijy=2*exp(-0.5*x).*cos(4*pi*x);PIot(x,y)例27:用不同标度在同一坐标内绘制曲线yl=O.2e-0.5xcos(
11、4JIX)和y2=2e-0.5xcos(x)o解:x=0:pi/100:2*pi;yl=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);Plotyy(x,yl,x,y2);例28:在0xW2九区间内,用不同线型和颜色绘制曲线y=2e-0.5xsin(2n)及其包络线。解:x=(0:pi/100:2*pi)jyl=2*exp(-0.5*x)*l,-1;y2=2*exp(-0.5*x).*sin(2*pi*x);xl=(0:12)/2;y3-2*exp(-0.5*xl).*sin(2*pi*xl);plot(x,yl,k,x,y2,
12、b一,xl,y3,rp)例29:在0WxW2c区间内,绘制曲线yl=2e-0.5x和y2=cos(4n)并给图形添加图形标注。解:x=0:pi/100:2*pijyl=2*exp(-0.5*x);y2=cos(4*pi*x)jplot(x,yl,x,y2);title(,xfrom0to2pi,);%加图形标题XlabelCVariableX);%加X轴说明ylabel(,VariableY);%加Y轴说明text(0.8,1.5,曲线yl=2e-0.5x)%在指定位置添加图形说明text(2.5,L1,曲线y2=cos(4pix);legend(*yl,y2,)%加图例例30:采用图形保持,
13、在同一坐标内绘制曲线yl=0.2e-0.5xcos(4x)和y2=2e-0.5xcos(nx)o解:x=0:pi/100:2*pi;yl=0.2*exp(-0.5*x).*cos(4*pi*x);plot(x,yl);y2=2*exp(-0.5*x).*cos(pi*x);plot(x,y2);例31:分别以条形图、阶梯图、杆图和填充图形式绘制曲线y=2sin(x)解:x=0:pi/10:2*pi;y=2*sin(x);subplot(2,2,1);bar(x,y,g);title(,bar(x,y,g);axis(0,7,2,2);subplot(2,2,2);stairs(x,y,b);t
14、itle(,stairs(x,y,b,),);axis(0,7,-2,2);subplot(2,2,3)jstem(x,y,k,);title(,stem(xfy,k,),);axis(O,7,-2,2);subplot(2,2,4);fill(x,y,y);title(,fill(x,y,y);axis(0,7,-2,2);例32:绘制r=sin(t)cos(t)的极坐标图,并标记数据点。解:t=0:pi/50:2*pi;r=sin(t).*cos(t);polar(t,r,);例33:绘制y=10x2的对数坐标图,并与直角线性坐标图比较。解:x=0:0.1:10:y=10*x.*x;sub
15、plot(2,2,1);plot(x,y);title(,plot(x,y),)gridon;subplot(2,2,2);semiIogx(xfy);title(,semiIogx(x,y),)gridon;subplot(2,2,3);semilogy(x,y)gridontitle(,semilogy(x,y),);subplot(2,2,4)loglog(x,y);title(,loglog(x,y),)gridon例34:绘制三维曲面图z=sin(x+sin(y)-10o解:解y=Bieshgrid(0:0.25:4*pi);z=sin(x+sin(y)-10;mesh(x,y,z)
16、;axis(04*pi04*pi-2.51);例35:绘制三维图形:(1)绘制魔方阵的三维条形图。(2)以三维杆图形式绘制曲线y=2sin(x)(3)已知X=2347,1827,2043,3025,绘制饼图。(4)用随机的顶点坐标值画出五个黄色三角形。解:subplot(2,2,1);bar3(magic(4);subplot(2,2t2);y=2*sin(0:pi/10:2*pi);stem3(y);subplot(2,2,3);pie3(2347,1827,2043,3025);subplot(2,2,4);fi113(rand(3,5),rand(3,5),rand(3,5),y,)例3
17、6:从不同视点绘制多峰函数曲面。解:subplot(2,2,1);mesh(peaks);view(-37.5,30);%指定子图1的视点title(,azimuth=-37.5,elevation=30,);subplot(2,2,2);mesh(peaks);view(0,90);%指定子图2的视点title(,azimuth=。,elevation=90,);subplot(2,2,3);mesh(peaks);view(90,0);%指定子图3的视点title(,azimuth=90,elevation=0,);subplot(2,2,4);mesh(peaks);view(-7,-1
18、0);%指定子图4的视点title(,azimuth=-7,elevation=-10*)例37:绘制了peaks函数曲面并且将它绕Z轴旋转。解:X,Y,Z=peaks(30);surf(X,Y,Z);axis(-3,3,-3,3,-10,10);axisoff;shadinginterpjolormap(hot);m=moviein(20);%建立一个20列大矩阵fori=l:20view(-37.5+24*(i-l),30)%改变视点m(:i)=getframe;%将图形保存到m矩阵endmovie(m,2);%播放画面2次例38:分别求3X4矩阵X中各列和各行元素中的最大值,并求整个矩阵
19、的最大值和最小值。解:A=13,-56,78;25,63,-235;78,25,563;10-1;a=max(A,2);b-min(A,2);c=max(八)d=min(八);e=max(max(八));f=min(min(八))例39:求矩阵A的每行元素的乘积和全部元素的乘积。解:A=l234;5678;9101112;a=prod(八);b=prod(a)例40:某实验对一根长10米的钢轨进行热源的温度传播测试。用X表示测量点0:2.5:10(米),用h表示测量时间0:30:60(秒),用T表示测试所得各点的温度(C).试用线性插值求出在一分钟内每隔20秒、钢轨每隔1米处的温度TIo解:x
20、=0:2.5:10;h=0:30:60,;T=95,14,OtO,O;88,48,32,12,6;67,64,54,48,41;xi=0:10;hi=0:20:60*;TI=interp2(x,h,T,xi,hi)例41:用一个三次多项式逼近函数SinX解:x=linspace(0,2*pi,50);y=sin(x);p=polyfit(x,y,3);X=Iinspace(0,2*pi,20);Y=sin(X)Yl=Polyval(p,X);PIot(X,Y,:0,X,Yl,-*,)例42:已知f(x)(1)计算f(x)=0的全部根。(2)由方程f(x)=0的根构造一个多项式g(x),并与f(
21、x)进行对比。解:P=3,0,4,-5,-7.2,5;X=roots(P)%求方程f(x)=0的根G=poly(X)%求多项式g(x)例43:计算二重定积分解:(1)建立一个函数文件fxy.m:functionf=fxy(x,y);globalki;ki=ki+l;%ki用于统计被积函数的调用次数f=exp(-.22).*sin(x.2+y);(2)调用dblquad函数求解。globalki;ki=0;I=dblquad(,fxy,-2,2,-1,1);kiI=1.57449318974494ki=1038例44:用LU分解求解例7-1中的线性方程组。解:A=2,1,-5,1;1,-5,0,
22、7;0,2,1,-1;1,6,-1,-4;b=13,-9,6,O1;L,U=lu(八);x=U(Lb)或采用LU分解的第2种格式,命令如下:L,U,P=lu(八);x=U(LP*b)例45:用QR分解求解例7-1中的线性方程组。解:A=2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4;b=13,-9,6,OY;Q,R=qr(八);x=R(Qb)或采用QR分解的第2种格式,命令如下:Q,R,E=qr(八);x=E*(R(Qb)例46求f(x)=x-10x+2=0在xO=O.5附近的根。解:步骤如下:(1)建立函数文件funx.m。functionfx=funx(x)fx=
23、-10.+2,(2)调用fzero函数求根。z=fzero(,fun,0.5)Z=0.3758例47:求下列非线性方程组在(0.5,0.5)附近的数值解。解:(1)建立函数文件myfun.m。functionq=myfun(p)x=P(1);y=p(2);q(l)=x-0.6*sin(x)-0.3*cos(y);q(2)=y-0.6*cos(x)+0.3*sin(y);(2)在给定的初值XO=O.5,y0=0.5下,调用fsolve函数求方程的根。x=fsolve(myfun,0.5,0.5,optimset(Display*,off,)例48:求f(x)=x3-2-5在0,5内的最小值点与最
24、大值点。解:(1)建立函数文件mymin.m。functionfx=mymin(x);fx=x.3-2*x-5;(2)调用fmin函数求最小值点与最大值点。xmin=fmin(mymin,O,5);xmin=O.8165;xmax=fmin(4-mymin,O,5)例49:求解下面的有约束优化问题解:x=.5j.5;A=-l,-0.5;-0.5,-1;b=-0.4;-0.5;Ib=0,0;x,f=fmincon(,fop,x,A,b,lb,);functionf=fop(x);f=0.4*x(2)+x(l)2+x(2)2-(l)*x(2)+l30*x(l)3例50:完成下列操作:(P361,T
25、4)(1)求1求,999之间能被21整除的数的个数。(2)建立一个字符串向量,删除其中的大写字母。解:clc;clear;A=100:999;length(A(mod(A,21)=0);ch三,SDFHJI23423bfjdbg,;Chk=find(ch=,A,);ch(k)=例51:下面是一个线性方程组:095; 0 67 ,0 52(1)求方程的解。(2)将方程右边向量元素b3改为0.53再求解,并比较解的相对变化。(3)计算系数矩阵A的条件数并分析结论。解:clc;clear;A=l./234;345;456;bl=0.95;0.67;0.52;xl=inv(八)*bl%x2=Abl%(
26、2)b2=0.95;0.67;0.53jx2=inv(八)*b2;x3=x2-xl;Bl=norm(xl)%xl的2-范数B2=norm(x2);B=B2B1%(3)条件数:D=COnd(八)%A的2-范数下的条件数,该数都大于1,但越接近与1越好。if(Dle3)disp(结论:A的条件数远大于1,为不良矩阵。)例54:求分段函数的值。x3.x-6XOMx-3yr1-5x*60x5Mx*2Ax3xj-x-lK他用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。解:clc;clear;X=-5.0-3.01.02.02.53.05.0;if(x=0
27、&x=90&x=80&x=70&x=60&x=0&x=0&x120;y=120*84+(time-120)*84*1.15;elseiftime=60&time=120;y=timc*84;elseiftime0;y=timc*84-700;Elsey=ERROR!enddisp(,)disp(,ThewagesoftheNo.,num2str(number),employeeis,num2str(y)例57:设rT,在同一图形窗口采用子图的形式绘制不同图形:条形图、阶梯图、杆图和全对数坐标图。解:clc;clear;t=-pi:O.25:pi;y=l./(l+exp(-t);figure;s
28、ubplot(2,2,1);bar(t,y);subplot(2,2,2);stairs(t,y);subplot(2,2,3)jstem(t,y);subplot(2,2,4);loglog(t,y);例58:数值与符号计算(1)求极限吧二/(2)求不定积分卜LdX1f,l-12-1。-I2-I-。(3)已知线性方程组Ax=b,其中-.V:运用稀疏存储矩阵的方式求其解解:clc;clear;symsabx;%(1)f=exp(x)./(a+b*exp(x);limit(f,x,inf,left,)%(2)symsalphax;f=x*exp(alpha*x);int(f)%(3)B=-120
29、;-l2-1;-12-1;-12-l;02-1;d=-l;0;1;A=spdiags(B,d,5,5)%稀疏存储矩阵的方式%A=full()全矩阵b=l;0;0;0;0;x=(inv(八)*b)%转置例58:绘图pgJys(1)绘制极坐标图:a,366。绘制曲面图:J+户*3.小3解:clc;clear;%(1)thrta=-pi/6:0.1:pi/6;rho=3.*sin(thrta).*cos(thrta)./(sin(thrta).3+cos(thrta).3);polar(thrta,rho)%(2)x=-3:0.1:3;y=-3:0.1:3;x,y=meshgrid(x);z=-5.
30、/(l+x.2+y.2);figure;surf(x,y,z)figurex,y,z=peaks(40);surf(x,y,z)例59:求非线性方程组Ix-1初值5。=的*解:functionF=myfun(X);x=X(1);y=X(2);F(1)=x2+y2-9;F(2)=x+y-1;end命令:clc;clear;fsolve(,myfun,3,0,optimset(Display*,off*)例60:已知某精密仪器的某部件轮廓线的数据如下:用三次样条插值法求X每改变0.1时的y值。解:clc;clear;x=0345791112131415;y=01.21.72.02.12.01.81
31、.21.01.6;X=O:0.1:15;Y=interpl(x,y,X,spline,);plot(X,Y)例61:设计一个图形用户界面,其中有一个坐标平面和两个按钮,当单击第一个按钮时,在坐标平面上绘制一副图形,当单击第二个按钮时,可以改变界面的背景颜色。解:figure(,name,图形演示系统,numbertitle,off,menubar,none*);hplot=uimenu(gcf,Label,ftPlot,);uimenu(hplot,Labe,fehuatu,Cal,x=0:pi/100:2*pi,y=sin(x)/,plot(x,y)/);hselet=uimenu(gcf,
32、labe,Selet,);uimenu(hselet,label,&Rcd,cal,set(gcf,color,r);uimenu(hselet,label,feYellow,cal,set(gcf,color,y);例62:分别用if语句和switch语句实现以下计算,其中,abc和X的值从键盘输入。axi*4f0.5X1Sb-Xi.Sx3ST3Jx=0.5&xl,5;y=a*x2+b*x+c;elseifx=l.5;y=a*sin(b)c+xelseifx=3.5ftx-rVLFxy-O5IylJ1J(0)-0,a(0)-l.j(0)-l解:函数文件functiondy=rigid(t,y
33、)dy=zeros(3,1);dy(l)=y(2)*y(3);dy(2)=-y(l)*y(3);dy(3)=-0.51*y(l)*y(2);end命令:clcjclearT,Y=ode45(,rigid,0,20,0,1,1)PIOt(T,Y(:,1),,T,Y(:,2),+,T,Y(:,3),*);例65:已知0 1 0- -100OOl1 0 0 卜8 0 1 0 . d11 0 1 Igf*完成下列运算:B=P1P2A; (2) B的逆矩阵并验证结果;(3)包括B矩阵主对角线元素的下三角阵;(4)B的行列式值。解:clc;clearjpl=sym(010;100;001*)p2=sym(
34、100;010;101);A=symCabc;def;ghk,);B=pl*p2*A;Bl=inv(B);B2=inv(Bl);tril(B);det(B)例66:用符号方法求下列极限或导数。(第三问!)仁甲a3小誓.和yCiWaj)N-2)kf.求张卷L解:CI.c;CIear;symsx;f=(x*(exp(sin(x)+l)-2*(exp(tan(x)-1).sin(x)3;limit(f)%(2)symsxy;y=(l-cos(2*x)x;diff(y,x)diff(y,x,2)%(3)symsxyf;f=(x2-2*x)*exp(-2-y2-*y);Yx=-diff(f,x)diff
35、(f,y)dfxy=diff(diff(f,x),y);x=sym(,0,);y=sym(,);eval(dfxy)例67:,X-2aX-J”3求h-flo中:(1)最大值、最小值、各数之和。(2)正数、零、负数的个数。解:clc;clear;forn=l:100ifn=lf(n)=l;elseifn=2f(n)=O;elseifn=3f(n)=l;elsef(n)=f(n-l)-2*f(n-2)+f(n-3);endendmax=max(f)min=min(f)sum=sum(f)length(find(f0)length(find(f=0)length(find(fO)例68:若两个连续自
36、然数的乘积减1是素数,则称这两个边疆自然数是亲密数对,该素数是亲密素数。例如,2X37=5,由于5是素数,所以2和3是亲密数,5是亲密素数。求50区间内:(1)亲密数对的对数。(2)与上述亲密数对对应的所有亲密素数之和。解:clc;clear;n=0;fori=2:49b=i*(i+l)-l;m=fix(sqrt(b);forj=2:mifrem(b,j)=0breakendendifj=mn=n+l;s=s+b;end例69:一物理系统可用下列方程组来表示:用ICOSeTWl-SineOO/sin80cos8O网g0m1-SiIIeOO00一CoSe1叫g从键盘输入ml、m2和的值,求al、a2、Nl和N2的值。其中g取9.8,输入。时以角度为单位。要求:定义一个求解线性方程组AX=B的函数文件,然后在命令文件中调用该函数文件。解:函数文件:functionX=mat(ml,m2,thrta)g=9.8;t=thrta*pi180;A=ml*cos(t)-ml-sin(t)0ml*sin(t)0cos(t)0Om2-sin(t)OOO-cos(t)1;b=O;ml*g;O;m2*g;X=inv(八)*b;命令:clc