1、Matlab上机实验答案Matlab上机实验答案实验一 MATLAB运算基础1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。(1) z1=2*sin(85*pi/180)/(1+exp(2)z1 = 0.2375(2) ,其中 x=2 1+2i;-0.45 5; z2=1/2*log(x+sqrt(1+x2)z2 = 0.7114 - 0.0253i 0.8968 + 0.3658i 0.2139 + 0.9343i 1.1541 - 0.0044i(3) a=-3.0:0.1:3.0; z3=(exp(0.3.*a)-exp(-0.3.*a)./2.*sin(
2、a+0.3)+log(0.3+a)./2)( z33=(exp(0.3*a)-exp(-0.3*a)/2.*sin(a+0.3)+log(0.3+a)/2)可以验证z3=z33,是否都为1)z3 = Columns 1 through 5 0.7388 + 3.1416i 0.7696 + 3.1416i 0.7871 + 3.1416i 0.7913 + 3.1416i 0.7822 + 3.1416i Columns 6 through 10 0.7602 + 3.1416i 0.7254 + 3.1416i 0.6784 + 3.1416i 0.6196 + 3.1416i 0.5496
3、 + 3.1416i Columns 11 through 15 0.4688 + 3.1416i 0.3780 + 3.1416i 0.2775 + 3.1416i 0.1680 + 3.1416i 0.0497 + 3.1416i Columns 16 through 20 -0.0771 + 3.1416i -0.2124 + 3.1416i -0.3566 + 3.1416i -0.5104 + 3.1416i -0.6752 + 3.1416i Columns 21 through 25 -0.8536 + 3.1416i -1.0497 + 3.1416i -1.2701 + 3.
4、1416i -1.5271 + 3.1416i -1.8436 + 3.1416i Columns 26 through 30 -2.2727 + 3.1416i -2.9837 + 3.1416i -37.0245 + 0.0000i -3.0017 + 0.0000i -2.3085 + 0.0000i Columns 31 through 35 -1.8971 + 0.0000i -1.5978 + 0.0000i -1.3575 + 0.0000i -1.1531 + 0.0000i -0.9723 + 0.0000i Columns 36 through 40 -0.8083 + 0
5、.0000i -0.6567 + 0.0000i -0.5151 + 0.0000i -0.3819 + 0.0000i -0.2561 + 0.0000i Columns 41 through 45 -0.1374 + 0.0000i -0.0255 + 0.0000i 0.0792 + 0.0000i 0.1766 + 0.0000i 0.2663 + 0.0000i Columns 46 through 50 0.3478 + 0.0000i 0.4206 + 0.0000i 0.4841 + 0.0000i 0.5379 + 0.0000i 0.5815 + 0.0000i Colum
6、ns 51 through 55 0.6145 + 0.0000i 0.6366 + 0.0000i 0.6474 + 0.0000i 0.6470 + 0.0000i 0.6351 + 0.0000i Columns 56 through 60 0.6119 + 0.0000i 0.5777 + 0.0000i 0.5327 + 0.0000i 0.4774 + 0.0000i 0.4126 + 0.0000i Column 61 0.3388 + 0.0000i(4) ,其中t=0:0.5:2.5 t=0:0.5:2.5; z4=(t=0&t=1&t=2&t A=12 34 -4;34 7
7、 87;3 65 7; B=1 3 -1; 2 0 3;3 -2 7; A+6*Bans = 18 52 -10 46 7 105 21 53 49 I=eye(3); A-B+Ians = 12 31 -3 32 8 84 0 67 1(2) A*Bans = 68 44 62 309 -72 596 154 -5 241 A.*Bans = 12 102 4 68 0 261 9 -130 49(3) A3ans = 37226 233824 48604 247370 149188 600766 78688 454142 118820 A.3ans = 1728 39304 -64 393
8、04 343 658503 27 274625 343(4) A/Bans = 16.4000 -13.6000 7.6000 35.8000 -76.2000 50.2000 67.0000 -134.0000 68.0000 BAans = 109.4000 -131.2000 322.8000 -53.0000 85.0000 -171.0000 -61.6000 89.8000 -186.2000(5) A,Bans = 12 34 -4 1 3 -1 34 7 87 2 0 3 3 65 7 3 -2 7 A(1,3,:);B2ans = 12 34 -4 3 65 7 4 5 1
9、11 0 19 20 -5 403. 设有矩阵A和B(1) 求它们的乘积C。(2) 将矩阵C的右下角32子矩阵赋给D。(3) 查看MATLAB工作空间的使用情况。 A=(reshape(1:25,5,5); B=3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11; C=A*BC = 93 150 77 258 335 237 423 520 397 588 705 557 753 890 717 D=C(3:5,2:3)D = 520 397 705 557 890 717 whos Name Size Bytes Class Attributes A 5x5 200 d
10、ouble B 5x3 120 double C 5x3 120 double D 3x2 48 double 4. 完成下列操作:(1) 求100,999之间能被21整除的数的个数。(2) 建立一个字符串向量,删除其中的大写字母。 n=100:999; l=find(rem(n,21)=0); length(l)ans =43 ch=aegbBOIEG0je23RGnc; wz=find(ch=A&ch ch(wz)=ch =aegb0je23nc实验二 MATLAB矩阵分析与处理1. 设有分块矩阵,其中E、R、O、S分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证。 E=eye
11、(3); R=rand(3,2); O=zeros(2,3); S=diag(1:2); A=E,R;O,SA = 1.0000 0 0 0.8147 0.9134 0 1.0000 0 0.9058 0.6324 0 0 1.0000 0.1270 0.0975 0 0 0 1.0000 0 0 0 0 0 2.0000 A2ans = 1.0000 0 0 1.6294 2.7401 0 1.0000 0 1.8116 1.8971 0 0 1.0000 0.2540 0.2926 0 0 0 1.0000 0 0 0 0 0 4.0000 E,R+R*S;O,S2ans = 1.0000
12、 0 0 1.6294 2.7401 0 1.0000 0 1.8116 1.8971 0 0 1.0000 0.2540 0.2926 0 0 0 1.0000 0 0 0 0 0 4.0000 A2=E,R+R*S;O,S2ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1通过验证,矩阵成立。2. 产生5阶希尔伯特矩阵H和5阶帕斯卡矩阵P,且求其行列式的值Hh和Hp以及它们的条件数Th和Tp,判断哪个矩阵性能更好。为什么? H=hilb(5)H = 1.0000 0.5000 0.3333 0.2500 0.2000 0.5000
13、 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 0.2500 0.2000 0.1667 0.1429 0.1250 0.2000 0.1667 0.1429 0.1250 0.1111 P=pascal(5)P = 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 70 Hh=det(H)Hh = 3.7493e-12 Hp=det(P)Hp = 1 Th=cond(H)Th = 4.7661e+05 Tp=cond(P)Tp = 8.5175e+03答
14、:5阶帕斯卡矩阵P的性能好。矩阵的性能是由条件数决定的,条件数越接近于1其性能就越好。由上机操作求得Th=4.7661e+005,Tp=8.5175e+003。Tp的值更接近于1则其性能要好。所以5阶帕斯卡矩阵P的性能好。3. 建立一个55矩阵,求它的行列式值、迹、秩和范数。 A=rand(5)A = 0.2785 0.9706 0.4218 0.0357 0.7431 0.5469 0.9572 0.9157 0.8491 0.3922 0.9575 0.4854 0.7922 0.9340 0.6555 0.9649 0.8003 0.9595 0.6787 0.1712 0.1576 0
15、.1419 0.6557 0.7577 0.7060 det(A)ans = -0.1322 trace(A)ans = 3.4127 rank(A)ans = 5 norm(A)ans = 3.27594. 已知求A的特征值及特征向量,并分析其数学意义。 A=-29,6,18;20,5,12;-8,8,5A = -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.4050D = -25.3169 0 0 0 -10.5182 0 0 0 16.835
16、1在数学上,特别是线性代数中,对于一个给定的线性变换,它的特征向量(本征向量或称正规正交向量)是这样一个非零的向量v:当v 经过这个线性变换的作用之后,得到的新向量(长度也许改变)仍然与原来的v 保持在同一条线上。一个特征向量的长度在该线性变换下缩放的比例称为其特征值(本征值)。如果特征值为正,则表示v 在经过线性变换的作用后方向也不变;如果特征值为负,说明方向会反转;如果特征值为0,则是表示缩回零点。但无论怎样,仍在同一条直线上。5. 下面是一个线性方程组:(1) 求方程的解。(2) 将方程右边向量元素b3改为0.53再求解,并比较b3的变化和解的相对变化。(3) 计算系数矩阵A的条件数并分
17、析结论。 format rat %用分数格式显示 A=1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,1/6A = 1/2 1/3 1/4 1/3 1/4 1/5 1/4 1/5 1/6 format %恢复默认格式 b=0.95;0.67;0.52b = 0.9500 0.6700 0.5200 X=AbX = 1.2000 0.6000 0.6000 b2=0.95;0.67;0.53b2 = 0.9500 0.6700 0.5300 X2=Ab2X2 = 3.0000 -6.6000 6.6000 D=cond(A)D = 1.3533e+03矩阵的条件数决定矩阵的性能,
18、条件数越接近于1其性能越好,系数矩阵A的条件数为1.3533e+003,和1相差很大,则其性能不好。因此b矩阵个别元素的微小变动,对方程的解(X值)影响很大。6. 建立A矩阵,试比较sqrtm(A)和sqrt(A),分析它们的区别。实验三 选择结构程序设计1. 求分段函数的值。用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。程序设计:clear;x=-5.0 -3.0 1.0 2.0 2.5 3.0 5.0;if x=0&x=90&score=80&score=70&score=60&score=0&score=100 %判断成绩合理性 swit
19、ch fix(score/10) case 9,10 grade=A; case 8 grade=B; case 7 grade=C; case 6 grade=D; otherwise grade=E; end gradeelse disp(error) %成绩不合理时输出出错信息end3. 硅谷公司员工的工资计算方法如下:(1) 工作时数超过120小时者,超过部分加发15%。(2) 工作时数低于60小时者,扣发700元。(3) 其余按每小时84元计发。试编程按输入的工号和该号员工的工时数,计算应发工资。程序设计:clear;num=input(请输入员工工号:);time=input(请输
20、入员工工时数:);if time120 wages=84*120+(time-120)*84*(1+0.15);else wages=time*84;enddisp=(员工工号: num2str(num) 应发工资: num2str(wages)运行结果:请输入员工工号:4请输入员工工时数:35disp =员工工号:4 应发工资:22404. 设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,并显示相应的结果。解:程序设计:clear;a=floor(rand(1)*90+10)b=floor(rand(1)*90+10)c=input(请
21、输入运算符号:,s);if c=+ s=a+belseif c=- s=a-belseif c=* s=a*belseif c= s=abelse disp(error)end运行结果:a = 30b = 77请输入运算符号:-s = -475. 建立56矩阵,要求输出矩阵第n行元素。当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。程序设计:clear;A=rand(5,6)n=input(n=?)if n=1&n=5 B=A(n,1:6);else disp(erro!) B=A(5,1:6);endB运行结果:A = 0.7792 0.0119 0.5285 0.68
22、92 0.9133 0.0782 0.9340 0.3371 0.1656 0.7482 0.1524 0.4427 0.1299 0.1622 0.6020 0.4505 0.8258 0.1067 0.5688 0.7943 0.2630 0.0838 0.5383 0.9619 0.4694 0.3112 0.6541 0.2290 0.9961 0.0046n=?3n = 3B = 0.1299 0.1622 0.6020 0.4505 0.8258 0.1067实验四 循环结构程序设计1. 根据,求的近似值。当n分别取100、1000、10000时,结果是多少?要求:分别用循环结构和
23、向量运算(使用sum函数)来实现。程序设计(一):clear;for n=100,1000,10000 sum=0; for x=1:n sum=sum+1/(x.2); end result=sqrt(6*sum)end运行结果:result = 3.1321result = 3.1406result = 3.1415程序设计(二):clear;for n=100,1000,10000 x=1:n; result=sqrt(6*sum(1./x./x)end运行结果:result = 3.1321result = 3.1406result =3.14152. 根据,求:(1) y3时的最大n值。(2) 与(1)的n值对应的y值。程序设计:y=0;n=1;while y10(-5)&n=499 x0=x1; x1=a/(b+x0); y=abs(x1-x0); n=n+1;endx1 %比较收敛准确值和迭代结果r1=(-b+sqrt(b2+4*a)/2r2=(-b-sqrt(b2+4*a)/2运行结果:a=?1b=?1x1 = 0.6180r1 = 0.6180r2 = -1.6180a=?8b=?3x1 = 1.7016r1 = 1.7016r2 = -4.7016a
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1