全国大学生数学建模竞赛选拔试题第1页,共5页2011年全国大学生数学建模竞赛测试试题(A)时量:180分钟满分:150分院系:专业:学号:姓名:一、选择题(2分/题×10题=20分)1、Matlab程序设计中清除当前工作区的变量x,y的命令是()A.clcx,yB.clear(xy)C.clearxyD.remove(x,y)2、关于Matlab程序设计当中变量名和函数名的描述,下述说法正确的是()A.都不区分大小写B.都区分大小写C.变量名区分,函数名不区分D.变量名区分,函数名不区分3、MATLAB软件中,把二维矩阵按一维方式寻址时的寻址访问是按()优先的。A.行B.列C.对角线D.左上角4、关于矩阵上下拼接和左右拼接的方式中,下列描述是正确的是()A.上下拼接的命令为C=[A,B],要求矩阵A,B的列数相同;B.左右拼接的命令为C=[A;B],要求矩阵A,B的行数相同;C.上下拼接的命令为C=[A;B],要求矩阵A,B的行数相同;D.左右拼接的命令为C=[A,B],要求矩阵A,B的行数相同。5、Matlab命令a=[6572859387796273667570];find(a=70&a80)得到的结果为()A.[72797375]B.[7279737570]C.[2681011]D.[01000101011]6、矩阵(或向量)的范数是用来衡量矩阵(或向量)的()的一个量A.维数大小B.元素的值的绝对值大小C.元素的值的整体差异程度D.所有元素的和7、计算非齐次线性方程组AX=b的解可转化为计算矩阵X=A-1b,可以用Matlab的命令()实现A.左除命令x=A\bB.左除命令x=A/bC.右除命令x=A\bD.右除命令x=A/b8、关于Matlab的矩阵命令与数组命令,下列说法正确的是()A.矩阵乘A*B是指对应位置元素相乘B.矩阵乘A.*B是指对应位置元素相乘C.数组乘A.*B是指对应位置元素相乘D.数组乘A*B是指对应位置元素相乘9、生成5行4列,并在区间[1:10]内服从均分布的随机矩阵的命令是()A.rand(5,4)*10B.rand(5,4,1,10)C.rand(5,4)+10D.rand(5,4)*9+110、关于Matlab的M文件的描述中,以下错误的是()A、Matlab的M文件有脚本M文件和函数M文件两种;B、Matlab的函数M文件中要求首行必须以function顶格开头;全国大学生数学建模竞赛选拔试题第2页,共5页C、Matlab的函数M文件中要求文件名与函数名必须相同;D、Matlab的函数M文件中的常量nargin和nargout分别表示函数返回值和参数的个数。二、填空题(2分/空×25空=50分)1、二维直角坐标数据..绘图使用Matlab函数;二维函数..绘图使用Matlab函数;二维极坐..标.绘图使用Matlab函数;绘制频数统计直方图.......用Matlab函数;2、三维曲线..绘图的Matlab命令是;三维曲面..绘图的Matlab命令主要有和,生成Z轴的数据之前,根据坐标向量x,y,要先用命令生成坐标网格..矩阵X,Y...的数据;3、用符号计算验证三角等式)sin(sincoscossin212121的MATLAB命令为symst1t2;f=sin(t1-t2);;4、生成符号矩阵22211211aaaaA用命令symsa11a12a21a22,,求其行列式的....值.用命令,求其逆矩阵...用命令,求其特征根...用命令;5、用符号计算求xxx1sinlim2用MATLAB命令symsx;f=x^2*sin(1/x);,其结果为:。6、生成符号函数xexfxsin)(用MATLAB命令symsx;f=exp(-x)*sin(x),则计算22dxfd用MATLAB命令,计算dxxf10)(用MALTAB命令。7、M文件有两类:命令文件....和;而后者的格式..和文件..名.有严格要求,它要求关键词必须处在第一行且顶格书写,文件名...要与相同才能被正确调用;8.填写程序执行结果n=1;a=1;whilesum(1:n)10n=n+1;a=a*n;enddisp(a)a=.9.填写程序执行结果a=[];fori=1:3forj=i:3a(i,j)=i+j;endenddisp(a)a=.全国大学生数学建模竞赛选拔试题第3页,共5页三、纠错验证题(每小题10分,共20分)1.找“拔尖数”对一个行向量a,编程找出其中满足a(i-1)a(i)a(i+1)的所有元素的下标i,即该元素既要大于其左边的那个元素又要大于其右边的那个元素(我们称之为“拔尖数”),把满足上述条件的所有元素的下标..构成一个向量b输出,并返回“拔尖数”的个数k。(1)使用for循环,并编程写成一个函数实现。(共两处错误,10分)function[b,k]=mybest(a)k=0;%“拔尖数”的个数fori=2:length(a)ifa(i)a(i-1)&a(i)a(i+1)%判断是否为“拔尖数”b(k)=i;%记录并返回下标k=k+1;endend(2)不使用for循环,用1~3个语句实现,越简洁越好。(共两处错误,10分)function[b,k]=mybest(a)tmp=[0,diff(a);diff(a),0];b=find(tmp(1,:)0|tmp(2,:)0);k=length(b);二、程序设计填空题(每空6分,共60分)1.矩阵变换编程实现如下矩阵变换,如矩阵35124732291825431748352652271614A,取矩阵右上角部分........(不包括主对角线),10.填写程序执行结果a=[90,70,65,54,76];n=length(a);b=zeros(1,n);fori=1:nifa(i)75b(i)=100-a(i);elseifa(i)=75b(i)=a(i)-60;endenddisp(b)b=.11.填写程序执行结果functiony=temf(a)iflength(a)2y=a;elsey=max(a)-min(a);end命令窗口执行有:temf([23456789])=;temf(78)=.全国大学生数学建模竞赛选拔试题第4页,共5页并将其先后进行水平翻转....和垂直翻转....,之后输出0000260004325003247120B。A=input(“A=”);[r,c]=size(A);fori=1:rforj=1:A(i,j)=;endendA=A(,);2.用MATLAB实现冒泡排序:(1)首先将所有待排序的数字放入工作列表中。(2)从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。(3)重复(2)号步骤,直至再也不能交换。要求:生成1×20在1.0.~.5.0.内的随机整数......,并用冒泡排序的算法,对其按从小到大....重新排序,并返回交换的次数..。如a=[21451369];[b,k]=mysort(a)则返回b=[13214569],k=2(交换的次数)。a=round();[b,k]=mysort(a);%mysort.m函数文件:function[b,k]=mysort(a)n=length(a);%向量a的长度k=0;%交换次数fori=n-1:-1:2forj=1:iifa(i)a(i+1)t=a(i);%交换..两元素;;k=k+1;%交换次数自增endendend全国大学生数学建模竞赛选拔试题第5页,共5页3.二分法求非线性方程的根先绘制函数6432()2613828fxxxxxx在区间[0,2]的函数图像,并绘制网格线,利用二分法编程求方程0)(xf在4.1x附近的根(取初值区间为[0,2],精度取1e-6)。x=0:0.05:2;fx=x.^6-2*x.^4-6*x.^3-13*x.^2+8*x+28;(x,fx,’r*-’)%绘制[0,2]区间内的函数图形gridon%绘制网络线a=0;fa=inf;b=2;fb=;whileabs(b-a)m=;%中点fm=m^6-2*m^4-6*m^3-13*m^2+8*m+28;%中点函数值ifsign(fm)==sign(fa)%中点与左端点函数值同号,中点取代左端点构成新区间a=m;fa=fm;elseifsign(fm)==sign(fb)%中点与右端点函数值同号,中点取代右端点构成新区间b=m;fb=fm;endenddisp(m);