1、 一、填空题(本题满分30分,每空3分) 1.设有程序 A=[2,0,1,0;1,0,1,5;0, 6 ,2, 3];B=[1,2,-1;1,3,1];C=A(1:3,[1,2]); D=size(C)- length(B(2,:));F= C.*B’ 将下列命令的运行结果填在横线上0*、0 D = [0 -1] ; F= [2 0;2 0;0 6] . 2. A=[2,3,2,1;1,2,2,1; 1,2,3,-2]; A1=sum(A>A(2,1));A(2,:)=[],A2=A.^2-4 A1=
2、 ; A2= ; 3.P=[1,2,5,4;2,2,1,3];max(P,[ ],1)= [2 2 5 4] ;mean(P,2)= [3 2] . 5. a=[ ]; for i=1:3; for j=1:3; a(i,j)=(i-j)*abs(i-j); end end b=a(8)*a 运行结果 b= . 4. x=0; n=1; while n<6 x=n+x; n=n+1; end x 运行结果 x= 15
3、 . 7. function f=price(a) switch fix(a/100); case {0,1,2} rate=0; otherwise rate=0.05 end f=a*(1-rate) 运行结果 price (300)= 285 . 6. x=5,y=-20; if x<0 x=y-3 else y= y+10; end z=400*x-y 运行结果 z= 2010 .
4、 二、(本题满分10分)试编写计算程序画出曲线与曲面图形 %1 %2 t=0:0.1: 2*pi; [x,y]=meshgrid(-2:0.1:2); x= sin(t).^3; z=(x.^2+1).* exp(-x.^2- y.^2+)+x.^2.*y; y= cos (t).^3; mesh(x,y,z
5、) plot(x,y) 三、(本题满分12分)编写程序解决下列问题: (1)试产生100´4阶矩阵使其元素在0—100之间的随机整数,可将此矩阵理解为100名同学的四门课程(课程1, 课程2, 课程3, 课程4)的成绩. (2)计算出每门课程和每位同学的平均成绩; (3)统计出总的优秀人次(90分及以上为优秀); (4)统计出四门课程成绩至少有两门课程不及格的人数. 解:(1) a=fix((100-0+1)*rand(100,4)); (2) mean(a) mean(a,2) (3)sum(sum(a>=90,2)==4) (4)sum(sum(a<60,2
6、)>=2) 四、(本题满10分) (1). function y=fun1(x,n) (2). x=0:0.1:2*pi; y=0; y1= fun1 (x,20); for k=1:n y2= fun1 (x,50); y=y+ ((-1)^(k+1)*sin(k*x))/k; subplot(2,1,1),plot(x,y1) end
7、 subplot(2,1,2),plot(x,y2) y 五、(本题满分10分) 试利用微分方程的数值解法写出下列微分方程的求解步骤和MATLAB程序. .(t的变化区间为[0,10]). 第一步:先将高阶微分方程转化为一阶微分方程组: 选择状态变量,则原方程化为 第二步:建立函数文件 function dxdt = fun2(t,x) dxdt = [-3*t*x(1)+ x(2)+t; x(1)]; 第三步:求解微分方程,命令如下: [t,x]=ode45(@fun2,[0,10],[0;2]) 六、参考程
8、序: 1. solve('exp(x)=x^2+2') 2.syms x s A=[x*sin(x),log(x);exp(-x),1/(s+x)] diff(A) int(A) A*A 3.syms x limit((cos(x)-cos(x)^(1/2))/x/(exp(sin(x))-1)) 4.dsolve('D4x+x=2*exp(t)','x(0)=1','Dx(0)=1','D2x(0)=1','D3x(0)=1') 解一:function y=fc(x) y(1)=4*x(1).^2+x(2).^2+2*x(1).*x(2)-x(2)-2
9、 y(2)=2*x(1).^2+x(2).^2+3*x(1).*x(2)-3 y=[y(1) y(2)]; x0=[1 1]; fsolve(@fc,x0) 解二: syms x1 x2 [x1 x2]=solve(‘4*x1^2+ x2^2+2* x1* x2- x2-2=0’,’ 2*x1^2+ x2^2+3* x1* x2-3=0’,’ x1’,’ x2’) 《MATLAB程序设计》参考程序 一、 (30分) 1. D = 0 -1 F = 2 0 2 0
10、 0 6 2. A1 = 1 3 3 0 A2 = 0 5 0 -3 -3 0 5 0 3. max(P,[ ],1)= 2 2 5 4 mean(P,2)= 3 2 4. x=15 5. b = 0 1 4 -1 0 1 -4 -1 0 6.z =2010 7.285 二、(10分) %1 t=0:0.1: 2*pi;
11、x= sin(t).^3; y= cos (t).^3; plot(x,y) %2 [x,y]=meshgrid(-2:0.1:2); z=(x.^2+1).* exp(-x.^2- y.^2+)+x.^2.*y; mesh(x,y,z) 三、(16分) %1 syms x limit((x-1)*log(x)/(exp(x-1)-1),x,1) %2 solve('exp(x)-3*cos(x)+1=0') %3 syms x M=[ exp(-x), x;sin(x),exp(-0.1*x)* cos(3*x)] diff(M,2) int(M,x
12、0,pi) %4 syms t x dsolve('Dx-6*x=exp(-t) ','x(0)=1') 四、(12分) x=0.5:9.5; y=[ 0.16, 0.40, 0.66, 0.75, 0.88, 1.0, 1.1, 1.1, 1.2, 1.3]; x1=1./x;y1=1./y; p=polyfit(x1,y1,1); a=p(2); b= p(1); ye=x./(a*x+b); plot(x,y,'ro', x, ye, 'b-') grid on xlabel('自变量x ') ylabel('因变量y ') title('因变量 y与自
13、变量 x的拟合曲线图') 五、(12分) %参考程序 cj=round(normrnd(70,10,100,4)); for i=1:100 for j=1:4 if cj(i,j)>100 cj(i,j)=100; elseif cj(i,j)<0 cj(i,j)=0; end end end kmean=round(mean(cj)) disp('课程1 课程2 课程3 课程4') disp(sprintf(' %4d%7d%8d%8d ' ,kmean(1),kmean(2),k
14、mean(3),kmean(4))) studentmean=round(mean(cj,2)); studentnumber=[1:100]'; [studentnumber, studentmean] c=sum(sum(cj>=90)) d=sum(sum(cj<60,2)>=2) 六、(10分) (1). function y=fun1(x,n) y=0; for k=1:n y=y+ ((-1)^k*sin(k*x))/k; end y (2). x=0:0.1:2*pi; y1= fun1 (x,20); y2= fun1 (x,50
15、); subplot(211),plot(x,y1) subplot(212),plot(x,y2) 七、(10分) 第一步:先将高阶微分方程转化为一阶微分方程组: 选择状态变量,则原方程化为 第二步:建立函数文件 function dxdt = fun2(t,x) dxdt = [-3*t*x(1)+ x(2)+t; x(1)]; 第三步:求解微分方程,命令如下: [t,x]=ode45(@fun2,[0,10],[0;2]) 补充:1.matlab中清屏的命令是———clc 2. matlab中用于清除工作空间变量的命令是——clear 3. 在【0,5】
16、上求函数f=(x-3)^2-1的最小值。 解:先建立M文本: Function f=myfun(x) F=(x-3)^2-1; End 后保存为myfun.m,然后在命令框中输入: >>x=fminbnd(@myfun,0,5) 结果为在 x=3。 4. 隐函数求导问题:已知cos(x+siny)=siny ,求dy/dx. 解:(1)对方程两边求导 clear syms x g=sym('cos(x+sin(y(x)))=sin(y(x))') dgdx=diff(g,x) 在matlab中运行可得结果 dgdx=-si
17、n(x+sin(y(x)))*(cos(y(x))*diff(y(x),x)+1)=cos(y(x))*diff(y(x),x) (2) 用符合规则的新变量名dydx代替dgdx中的diff(y(x),x) dgdx1=subs(dgdx,'diff(y(x),x)','dydx') %必须采取的步骤 (3) 对变量dgdx1代表的符号方程关于dydx的求解,使dy/dx通过x,y表达出来。 dydx=solve(dgdx1,'dgdx') 即的隐函数的导数dydx。 本题说明:y必须写成y(x),表明y是x的函数;把dgdx中的diff(y(x),x)字符串替换为dydx, 这是必须的,是因为diff(y(x),x)不能作为求解的变量名使用。 5. 求和问题:求. 解: syms n k %定义符号变量 f=1/(k*(k+1)); S=symsum(f,1,n) %求和 运行结果的 S=1-1/(n+1)






