matlab7.0x课后习题答案_第1页
matlab7.0x课后习题答案_第2页
matlab7.0x课后习题答案_第3页
matlab7.0x课后习题答案_第4页
matlab7.0x课后习题答案_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

Matlab程序设计实验报告1、利用基本矩阵产生3*3和15*8的单位矩阵、全1矩阵、全0矩阵、均匀分布随机阵(-1,1之间)、正态分布随机阵(均值为1,方差为4)。 解:A1=eye(3); A2=ones(3); A3=zeros(3); A4=2*rand(3)-1; A5=2*randn(3)+1; B1=eye(15,8); B2=ones(15,8); B3=zeros(15,8); B4=2*rand(15,8)-1; B5=2*randn(15,8)+1; 结果:由于数据是随机产生的,所以在没有给出运行结果。2、利用diag等函数产生下列矩阵:a=0 0 8;0 -7 5;2 3 0 b=2 0 4;0 5 0;7 0 8然后利用reshape函数将它们变换成行向量。解:产生a的程序:b=diag(8 -7 2);c=b+diag(5 3,-1);a=fliplr(c)产生b的程序:s=2 2 8;t=4 3 7;v=diag(s);p=diag(t)+fliplr(v);b=fliplr(p)运行结果:a = 0 0 8 0 -7 5 2 3 0b = 2 0 4 0 5 0 7 0 8利用reshape函数将它们变换成行向量:reshape(a,1,9)ans = 0 0 2 0 -7 3 8 5 03、产生一均匀分布在(-5,5)之间的随机阵(50*2),要求精确到小数点后一位。解: A=5-round(100*rand(50,2)/10部分数据结果:A = 2.4000 4.2000 -0.1000 2.7000 -4.6000 -3.3000 -0.5000 -0.40003.5000 4.20004、编程实现当t-,间隔为1时求解正弦和余弦值。解:t=(-1*pi:1/180:pi);y1=sin(t)y2=cos(t)部分数据结果: Columns 10 through 18(y1)-0.0500 -0.0555 -0.0611 -0.0666 -0.0722 -0.0777 -0.0832 -0.0888 -0.09435、利用rand函数产生(0,1)间的均匀分布的10*10随机矩阵A,然后统计A中大于等于0.6的元素的个数。解:A=rand(10);B=A = 0.6;C=sum(B);count=sum(C)运行结果(每次运行结果是不同的,仅作参考):count=326、利用randn函数产生均值为0,方差为1的10*10随机矩阵A,然后统计A中大于-0.5且小于0.5的元素的个数。解:A=randn(10);B=(A-0.5);C=sum(sum(B)运行结果(每次运行结果是不同的,仅作参考):C=481、 解:if and(a1,b=0.5)语句1;elseif and(a0.5)语句2;elseif and(a=1,b=0.5)语句3;else语句4;2、 有一矩阵A,找出矩阵中值等于1的元素,并将它们重新排列成列向量B。解:A=2*rand(4);k=find(A100);A(i,:)= %删去存在奇异值的行运行结果(每次运行结果是不同的,仅作参考):A = 49.5355 -23.7550 -73.0269 -118.4354 39.3214 -88.4472 91.1482 -28.5962 -209.9855 21.2336 -74.0239 -9.5871 -15.8184 72.1322 22.0444 71.4429 11.0770 34.89484、 在给定的100*100矩阵中,删去整行为0的行,删去整列为0的列。解:A=diag(1 2 3 4,1)B=any(A)i,j=find(B=0)A(:,i)= %删除全为0的列B=any(A)i,j=find(B=0)A(j,:)= %删除全为0的行运行结果:初始值:A = 0 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0操作后:A = 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 41、 将窗口分割成四格,分别绘制正弦、余弦、正切和余切函数曲线,并加上适当的标注。程序为:x=0:pi/50:2*pi;k=1 26 51 76 101;x(k)=;%删除正切和余切的奇异点figure(1)subplot(2,2,1)plot(x,sin(x),k-),grid onlegend(ity=sin(x)title(y=sin(x)xlabel(x), ylabel(y) subplot(2,2,2)plot(x,cos(x),r-),grid onlegend(ity=cos(x)title(y=con(x)xlabel(x), ylabel(y) subplot(2,2,3)plot(x,tan(x),k),grid onlegend(ity=tan(x)title(y=tan(x)xlabel(x), ylabel(y) subplot(2,2,4)plot(x,cot(x),b-),grid onlegend(ity=cot(x)title(y=cot(x)xlabel(x), ylabel(y)运行如下:2、绘制多峰函数peaks和三角函数多条曲线。 多峰函数peaks:x,y=meshgrid(-3:0.15:3);z=peaks(x,y);x1=x(1,:);figure(1)plot(x1,z),grid ontitle(二维多峰函数)图形为:x,y=meshgrid(-3:0.15:3);z=peaks(x,y);figure(1)plot3(x,y,z),grid ontitle(三维多峰函数)三角函数多条曲线: 程序为:t=-pi:pi/20:pi;y1=sinh(t); %双曲正弦y2=cosh(t); %双曲余弦figure(1)subplot(2,1,1)plot(t,y1,r-,t,y2,k-),grid onlegend(ity1=sinh(t),ity2=cosh(t)title(三角函数1)xlabel(t), ylabel(y) subplot(2,1,2)plot(t,sin(t),k-),grid onhold on %保持原有图像函数plot(t,cos(t),r-)legend(ity2=cos(t),ity1=sin(t)title(三角函数2)xlabel(t), ylabel(y) 运行图形为:3、将图形窗口分成两个,分别绘制以下函数在-3,3区间上的曲线,并利用axis调整轴刻度,使他们具有相同缩放尺度。y1=2x+5; y2=x2-3x+1。程序为:x=-3:0.1:3;y1=2*x+5; y2=x.2-3*x+1;figure(1)subplot(2,2,1)plot(x,y1,r-),grid onlegend(ity1=2*x+5)title(y1=2x+5)xlabel(x), ylabel(y1)subplot(2,2,2)plot(x,y2,k-),grid onlegend(ity2=x.2-3*x+1)title(y2=x2-3x+1)xlabel(x), ylabel(y2) subplot(2,2,3)plot(x,y1,r-),grid onlegend(ity1=2*x+5)title(调整后的y1=2x+5)axis(-3 3 -10 10)xlabel(x), ylabel(y1) subplot(2,2,4)plot(x,y2,k-),grid onlegend(ity2=x.2-3*x+1)title(调整后的y2=x2-3x+1)axis(-3 3 -10 10) %调整坐标轴xlabel(x), ylabel(y2) 运行后的图形:4、 绘制饼图。程序为:x=190 33 45 42 45;explode=0 1 0 0 0;figure(1)subplot(2,1,1)colormap hsvpie(x,explode)gtext(生活费)gtext(资料费)gtext(电话费)gtext(衣服)gtext(其它)title(二维饼图) subplot(2,1,2)colormap hsvpie3(x,explode)title(三维饼图)图形为:5、画出函数z=(x-2)2+(y-1.2)2+sin(xy)的三维曲线和网格曲线。程序为:x,y=meshgrid(0:0.5:10); %为三维绘图产生x,y数据矩阵z=(x-2).2+(y-1.2).2;figure(1)subplot(2,1,1) mesh(x,y,z),grid on %绘制网格曲线title(网格曲线)subplot(2,1,2)plot3(x,y,z),grid ontitle(三维曲线)运行后的图形:6、画出下列函数的曲面及等高线图z=x2+y2+sin(xy)。程序为:x,y=meshgrid(0:pi/10:2*pi);z=x.2+y.2+sin(x*y);figure(1)subplot(2,1,1)surfc(x,y,z), grid ontitle(曲面和等高线) subplot(2,1,2)c,h=contour(x,y,z);set(h,showtext,on,textstep,get(h,levelstep)*2);title(等高线)运行后的图形:431、将图形窗口分成两个,分别绘制正割和余割曲线,并加上标注。程序为:x1=0:pi10:2*pi;figure(1)subplot(2,1,1)plot(x,sec(x),k-),grid onlegend(ity=sec(x)title(y=sec(x)xlabel(x), ylabel(y) subplot(2,1,2)plot(x,csc(x),k-),grid onlegend(ity=csc(x)title(y=csc(x)xlabel(x), ylabel(y)运行后图形为:2、画出对数和指数曲线并加上标注。x=0.01:0.1:10;y1=log10(x);y2=exp(x);figure(1)subplot(2,1,1)plot(x,y1,k-),grid onlegend(ity1=log-10(x)title(y1=log-10(x)xlabel(x), ylabel(y1) subplot(2,1,2)plot(x,y2,k-),grid onlegend(ity2=exp(x)title(y2=exp(x)xlabel(x), ylabel(y2) 运行后图形为:3、设有函数y=exp(x+5)+x.3,在半对数坐标系中绘制曲线。程序为:x=1:0.01:10;y=exp(x+5)+x.3;figure(1)subplot(2,1,1)plot(x,y,r-),grid onlegend(ity=exp(x+5)+x.3)title(平面坐标)xlabel(x), ylabel(y) subplot(2,1,2)semilogx(x,y,k-),grid on %半对数坐标轴legend(ity=exp(x+5)+x.3)title(半对数坐标)xlabel(x), ylabel(y) 运行后图形为:4、画出各种大小和形状的球和柱体。绘制柱体的程序为:t=0:pi/10:2*pi;figure(1)subplot(2,1,1)x,y,z=cylinder(2+cos(t);surf(x,y,z),axis squaretitle(复杂柱面体) subplot(2,1,2)cylinder, axis squaretitle(简单柱体)绘制球的程序为:figure(1)subplot(2,1,1)sphereaxis equaltitle(半径为1的球) subplot(2,1,2)x,y,z=sphere;x=2*x;y=2*y;z=2*z;surf(x,y,z),axis squaretitle(半径为2的球)运行后的图形: 5、绘制三维条形图:程序为:Y=cool(7);figure(1)subplot(2,2,1),bar3(Y,detached),title(Detached)subplot(2,2,2),bar3(Y,0.25,detached),title(Width=0.25)subplot(2,2,3),bar3(Y,grouped),title(Grouped)subplot(2,2,4),bar3(Y,stacked),title(Stacked)运行后的图形为:6、绘制二维条形图程序为:Y=round(rand(5,3)*10);figure(1)subplot(2,2,1),bar(Y,group),title(Group)subplot(2,2,2),bar(Y,stack),title(Stack)subplot(2,2,3),barh(Y,stack),title(Stack)subplot(2,2,4),bar(Y,1.5),title(Width=1.5)运行后的图形:1、 编写M函数实现:求一个数是否为素数,在编写一主程序,要求通过键盘输入一个整数,然后完成判断其是否为素数。解:function prime(x)n=fix(sqrt(x);for i=2:n if rem(x,i)=0 a=fasle return else a=true end end运行结果: x=56; prime(x)a =fasle2、 编写程序完成从表示字符的响亮中删去空格,并求出字符个数。解:function nstr,n=del(str)nstr=;k=find(str= );nstr=str(k);n=length(nstr);end运行后为: str=dr hy fgh gtesd hgfds; nstr,n=del(str)nstr =drhyfghgtesdhgfdsn = 173、编写M函数统计十进制数值中0的个数,然后编写脚本文件,实现统计所有自然数12006中0的个数。解:M函数为:function y=geshu(x)s=num2str(x);n=length(s);m=0; if s(1)=0 disp(x is error); return end for i=2:n if s(i)=0 m=m+1; end end y=m;脚本文件为 jiu4:sum=0;for x=1:2006 y=geshu(x); sum=sum+y;enddisp(sum)运行结果为: jiu4 5044、利用menu函数输入选择参数ch。当ch=1时,产生-10,10之间均匀分布的随机数;当ch=2时,产生-5,5之间均匀分布的随机数;当ch=3时,产生-1,1之间均匀分布的随机数;当ch=4时,产生均值为0,方差为1的正态分布随机数。要求使用switch函数。解:s=menu(ch,1,2,3,4);n=;switch s case 1,n=20*rand(3)-10 case 2,n=10*rand(3)-5 case 3,n=2*rand(3)-1 case 4,n=randn(3) otherwise disp(error)end运行后:按下2后:n = 4.2274 0.4366 3.3897 3.0037 4.8478 -0.6674 -2.1405 2.1568 -0.29385、 求阵列x的平均值和标准差解:function mean1,stdev=stat2(x)m,n=size(x);if m=1m=n;ends1=sum(x);s2=sum(x.2);mean1=s1/m;stdev=sqrt(s2/m-mean1.2);运行后: x=rand(4,4)+2; mean1,stdev=stat2(x)mean1 = 2.5207 2.3922 2.6498 2.2539stdev = 0.1713 0.1892 0.1725 0.20276、 测试程序执行时间% tech1.mtici=0;for t=0:.01:100 i=i+1; y(i)=sin(t);endtoc % tech2.mtict=0:.01:100;y=sin(t);Toc运行后:Elapsed time is 0.015217 seconds.Elapsed time is 0.000508 seconds.1、产生menu选择输出颜色解:s=menu(color selection,red,green,blue,yellow,black)switch s case 1,scolor=red; case 2,scolor=green; case 3,scolor=blue; case 4,scolor=yellow; case 5,scolor=black; otherwise disp(error)end Scolor运行后:按下red后:s = 1scolor =red2、企业发放的奖金按个人完成的利润(I)提成。分段提成比例为=即如王某完成25万元利润时,个人可得y=10 x 10% + 10 x 5% + 5 x 2% (万元)据此编写程序,求企业职工的奖金。解:function bonus=bon(I)n=fix(I/100000)if(n4) n=4;endbon1=100000*0.1;bon2=0.05*(200000-100000);bon3=0.02*(400000-200000);switch n case 0,bonus=I*100000; case 1 bonus=bon1+0.05*(I-100000); case 2,3 bonus=bon1+bon2+0.02*(I-200000); case 4,bonus=bon1+bon2+bon3+0.01*(I-400000);end运行后: I=1700000; bonus=bon(I)n = 17bonus = 320003、 有一分数序列2/1,3/2,5/3/,8/5求前15项和。解:s=1;t=2;sum=0;x=t/s;sum=sum+x;for i=1:15z=t;t=s+t;s=z;x=t/s;sum=sum+x;endsum运行后: qiuhesum = 26.18814、 约瑟夫环解:n=input(please input n:);m=input(please input m:);b=1:n;i=1;c=0;s=0;while s yueseplease input n:12please input m:3a = Columns 1 through 8 3 6 9 12 4 8 1 7 Columns 9 through 16 2 11 5 10 3 16 5 20 Columns 17 through 23 11 9 2 10 19 15 15、 编写程序计算x在(-3,3)上,并画出曲线。解:function y=func2(x)n=length(x);for i=1:n; if (x(i)=-3)&(x(i)=-1)&(x(i)=1)&(x(i) v,d=eig(a,b)v = -0.4330 -0.2543 -0.1744 -0.5657 0.9660 -0.6091 -0.7018 0.0472 0.7736d = 13.5482 0 0 0 4.8303 0 0 0 3.6216 a=9 1 2;5 6 3;8 2 7; u,s,v=svd(a)u = -0.5601 0.5320 -0.6350 -0.4762 -0.8340 -0.2788 -0.6779 0.1462 0.7204s = 15.5234 0 0 0 4.5648 0 0 0 3.3446v = -0.8275 0.3917 -0.4023 -0.3075 -0.9156 -0.2592 -0.4699 -0.0907 0.8781 l,u=lu(a)l = 1.0000 0 0 0.5556 1.0000 0 0.8889 0.2041 1.0000u = 9.0000 1.0000 2.0000 0 5.4444 1.8889 0 0 4.8367 q,r=qr(a)q = -0.6903 0.3969 -0.6050 -0.3835 -0.9097 -0.1592 -0.6136 0.1221 0.7801r = -13.0384 -4.2183 -6.8260 0 -4.8172 -1.0807 0 0 3.77335、 求解微分方程。解:function dy=funf(t,y)dy=5*y(1)-5*y(2)-6*y(3);3*y(1)-2*y(2)+5*y(3);2*y(1)-y(2)-4*y(3);脚本文件:x0=1,-4,5;tspan=30,100;t,x=ode45(funf,tspan,x0);plot3(x(:,1),x(:,2),x(:,3),grid ontitle(微分方程曲线)运行后:微分方程组x=10(-x+y);y=28x-y-xz;z=xy-8z/3,x0=12,2,9,求微分方程在0,30上的解,并画出系统轨迹。解:脚本文件: 二维图:三维图:2、分别用多项式和指数函数进行拟合。y1(t)=c1+c2t+c3t2,y2(t)=d1+d2exp(t)解:t=0 0.2 0.4 0.6 0.8 1.0 2.0 5.0;y=1.0 1.51 1.88 2.13 2.29 2.40 2.60 -4.00;B1=ones(size(t) t t.*t;B2=ones(size(t) exp(t);A=B1y;C=B2y;T=0:.1:6;Y1=ones(size(T) T T.*T*A;Y2=ones(size(T) exp(T)*C;plot(T,Y1,-,T,Y2,-,t,y,o)legend(itY1,itY2)运行后:3、 将(x-6)(x-3)(x-8)展开为系数多项式的形式。解: a=6 3 8; pa=poly(a); ppa=poly2sym(pa) ppa = x3-17*x2+90*x-1444、 求解多项式x3-7x2+2x+40的根。解: r=1 -7 2 40; p=roots(r); -0.2151 0.4459 0.7949 0.27075、 求解在x=8时多项式(x-1)(x-2) (x-3)(x-4)的值。解: p=poly(1 2 3 4); polyvalm(p,8) ans = 8406、 计算多项式乘法(x2+2x+2)(x2+5x+4)。解: c=conv(1 2 2,1 5 4) c = 1 7 16 18 87、 计算多项式除法(3x3+13x2+6x+8)/(x+4)。解: d=deconv(3 13 6 8,1 4) d = 3 1 28、 求双重积分。9、微分方程组当t=0,=1;=-0.5,求微分方程组t【0,25】上的解,并画出x1-x2的系统轨迹。解:function dy=fund(t,y)dy=0.5-y(1);y(1)-4*y(2);脚本文件:x0=1,-0.5;tspan=0,20;T,Y=ode23(fund,tspan,x0);figure(1)plot(T,Y(:,1),r-,T,Y(:,2)legend(itx1,itx2)运行后:1 利用下标建立多维阵列。产生一个332的多维矩阵AA=5 7 2; 0 1 2; 3 4 2; %产生一个3*3矩阵A(:, :, 2)=2 7 3; 4 2 8; 2 0 3A(:,:,1) = 5 7 2 0 1 2 3 4 2A(:,:,2) = 2 7 3 4 2 8 2 0 32 利用MATLAB函数产生多维阵列。 利用MATLAB的函数(如rand、randn、ones、zeros等)都可直接产生多维阵列,在函数调用时可指定每一维的尺寸。例如,为产生10032维的正态分布随机数R,可输入R=randn(100, 3, 2);A=5*ones(3, 4, 2); %产生元素相同的多维阵列B=repmat(5, 3 4 2); %产生元素相同的多维阵列3 利用cat函数建立多维阵列A=2 8; 0 5; B=1 8; 2 4; C=cat(3,A,B); D=cat(4,A,B); size(C)ans = 2 2 2 size(D)ans = 2 2 1 2这说明得到的C为222维,而D为2212维。4 利用赋值语句建立结构阵列 =John Doe;patient.billing=127.00;patient.test=79 75 73;180 178 177.5;220 210 205; 这时就建立起了一个具有三个域的结构patient,当输入 patientpatient = name: John Doe billing: 127 test: 3x3 double size(patient)ans =1 1 5、利用struct函数建立结构阵列利用单元阵列还可以一次输入多个结构元素,例如输入 n=John Doe Ann Lane Alan Johnson这是一个单元阵列n = John Doe Ann Lane Alan Johnson b=127 28.5 95.8; t1=79 75 73; 180 178 177.5; 220 210 205; t2=68 70 68; 118 118 119; 172 170 169; t3=37 38 36; 119 121 120; 165 166 159; patient2=struct(name,n,billing,b,test,t1 t2 t3); patient2patient2 = 13 struct array with fields: name billing test 6、 结构嵌套A=struct(data,3 4 7;8 0 1,nest, struct(testnum,Test 1,xdata,4 2 8,ydata,7 1 6);A(2).data=9 3 2;7 6 5;A(2).nest.testnum=Test 2;A(2).nest.xdata=3 4 2;A(2).nest.ydata=5 0 9 ; A(1).dataans = 3 4 7 8 0 1 A(2).nestans = testnum: Test 2 xdata: 3 4 2 ydata: 5 0 9 A(2).nest.testnumans =Test 2 A(2).nest.ydata(1,3)ans = 97利用赋值语句建立单元阵列利用赋值语句可对一个单元阵列进行赋值,与一般阵列赋值时使用方括号不同,它应使用花括号,花括号可出现在赋值号右边,也可以出现在左边。例如,建立22单元阵列A,可输入A(1,1)=1 4 3; 0 5 8; 7 2 9;A(1,2)=Anne Smith;A(2,1)=3+7i;A(2,2)= -pi:pi/10:pi; 为得到同样的单元阵列A,也可以输入A1,1=1 4 3; 0 5 8; 7 2 9;A1,2=Anne Smith;A2,1=3+7i;A2,2=-pi:pi/10:pi; 8利用cell函数定义单元阵列cell函数可预分配单元阵列,但其内容为空阵列。例如,建立23的单元阵列,可输入B=cell(2,3);然后利用赋值语句可以给各个单元赋值,如输入 B(1,3)=1:4; B(2,2)=rand(3,3); BB = 1x4 double 3x3 double 7、 综合设计示例设某高等学校某系两个年级共有八个班(29912994,29812984),某年度由五位教师共开设了九门课程,设置情况如表1所示。 表1 课程设置情况学分29912992299329942981298229832984高等数学5普通物理4英语(1)3英语(2)3计算机应用基础3电路分析基础4低频电子线路4高频电子线路2数字信号处理3 表2 教师教学情况29912992299329942981298229832984高等数学3112普通物理2332英语(1)5454英语(2)4545计算机应用基础1234电路分析基础3215低频电子线路1143高频电子线路5134数字信号处理2243表3 考试平均成绩统计表 29912992299329942981298229832984高等数学76.2 68.9 70.1 71.3普通物理60.7 59.2 55.4 61.2英语(1)60.2 65.4 58.1 59.2英语(2)62.3 68.3 71.2 63.9计算机应用基础75.4 80.1 73.2 74.2电路分析基础66.1 65.4 68.2 70.0低频电子线路56.9 59.1 5

温馨提示

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

评论

0/150

提交评论