while n<6 x=n+x; n=n+1; end x
运行结果 x= 15 。 25.设有程序:
a=[ ]; for i=1:3; for j=1:3;
a(i,j)=(i-j)*abs(i-j); end end
b=a(8)*a 运行结果 b=
0 1 4 -1 0 1 -4 -1 0 。 26.设有程序:
x=5;y=-24; if x<0 x=y-3 else
y= y+10; end
z=400*x-y 运行结果 z= 2014 。 27.设有程序:
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 。 28.设有程序:
s=0;
a=[ 10,11,12;13 14 15;16 17 18;19 20 21];
for k=a s=s+k; end disp(s) 运行结果 disp(s)=
33 42 51 60
。
29.>>X=linspace(1,2,5)
X =
1.0000 1.2500 1.5000 1.7500 2.0000 。
30.>>X=logspace(1,3,3)
X =
10 100 1000 。 31.>>X=[1;2;3;4;5;6] (2分)
X =
[1 2 3 4 5 6]? 。
32.>> A=ones(2,2);A(:)=1:4;
>> A*A? ans =
[10 14; 14 20] 。 >> B=A.*A? B =
[1 6; 6 16] 。
33.已知y的表达式y??1/i2,当n?100时,求y的值,请补充完整。
i?1n>>n=100; i=1:n;
>>f= 1./i.^2 ;y= sum(f)
34.求出矩阵a=[1 2 3;4 5 6;7 8 9]中每一列中的最大值最小值和矩阵a中每一行中的最大值最小值。 答:
>>a=[1 2 3;4 5 6;7 8 9]; >>b1=max(a) >>c1=min(a) >>b2=max(a,[],2) >>c2=min(a,[],2)
35.找出矩阵a的最大值,并确定其位置。 答:
>>[x,y]=max(a)
五、编程题
1.打印出所有的水仙花数。所谓“水仙花数”,是指一个三位数,其各位数字立方之和等于该数本身。 答:
for k=100:999 a=fix(k/100); b=rem(fix(k/10),10); c=rem(k,10); if a.^3+b.^3+c.^3==k fprintf('%u,',k); end
end 2.利用while语句建立M文本,求出?i的值。
i?1100答:
mysum=0;i=1; while(i<=100)
mysum=mysum+i; i=i+1; end mysum
3.利用for语句建立M文本,求出?i的值。
i?1100答:
mysum=0; for i=1:100
mysum=mysum+i;
end mysum
4.请修改下面的程序,让他们没有for循环语句!
A=[1 2 3; 4 5 6; 7 8 9]; [r c]=size(A); for i=1:1:r for j=1:1:c
if (A(i,j)>8 | A(i,j)<2) A(i,j)=0; end end end 答:
程序如下:
a=[1 2 3;4 5 6;7 8 9]; b=(a<=8&a>=2); a=a.*b
5.编写一个函数,使其能够产生如下的分段函数:
? 0.5x , x?2?f?x???1.5?0.25x , 2?x?6
?0.5 , 6?x?函数的输入参数为x,输出参数为y,函数名为fun。 答:
function y=fun(x) if x<=2 y=0.5*x; else if x>6 y=0.5; else
y =1.5-0.25*x; end end
6.将一个屏幕分4幅,选择合适的步长分别在右上幅与左下幅绘制出如下函数的图形。
?????fx?cosx x??????2 2???? ?22?fx,y?x?y ?2??x??2,?4??y??4??22?24?答:
>>subplot(2,2,2);
>>ezplot('(cos(x))^(1/2)',[-pi/2,pi/2]); >>subplot(2,2,3);
>>x2=-2:0.5:2;y=-4:1:4;
>>ezsurfc('x^2/2^2+y^2/4^2'); 7.A是一个维度m×n的矩阵,写一段程序,算出A中有多少个零元素。 答:
A=input ('请输入一个矩阵') [m,n]= size(A); sig=0; for i=1:m
for j=1:n
if A(i,j)==0 sig = sig+1; end end end sig
8.向量 A=[a1 a2 ??? an],写一段程序, 找出A中的最小元素。 答:
A=input('请输入一个向量') [m,n]= size(A); min = A(1,n); for i=1:n
if A(1,i) end end min 9.编写一个脚本程序实现:在同一图上分别用红色虚线和绿色点划线绘制函数y1=sinx和y2=x2+2x-1在区间[-10,10]的曲线,标题为“用作图法求两条函数曲线的交点”,x轴为“自变量x”,y轴为“函数y1、y2的曲线”,并给出图例“?y1=sinx?,?y2=x2+2x-1?”。(7分) 答: >>x=-10:1:10; >>y1=sin(x); >>y2=x.^2+2*x-1; >>plot(x,y1,'r--'); >>hold on >>plot(x,y2,'g-.'); >>xlabel('自变量x'); >>ylabel('函数y1、y2的曲线'); >>title('用作图法求两条函数曲线的交点'); >>legend('y1=sin(x)','x^2+2x-1'); 10.(1) 建立M函数完成下列运算(函数名为jygxfun) (5分) ?(x?y)f(x,y,z)?ze?x?y?z?sinx(?y?3z) (2) 若x=1,y=2,z=3,采取调用jygxfun方式计算f值, 试编程。 (3分) 答: (1) function f=jygxfun(x,y,z) f=z*exp(-(x+y))+sqrt(x+y+z)*sin(x+y+3*z); (2) >>x=1;y=2;z=3; >>f= jygxfun(x,y,z) 11.编程计算下面问题, x值由键盘输入(input语句)。 (7分) ?x2?1,x?1?y??x2,?1?x?1?x2?1,x??1?答: x=input('x=?'); if x>=1 y=x^2+1; else if x<-1 y=x^2-1; else y=x^2; end end y 12.某人做一种材料的伸缩实验,t为温度(℃),L为长度(mm),实验数据见下表 t L 20 81 25 82.3 30 84 35 86.8 40 89 用二阶拟合法,求L与t的表达式.要求:1.编程;2.写出L与t的关系式。 答: 程序如下: t=[20,25,30,35,40]; L=[81,82.3,84,86.5,89]; k=polyfit(t,L,2) 运行结果: k= 0.0091 -0.1446 80.2114 故L与t的关系式为: L=0.0091t2 -0.1446t+ 80.2114 13.求微分与积分(编程) 2?f?3ff?ax?bxy?cy,求,3,?fdx,?fdx ?2?x?y32答: >>syms x y a b c; >>f=a*x^3-b*x*y+c*y^2; >>dx=diff(f,x,1) >>dy3=diff(f,y,3) >>s1=int(f,x) >>s2=int(f,x,-2,2) 14.解方程(编程) (共10分) ?x?2y?z?1?(1) ?2x?y?2z?3 (6分) ?3x?4y?2z?9?d2ydy?3?2y?3sin(x),y(0)?1,y?(0)?2 (4分) (2) 2dxdx答: (1) >>syms x y z; >>f1='x+2*y+z=1'; >>f2='2*x+y-2*z=3'; >>f3='3*x-4*y+2*z=9?; >>[x,y,z]=solve(f1,f2,f3) (2) >>s=dsolve('D2y+3*Dy+2*y=3*sin(x)','y(0)=1', 'Dy(0)=2','x') 15.绘图(编程) (共20分) (1) 绘曲线(10分) 将matlab绘图窗口分割为二个区域,在左区域绘出y1曲线,在右区域绘出y2曲线,y1为红色,y2为蓝色,步距0.01。