您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 实用工程软件matlab习题
第三章、程序设计1.编写一个函数,将百分制的学生成绩转换为五级制的成绩functions=score(n)n=input('n=');if(n=90&&n=100)s='A';elseif(n=80&&n90)s='B';elseif(n=70&&n80)s='C';elseif(n=60&&n70)s='D';elseif(n=0&&n=60)s='E';elsedisp('输入错误')end2.编写一个函数,计算Fibonacci数F(n)已知:F(1)=F(2)=1F(k)=F(K-1)+F(K-2)functionFn=Fibonacci(n)n=input('输入正整数n=');s=0;t=1;i=0;whilei=0&&int=t+s;s=t-s;i=i+1;enddisp('Fn=')disp(s)3.编写m程序,找出300以内所有满足下两个条件的数(1)各位数字之和为奇数(2)该数为素数Y=primes(300);fori=1:length(Y)a=fix(i/100);b=fix((i-100*a)/10);c=i-100*a-10*b;Ysum(i)=a+b+c;endY(find(mod(Ysum,2)==1))4、所谓“水仙花数”是一个3位数,其各位数字的立方和等于该数本身。例如:153=1^3+5^3+3^3。找出所有的“水仙花数”,并求出水仙花数共有多少个d=0;fori=100:999a=fix(i/100);b=fix((i-100*a)/10);c=i-100*a-10*b;ifi==a*a*a+b*b*b+c*c*cd=d+1;A(d)=i;elseendenddisp('水仙花数')disp(A)disp('水仙花个数')disp(d)5、验证哥德巴赫猜想:使用input函数读入一个大于2的偶数,并输出一个哥德巴赫素数等式例如:6=3+3100=41+59要求读入一个,计算一个,能够连续执行,直到读入0才结束,退出程序clearallfors=1:infn=input('输入一个偶数n=');ifn~=0ifmod(n,2)==0X=primes(n);X(1)=[];e=length(X);N=zeros(1,e);N(:)=n;Y=N-X;i=1;j=1;ifi=nifj(Y(i)-1)j=j+1;ifmod(Y(i),j)==0disp('哥德巴赫猜想不成立');endendi=i+1;endelseX=[];%n输入为奇数,清空XY=[];%n输入为奇数,清空YN=[];%n输入为奇数,清空Ndisp('输入错误,请重新输入');endA=cat(1,X,Y,N);%每一列的第三行是输入的偶数,第一行与第三行均是与之对应的素数disp(A)elsereturnendend选作6、输入n,输出n阶魔方阵(各行各列之和都相等)n=input('请输入正整数n=');if(rem(n,1)==0)&&(n=0)A=magic(n);elsedisp('输入错误')enddisp(A)第四章、MATLAB绘图1.在[02π]范围内绘制二维曲线图y=sin(x)*cos(5x)。(注意使用点乘)x=0:pi/200:2*pi;y=sin(x).*cos(5*x);plot(x,y);xlabel('x');ylabel('y');title('y=sin(x)*cos(5x)')2.在[02π]范围内绘制以Y轴为对数的二维曲线图。(semilogy)y=|1000sin(4x)|+1x=0:pi/200:2*pi;y=abs(1000*sin(4*x))+1;semilogy(x,y);xlabel('x');ylabel('logy');title('y=|1000sin(4x)|+1');gridon3.绘制z=sin(x)*cos(y)的三维网格和三维曲面图,x,y变化范围均为[02π]。[x,y]=meshgrid(0:pi/20:2*pi);z=sin(x).*cos(y);subplot(1,2,1);surf(x,y,z);xlabel('x');ylabel('y');zlabel('z');title('曲面图')subplot(1,2,2);mesh(x,y,z);xlabel('x');ylabel('y');zlabel('z');title('网格图');4.画画,画一个简单的机器人二维图或三维图axisequalfori=0:pi/1000:pi;a=[0,cos(i)];b=[0,sin(i)];line(a,b,'Color','g','LineWidth',2);endforj=0:pi/1000:2*pi;c=[0.5,0.5+0.1*cos(j)];d=[0.5,0.5+0.1*sin(j)];line(c,d,'Color','w','LineWidth',2);x=[-0.5,-0.5+0.1*cos(j)];y=[0.5,0.5+0.1*sin(j)];line(x,y,'Color','w','LineWidth',2);ende=[0.50.8];f=[-0.5-0.8];g=[0.861.3];line(e,g,'Color','g','LineWidth',5);line(f,g,'Color','g','LineWidth',5);rectangle('position',[-1,-1,2,0.9],'edgecolor','g','facecolor','g');rectangle('position',[-1,-2,2,1.5],'curvature',[0.5,0.5],'edgecolor','g','facecolor','g');rectangle('position',[1.2,-1.5,0.3,1.3],'curvature',[0.5,0.5],'edgecolor','g','facecolor','g');rectangle('position',[-1.5,-1.5,0.3,1.3],'curvature',[0.5,0.5],'edgecolor','g','facecolor','g');rectangle('position',[-0.65,-3,0.3,1.3],'curvature',[0.5,0.5],'edgecolor','g','facecolor','g');rectangle('position',[0.45,-3,0.3,1.3],'curvature',[0.5,0.5],'edgecolor','g','facecolor','g');5.画一个带分针和时针的钟表,并较快速的旋转24小时axisequalfori=0:1440X=[0,sin(pi*i/360)];Y=[0,cos(pi*i/360)];h=line(X,Y,'LineWidth',4,'erasemode','xor');A=[0,2*sin(pi*i/30)];B=[0,2*cos(pi*i/30)];h1=line(A,B,'LineWidth',2,'erasemode','xor');axis([-2,2,-2,2]);axisoff;forj=1:length(X)set(h,'xdata',X(j),'ydata',Y(j));drawnow;endfork=1:length(A)set(h1,'xdata',A(k),'ydata',B(k));drawnow;endend第六章数值计算1.已知某班的5名学生的三门课成绩列表如下:学生序号12345高等数学7889647368外语8377807870MATLAB语言8291788268试写出有关命令,先分别找出三门课的最高分及其学生序号;然后找出三门课总分的最高分及其学生序号。A=[7889647368;8377807870;8291788268];y0=max(A);[y1,l1]=max(y0);y2=sum(A);[y3,l2]=max(y2);fprintf('三门课中最高分为%.0f,学生学号为=%.0f\n三门课总分最高分为%.0f,学生学号为%.0f\n’,y1,l1,y3,l2)2.针对上小题的成绩表,求出其三门课总分存入数组ZF,再利用SORT命令对之按降序排序,同时把相应的学生序号存入数组XH。A=[7889647368;8377807870;8291788268];ZF=sum(A);[zf,XH]=sort(ZF,2,'descend');fprintf('三门课总分为%.0f%.0f%.0f%.0f%.0f\n总分按降序排列%.0f%.0f%.0f%.0f%.0f\n对应降序总分的学生学号%.0f%.0f%.0f%.0f%.0f\n',ZF,zf,XH)3.停车场中共有三轮农用车、四轮中巴车、和六轮大货车44辆,各种轮子共有171个,已知四轮中巴车比六轮大货车的2倍少一辆,那么共停了多少辆三轮农用车?a=[111;346;0-12];b=[44;171;1];x=a\b;fprintf('三轮车、中巴车、大货车分别有%.0f、%.0f、%.0f辆\n',x)4.(1)A=[-1/factorial(7)01/factorial(5)0-1/factorial(3)010];x0=roots(A);x1=[0pi/6pi/4pi/3pi/2pi];Y=polyval(A,x1);fprintf('多项式根为')disp(x0)fprintf('多项式值为')disp(Y)(2)A=[-1/factorial(6)01/factorial(4)0-1/factorial(2)01];x0=roots(A);x1=[0pi/6pi/4pi/3pi/2pi];Y=polyval(A,x1);fprintf('多项式根为')disp(x0)fprintf('多项式值为')disp(Y)5.今有多项式P1(x)=x^4-2x+1,P2(x)=x^2+4x-0.5,要求先求得P(x)=P1(x)+P2(x),然后计算xi=0.2*i各点上的P(xi)(i=0,1,2,…,5)值。P1=[100-21];P2=[0014-0.5];P=P1+P2;i=0:5;x=0.2*i;y=polyval(P,x);disp(P);3572460,,,,,643213!5!7!212!4!6!xxxxxxxx求下列多项式的根及时多项式的值disp(y)6、一组数据[-.4471.9783.115.255.024.664.014.583.455.359.22],利用样条插值的办法计算其他中间点并绘制图形x=0:2:20;y=[-.4471.9783.115.255.024.664.014.583.455.359.22];xi=0:0.1:20;yi=interp1(x,y,xi,'spline');plot(x,y,'o',xi,yi)xlabel('x');ylabel('y');x1=input('请输入需要计算的中间点(0到20间)\nx1=');y1=interp1(x,y,x1,'spline');plot(x,y,'o',xi,yi,x1,y1,'r*');xlabel('x');ylabel('y');fprintf('y1=%.0f\n',y1);title('插值拟合')7、一组数据[.4472.9781.114.253.026.666.014.588.4510.358.22],进行多项式数据拟合并绘制原数据以及拟合曲线;x0=0:1:10;y0=[.4472.9781.114.253.026.666.014.588.4510.358.22];p=polyfit(x0,y0,4);x1=0:0.01:10;y1=polyval(p,x1);plot(x0,y0,'
本文标题:实用工程软件matlab习题
链接地址:https://www.777doc.com/doc-6524007 .html