资源描述
.
实验一 MATLAB运算基础
第二题:已知
A= B=
求下列问题:
1) A+6*B和A-B+I
2) A*B和A.*B
3) A^3 A.^3
4) A/B B\A
5) [A,B] [A(1,3),:B.^2]
解:
>> A=[12 34 -4;34 7 87;3 65 7]; B=[1 3 -1;2 0 3;3 -2 7]; I=[1 0 0;0 1 0;0 0 1];
(1)
>> A+6*B
ans =
18 52 -10
46 7 105
21 53 49
>> A-B+I
ans =
12 31 -3
32 8 84
0 67 1
(2)
>> A*B
ans =
68 44 62
309 -72 596
154 -5 241
>> A.*B
ans =
12 102 4
68 0 261
9 -130 49
(3)
>> A^3
ans =
37226 233824 48604
247370 149188 600766
78688 454142 118820
>> A.^3
ans =
1728 39304 -64
39304 343 658503
27 274625 343
(4)
>> A/B
ans =
16.4000 -13.6000 7.6000
35.8000 -76.2000 50.2000
67.0000 -134.0000 68.0000
>> B\A
ans =
109.4000 -131.2000 322.8000
-53.0000 85.0000 -171.0000
-61.6000 89.8000 -186.2000
(5)
>> [A,B]
ans =
12 34 -4 1 3 -1
34 7 87 2 0 3
3 65 7 3 -2 7
>> [A([1,3],:);B^2]
ans =
12 34 -4
3 65 7
4 5 1
11 0 19
20 -5 40
第三题:设有矩阵A和B
A= B=
1) 求他们的乘积C
2) 将矩阵C的右下角3*2子矩阵赋给D
3) 查看matlab工作空间的使用情况
解:
>> A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25]; B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11];
(1)
>> C=A*B
C =
93 150 77
258 335 237
423 520 397
588 705 557
753 890 717
(2)
>> D=C(3:5,2:3)
D =
520 397
705 557
890 717
第四题: 完成下列操作:
1) 求【100,999】之间能被21的数的个数
2)建立一个字符串向量,删除其中的大写字母
解:(1)
>> A=100:999;
>> B=rem(A,21);
>> C=length(find(B==0))
C =
43
(2)
>> A='lsdhKSDLKklsdkl';
>> k=find(A>='A'&A<='Z');
>> A(k)=[]
A =
Lsdhklsdkl
实验二 MATLAB矩阵分析与处理
第三题: 建立一个55矩阵,求它的行列式的值,迹,秩,和范数。
解:
>> A=[1 8 9 4 7;45 89 26 17 0;95 85 23 13 6;75 65 70 54 63;57 26 19 11 2];
>> H=det(A)
H =
13739916
>> Trace=trace(A)
Trace =
169
>> Rank=rank(A)
Rank =
5
>> Norm=norm(A)
Norm =
218.5530
第四题: 已知
A=
求A的特征值及特征向量,并分析其数学意义。
解:
>> A=[-29 6 18;20 5 12;-8 8 5];
>> [V,D]=eig(A)
V =
0.7130 0.2803 0.2733
-0.6084 -0.7867 0.8725
0.3487 0.5501 0.4050
D =
-25.3169 0 0
0 -10.5182 0
0 0 16.8351
第五题:下面是一个线性方程组:
(1) 求方程的解。
(2) 将方程右边向量元素改为0.53,再求解,并比较的变化和解的相对变化。
(3) 计算系数矩阵A的条件数并分析结论。
解:(1)
>> A=[1/2 1/3 1/4;1/3 1/4 1/5;1/4 1/5 1/6];
>> b=[0.95,0.67,0.52]';
>> x=inv(A)*b
x =
1.2000
0.6000
0.6000
(2)
>> B=[0.95,0.67,0.53]';
>> x=inv(A)*B
x =
3.0000
-6.6000
6.6000
(3)
>> cond(A)
ans =
1.3533e+003
实验三 选择程序结构设计
第一题:求分段函数的值
Y=
用if语句实现,分别输入x=-5.0,3.0,1.0,2.5,3.0,5.0时的y值
解:
>> x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0];
>> y=[];
>> for x0=x
if x0<0&x0~=-3
y=[y,x0*x0+x0-6];
elseif x0>=0&x0<5&x0~=2&x0~=3
y=[y,x0*x0-5*x0+6];
else
y=[y,x0*x0-x0-1];
end
end
>> x
x =
-5.0000 -3.0000 1.0000 2.0000 2.5000 3.0000 5.0000
>> y
y =
14.0000 11.0000 2.0000 1.0000 -0.2500 5.0000 19.0000
第二题: 输入一个百分制的成绩,要求输出成绩等级A B C D E。其中90~80为A,80~89为B,70~79为C,60~69为D 60以下为E
要求
1) 分别写入if语句和switch语句实现
2) 输入百分制成绩要判断该成绩的合理性,对不合理的成绩应输出出错的信息
解:
>> x=input('请输入一个百分制成绩:');
请输入一个百分制成绩:
>> if x>100|x<0
disp('您输入的成绩不是百分制成绩,请重新输入。');
else
if x<=100&x>=90
disp('A');
elseif x<=89&x>=80
disp('B');
elseif x<=79&x>=70
disp('C');
elseif x<=69&x>60
disp('D');
else
disp('E');
end
end
第三题: 硅谷公司员工的工资计算方法为
1) 工作时间超过120小时者,超过的部分加15%
2) 工作时数低于60小时的,扣发700元
3) 其余按每小时84元
解:
>> n=input('请输入员工工号:');
请输入员工工号:
>> h=input('该员工工作时数是:');
该员工工作时数是:
>> if h>120
x=(h-120)*84*(1+0.15)+120*84;
elseif h<60
x=h*84-700;
else
x=h*84;
end
disp([num2str(n),'号员工','的应发工资为',num2str(x)]);
号员工的应发工资为
第四题:设计程序,完成两位数的加减乘除四则运算,即产生两位随机整数,再输入一个运算符号,作相应的运算,并显示相应的结果。
解:
>> a=fix(10+(99-10)*rand(1,2))
x=a(1);
y=a(2);
t=input('请输入运算符号:','s');
if t=='+'
z=x+y;
elseif t=='-'
z=x-y;
elseif t=='*'
z=x*y;
elseif t=='/'
z=x/y;
end
disp([num2str(x),t,num2str(y),'=',num2str(z)])
a =
81 22
请输入运算符号:
第五题:建立5*6矩阵,要求输出第n行元素。当n超过矩阵的行数时,自动转入输出矩阵最后一行的元素,并给出出错信息。
解:
>> a=rand(5,6);
>> n=input('请输入您要输出矩阵的第几行:');
请输入您要输出矩阵的第几行:
>> if n>5
disp('超出了矩阵的行数,矩阵的最后一行为:')
a(5,:)
else
disp(['矩阵的第',num2str(n),'行为:'])
a(n,:)
end
矩阵的第行为:
ans =
Empty matrix: 0-by-6
实验四 循环结构程序设计
第一题: 根据公式,求的近似值。当n分别取100,1000,10000时,结果是多少?(要求是:分别用循环结构和向量运算(使用sum函数)来实现。)
解:
>> s=0;
>> n=100;
>> for i=1:n
s=s+1/i/i;
end
PI=sqrt(6*s)
pi
PI =
3.1321
>> s=0;
>> n=1000;
>> for i=1:n
s=s+1/i/i;
end
PI=sqrt(6*s)
pi
PI =
3.1406
>> s=0;
>> n=10000;
>> for i=1:n
s=s+1/i/i;
end
PI=sqrt(6*s)
pi
PI =
3.1415
第二题:根据,求:
(1) y<3时的最大n值。
(2) 与(1)的n值对应的y值 。
解:
>> y=0;
>> n=1;
>> while(y<3)
y=y+1/(2*n-1);
n=n+1;
end
y=y-1/(2*(n-1)-1)
n=n-2
y =
2.9944
n =
56
第三题:考虑以下迭代公式:
其中a,b为正的常数。
(1) 编写程序求迭代的结果,迭代的终止条件为,迭代初值=1.0,迭代次数不超过500次。
(2) 如果迭代过程收敛于r,那么r的准确值是,当(a,b)的值取(1,1),(8,3),(10,0.1)时,分别对迭代结果和准确值进行比较。
解:
>> a=input('a=?');
a=?
>> b=input('b=?');
b=?
>> Xn=1;
Xn1=a/(b+Xn);
n=0;
while abs(Xn1-Xn)>1e-5
Xn=Xn1;
Xn1=a/(b+Xn);
n=n+1;
if n==500
break;
end
end
n
Xn1
r1=(-b+sqrt(b*b+4*a))/2
r2=(-b-sqrt(b*b+4*a))/2
n =
0
Xn1 =
[]
r1 =
[]
r2 =
[]
第四题:已知:
求--中:
(1) 最大值,最小值,各数之和。
(2) 正数,零,负数的个数。
解:(1)
>> for i=1:100
if i==1
f(i)=1;
elseif i==2
f(i)=0;
elseif i==3
f(i)=1;
else
f(i)=f(i-1)-2*f(i-2)+f(i-3);
end
end
>> max(f)
ans =
4.3776e+011
>> min(f)
ans =
-8.9941e+011
>> sum(f)
ans =
-7.4275e+011
(2)
>> length(find(f>0))
ans =
49
>> length(find(f==0))
ans =
2
>> length(find(f<0))
ans =
49
第五题:若两个连续自然数的乘积减1是素数,则称这两个连续自然数是亲密数对,该素数是亲密素数。例如,23-1=5,由于5是素数,所以2和3 是亲密数对,5是亲密对数。求{2,50}区间内:
(1) 亲密数对的对数。
(2) 与上述亲密数对对应的所有亲密素数之和。
解:
>> s=0; n=0;
>> for i=2:49
b=i*(i+1)-1;
m=fix(sqrt(b));
for j=2:m
if rem(b,j)==0
break
end
end
if j==m
n=n+1;
s=s+b;
end
end
n
s
n =
28
s =
21066
实验六 高层绘图操作
第二题: 已知y1=x^2,y2=cos(2x),y3=y1*y2,完成下列操作
1) 在同一坐标系中的不同颜色和线型绘制三条曲线
2) 以子图像绘制三条曲线
3)分别用条形图,阶梯图,杆图和填充图绘制三条曲线
解:(1)
>> x=linspace(-2*pi,2*pi,100);
>> y1=x.^2;
>> y2=cos(2*x);
>> y3=y1.*y2;
>> plot(x,y1,'b-',x,y2,'r:',x,y3,'y--');
>>
>> text(4,16,'\leftarrow y1=x^2');
>> text(6*pi/4,-1,'\downarrow y2=cos(2*x)');
>> text(-1.5*pi,-2.25*pi*pi,'\uparrow y3=y1*y2');
(2):
>> x=linspace(-2*pi,2*pi,100);
>> y1=x.^2;
>> y2=cos(2*x);
>> y3=y1.*y2;
>> subplot(1,3,1);
>> plot(x,y1);
>>
>> title('y1=x^2');
>> subplot(1,3,2);
>> plot(x,y2);
>>
>> title('y2=cos(2*x)');
>> subplot(1,3,3);
>> plot(x,y3);
>>
>> title('y3=x^2*cos(2*x)');
(3)
>> x=linspace(-2*pi,2*pi,20);
>> y1=x.^2;
>> subplot(2,2,1);
>> bar(x,y1);
>>
>> title('y1=x^2的条形图');
>> subplot(2,2,2);
>> stairs(x,y1);
>>
>> title('y1=x^2的阶梯图');
>> subplot(2,2,3);
>> stem(x,y1);
>>
>> title('y1=x^2的杆图');
>> subplot(2,2,4);
>> fill(x,y1,'r');
>>
>> title('y1=x^2的填充图');
(2)
>> x=linspace(-2*pi,2*pi,20);
y2=cos(2*x);
subplot(2,2,1);
bar(x,y2);
title('y2=cos(2*x)的条形图');
subplot(2,2,2);
stairs(x,y2);
title('y2=cos(2*x)的阶梯图');
subplot(2,2,3);
stem(x,y2);
title('y2=cos(2*x)的杆图');
subplot(2,2,4);
fill(x,y2,'r');
title('y2=cos(2*x)的填充图');
(3)
>> x=linspace(-2*pi,2*pi,20);
y1=x.^2;
y2=cos(2*x);
y3=y1.*y2;
subplot(2,2,1);%分区
bar(x,y3);
title('y3=y1.*y2;的条形图');%设置标题
subplot(2,2,2);
stairs(x,y3);
title('y3=y1.*y2;的阶梯图');
subplot(2,2,3);
stem(x,y3);
title('y3=y1.*y2;的杆图');
subplot(2,2,4);
fill(x,y3,'r');%如果少了'r'则会出错
title('y3=y1.*y2;的填充图');
第三题:已知
Y=
在-5《x《5区间绘制曲线。
解:
>> x=-5:0.01:5;
>> y=[];
>> for x0=x
if x0<=0
y=[y,(x0+sqrt(pi))/exp(2)];
else
y=[y,0.5*log(x0+sqrt(1+x0^2))];
end
end
plot(x,y)
>>
第五题: 绘制函数的曲面图形和等高线。
Z=cosxcosy
其中x的21个值均匀分布在【-5,5】范围,y的31的值巨晕分布在【0,10】,要求用subplot(2,1,1)和subpolt(2,1,1)将曲面图画在一个窗口上。
解:
>> x=linspace(-5,5,21);
>> y=linspace(0,10,31);
>> [x,y]=meshgrid(x,y);
>> z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4);
>> subplot(2,1,1);
>> surf(x,y,z);
>>
>> subplot(2,1,2);
>> contour3(x,y,z,50);
实验七 低层绘图操作
第一题: 建立一个图形窗口,使之背景颜色为红色,并在窗口上保留原有的菜单项,而且按下列鼠标器的左键之后显示出left botton pressed 字样
解:
>> h=figure('MenuBar','figure','color','r','WindowButtonDownFcn','disp(''Left Button Pressed'')')
h =
1
Left Button Pressed
第二题:先利用默认属性绘制曲线y=x^2 *e^2x,然后通过图形句柄操作改变曲线的颜色,线性和线宽,并利用文字对象添加文字标注。
解:
>> x=-2:0.01:2;
>> y=x.^2.*exp(2*x);
>> h=line(x,y);
>>
>> set(h,'color','r','linestyle',':','linewidth',2)
>> text(1,exp(2),'y=x^2*exp(2*x)')
实验八 数据处理与多项式运算
第一题: 利用MATLAB提供的rand函数生成30000个符合均匀分布的随机数,然后检验随机数的性质:
(1) 均值和标准方差。
(2) 最大元素和最小元素。
(3) 大于0.5的随机数个数占总数的百分比。
解:(1)
>> A=rand(1,30000);
>> b=mean(A)
b =
0.4988
>> std(A,0,2)
ans =
0.2890
(2)
>> max(A)
ans =
1.0000
>> min(A)
ans =
4.8345e-005
(3)
>> n=0;
>> for i=1:30000
if A(i)>0.5
n=n+1;
end
end
>> p=n/30000
p =
0.5006
第二题: 将100个学生的5门功课的成绩存入矩阵P中,进行如下处理:
(1) 分别求每门课的最高分,最低分,以及相应学生序号。
(2) 分别求每门课的平均分和标准方差。
(3) 5门课总分的最高分,最低分,以及相应的学生序号。
(4) 将5门课总分按照从大到小的顺序存入zcj中,相应的学生序号存入xsxh。
提示:上机调试时,为避免学生输入成绩的麻烦,可用取值范围在{45,95}之间的随机矩阵来表示学生成绩。
解:(1)
>> A=45+51*rand(100,5);
>> [Y,U]=max(A)
Y =
95.9985 95.9656 95.5020 95.7032 95.5696
U =
29 66 55 47 69
>> [a,b]=min(A)
a =
45.2423 45.8828 45.0092 45.2530 45.6793
b =
36 85 2 67 48
(2)
>> m=mean(A)
s=std(A)
m =
70.9171 69.7859 73.5350 72.8288 71.6800
s =
15.1378 14.1296 15.0116 15.1622 14.8254
(3)
>> sum(A,2)
[Y,U]=max(ans)
[a,b]=min(ans)
ans =
310.9073
300.1903
381.2853
399.3692
367.1891
360.3795
353.3803
302.8869
399.8438
427.2878
336.4110
358.9261
351.2553
331.9469
413.0334
344.4165
361.9468
337.9836
340.1552
382.3467
337.6998
329.6321
290.0841
335.4717
413.6694
387.8507
348.4086
320.4340
418.2465
416.0586
371.3836
356.8309
384.2258
317.6676
351.3684
342.2732
339.9799
393.7629
401.0900
387.0595
354.1276
398.4044
369.0955
368.0804
358.5997
350.1610
384.3793
340.3847
270.1099
351.2449
390.4362
355.4126
343.7438
348.7042
429.4294
348.9054
389.0234
376.0627
346.3973
338.2912
366.0568
343.0276
358.4005
335.2967
275.2407
381.5512
373.2066
362.1673
382.3756
388.9117
401.5248
347.8608
360.8734
362.0857
394.7853
368.3532
390.2871
377.0796
396.6192
380.7487
374.4978
372.7407
370.7008
410.8179
279.0636
333.6823
293.9671
359.9178
400.2025
274.0383
404.8475
354.2595
334.9726
364.8144
389.8509
315.2819
280.7866
358.9722
316.9236
322.5536
Y =
429.4294
U =
55
a =
270.1099
b =
49
(4)
>> [zcj,xsxh]=sort(ans)
zcj =
270.1099
274.0383
275.2407
279.0636
280.7866
290.0841
293.9671
300.1903
302.8869
310.9073
315.2819
316.9236
317.6676
320.4340
322.5536
329.6321
331.9469
333.6823
334.9726
335.2967
335.4717
336.4110
337.6998
337.9836
338.2912
339.9799
340.1552
340.3847
342.2732
343.0276
343.7438
344.4165
346.3973
347.8608
348.4086
348.7042
348.9054
350.1610
351.2449
351.2553
351.3684
353.3803
354.1276
354.2595
355.4126
356.8309
358.4005
358.5997
358.9261
358.9722
359.9178
360.3795
360.8734
361.9468
362.0857
362.1673
364.8144
366.0568
367.1891
368.0804
368.3532
369.0955
370.7008
371.3836
372.7407
373.2066
374.4978
376.0627
377.0796
380.7487
381.2853
381.5512
382.3467
382.3756
384.2258
384.3793
387.0595
387.8507
388.9117
389.0234
389.8509
390.2871
390.4362
393.7629
394.7853
396.6192
398.4044
399.3692
399.8438
400.2025
401.0900
401.5248
404.8475
410.8179
413.0334
413.6694
416.0586
418.2465
427.2878
429.4294
xsxh =
49
90
65
85
97
23
87
2
8
1
96
99
34
28
100
22
14
86
93
64
24
11
21
18
60
37
19
48
36
62
53
16
59
72
27
54
56
46
50
13
35
7
41
92
52
32
63
45
12
98
88
6
73
17
74
68
94
61
5
44
76
43
83
31
82
67
81
58
78
80
3
66
20
69
33
47
40
26
70
57
95
77
51
38
75
79
42
4
9
89
39
71
91
84
15
25
30
29
10
55
第五题 :有三个多项式试进行下列操作:
(1) 求p(x)=p1(x)+p2(x)+p3(x);
(2) 求p(x)的根。
(3) 当x取矩阵A的每一元素时,求p(x)的值。其中:
A=
(4) 当以矩阵A为自变量时,求P(x)的值。其中A的值与第(3)题相同。
解:(1)
>> p1=[1,2,4,0,5];
>> p2=[1,2];
>> p3=[1,2,3];
>> p=p1+[0,conv(p2,p3)]
p =
1 3 8 7 11
(2)
>> A=roots(p)
A =
-1.3840 + 1.8317i
-1.3840 - 1.8317i
-0.1160 + 1.4400i
-0.1160 - 1.4400i
(3)
>> A=[-1 1.2 -1.4;0.75 2 3.5;0 5 2.5];
>> polyval(p,A)
ans =
1.0e+003 *
0.0100 0.0382 0.0125
0.0223 0.0970 0.4122
0.0110 1.2460 0.1644
(4)
>> polyvalm(p,A)
ans =
1.0e+003 *
0.0076 -0.1281 -0.0775
0.1328 1.3900 1.1644
0.1824 1.7364 1.5198
实验九 数值微积分与方程数值求解
第一题:求函数在指定点的数值导数。
f(x)=, x=1,2,3.
解:
>> a=[x x.^2 x.^3;1 2*
展开阅读全文