
MATLAB程序设计与应用(第二版)课后实验答案.doc
33页Matlab课后实验题答案实验一 MATLAB运算基础1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量1) (2) ,其中(3) (4) ,其中t=0:0.5:2.5解:M文件:z1=2*sin(85*pi/180)/(1+exp(2))x=[2 1+2*i;-.45 5];z2=1/2*log(x+sqrt(1+x^2)) a=-3.0:0.1:3.0;z3=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2)t=0:0.5:2.5;z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3) .*(t.^2-2*t+1)2. 已知:求下列表达式的值:(1) A+6*B和A-B+I(其中I为单位矩阵)(2) A*B和A.*B(3) A^3和A.^3(4) A/B及B\A(5) [A,B]和[A([1,3],:);B^2]解: M 文件:A=[12 34 -4;34 7 87;3 65 7];B=[1 3 -1;2 0 3;3 -2 7]; A+6.*B A-B+eye(3) A*B A.*B A^3 A.^3 A/B B\A [A,B] [A([1,3],:);B^2]3. 设有矩阵A和B(1) 求它们的乘积C。
2) 将矩阵C的右下角3×2子矩阵赋给D3) 查看MATLAB工作空间的使用情况解:. 运算结果:E=(reshape(1:1:25,5,5))';F=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11];C= E*FH=C(3:5,2:3)C = 93 150 77 258 335 237 423 520 397 588 705 557 753 890 717H = 520 397 705 557 890 7174. 完成下列操作:(1) 求[100,999]之间能被21整除的数的个数2) 建立一个字符串向量,删除其中的大写字母 解:(1) 结果:m=100:999;n=find(mod(m,21)==0);length(n)ans = 43(2). 建立一个字符串向量 例如:ch='ABC123d4e56Fg9';则要求结果是:ch='ABC123d4e56Fg9';k=find(ch>='A'&ch<='Z');ch(k)=[]ch =123d4e56g9实验二 MATLAB矩阵分析与处理1. 设有分块矩阵,其中E、R、O、S分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证。
解: M文件如下;由ans,所以2. 产生5阶希尔伯特矩阵H和5阶帕斯卡矩阵P,且求其行列式的值Hh和Hp以及它们的条件数Th和Tp,判断哪个矩阵性能更好为什么?解:M文件如下:因为它们的条件数Th>>Tp,所以pascal矩阵性能更好3. 建立一个5×5矩阵,求它的行列式值、迹、秩和范数解: M文件如下:4. 已知求A的特征值及特征向量,并分析其数学意义解:M文件如图:数学意义:V的3个列向量是A的特征向量,D的主对角线上3个是A的特征值,特别的,V的3个列向量分别是D的3个特征值的特征向量5. 下面是一个线性方程组:(1) 求方程的解2) 将方程右边向量元素b3改为0.53再求解,并比较b3的变化和解的相对变化3) 计算系数矩阵A的条件数并分析结论解: M文件如下:输出结果:由结果,X和X2的值一样,这表示b的微小变化对方程解也影响较小,而A的条件数算得较小,所以数值稳定性较好,A是较好的矩阵6. 建立A矩阵,试比较sqrtm(A)和sqrt(A),分析它们的区别解:M文件如下:分析结果知:sqrtm(A)是类似A的数值平方根(这可由b1*b1=A的结果看出),而sqrt(A)则是对A中的每个元素开根号,两则区别就在于此。
实验三 选择结构程序设计1. 求分段函数的值用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值解:M文件如下:2. 输入一个百分制成绩,要求输出成绩等级A、B、C、D、E其中90分~100分为A,80分~89分为B,79分~79分为C,60分~69分为D,60分以下为E要求:(1) 分别用if语句和switch语句实现2) 输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息解:M文件如下试算结果:score=88grade =Bscore=123错误:输入的成绩不是百分制成绩3. 硅谷公司员工的工资计算方法如下:(1) 工作时数超过120小时者,超过部分加发15%2) 工作时数低于60小时者,扣发700元3) 其余按每小时84元计发试编程按输入的工号和该号员工的工时数,计算应发工资解:M文件下4. 设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,并显示相应的结果解:M文件如下;5. 建立5×6矩阵,要求输出矩阵第n行元素当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。
解:M文件如下:实验四 循环结构程序设计1. 根据,求π的近似值当n分别取100、1000、10000时,结果是多少?要求:分别用循环结构和向量运算(使用sum函数)来实现解:M文件如下:2. 根据,求:(1) y<3时的最大n值2) 与(1)的n值对应的y值解:M—文件如下:3. 考虑以下迭代公式:其中a、b为正的学数1) 编写程序求迭代的结果,迭代的终止条件为|xn+1-xn|≤10-5,迭代初值x0=1.0,迭代次数不超过500次2) 如果迭代过程收敛于r,那么r的准确值是,当(a,b)的值取(1,1)、(8,3)、(10,0.1)时,分别对迭代结果和准确值进行比较解:M文件如下:4. 已知求f1~f100中:(1) 最大值、最小值、各数之和2) 正数、零、负数的个数解:M—文件以下是运算结果:max(f)=437763282635min(f)=-899412113528sum(f)=-742745601951c1=49c2=2c3=495. 若两个连续自然数的乘积减1是素数,则称这两个边疆自然数是亲密数对,该素数是亲密素数例如,2×3-1=5,由于5是素数,所以2和3是亲密数,5是亲密素数。
求[2,50]区间内:(1) 亲密数对的对数2) 与上述亲密数对对应的所有亲密素数之和解:M文件:运算结果为:j = 29s = 23615实验五 函数文件一、实验目的1. 理解函数文件的概念2. 掌握定义和调用MATLAB函数的方法二、实验内容1. 定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件解:M文件如下:函数fushu.M文件:function [e,l,s,c] = fushu(z)%fushu 复数的指数,对数,正弦,余弦的计算%e 复数的指数函数值%l 复数的对数函数值%s 复数的正弦函数值%c 复数的余弦函数值e=exp(z);l=log(z);s=sin(z);c=cos(z);命令文件M:z=input('请输入一个复数z=');[a,b,c,d]=fushu(z)运算结果如下:z=input('请输入一个复数z=');[a,b,c,d]=fushu(z)请输入一个复数z=1+ia = 1.4687 + 2.2874ib = 0.3466 + 0.7854c 1.2985 + 0.6350id = 0.8337 - 0.9889i2. 一物理系统可用下列方程组来表示:从键盘输入m1、m2和θ的值,求a1、a2、N1和N2的值。
其中g取9.8,输入θ时以角度为单位要求:定义一个求解线性方程组AX=B的函数文件,然后在命令文件中调用该函数文件解: M文件函数fc.M文件:function X= fc(A,B)%fc fc是求解线性方程的函数%A A是未知矩阵的系数矩阵X=A\B; 命令M文件:clc;m1=input('输入m1=');m2=input('输入m2=');theta=input('输入theta=');x=theta*pi/180;g=9.8;A=[m1*cos(x) -m1 -sin(x) 0 m1*sin(x) 0 cos(x) 0 0 m2 -sin(x) 0 0 0 -cos(x) 1];B=[0;m1*g;0;m2*g];X=fc(A,B) 运算结果:输入m1=1输入m2=1输入theta=30X = 7.8400 3.3948 6.7896 15.6800 3. 一个自然数是素数,且它的数字位置经过任意对换后仍为素数例如13是绝对素数试求所有两位绝对素数要求:定义一个判断素数的函数文件解:M文件:函数prime.m文件function [p] = prime(p)% 输入p的范围,找出其中的素数m=p(length(p));for i=2:sqrt(m) n=find(rem(p,i)==0&p~=i); p(n)=[]; %将p中能被i整除,而却不等于i的元素,即下标为n的元素剔除,其余的即为素数endp;命令文件:clc;p=10:99;p=prime(p); %找出10到99内的所有素数p=10*rem(p,10)+(p-rem(p,10))/10; %将p素数矩阵每个元素个位十位调换顺序p=prime(p) %再对对换后的素数矩阵找出所有的素数运算结果:p = 11 31 71 13 73 17 37 97 794. 设,编写一个MATLAB函数文件fx.m,使得调用f(x)时,x可用矩阵代入,得出的f(x)为同阶矩阵。
解:函数fx.m文件:function f= fx(x)%fx fx求算x矩阵下的f(x)的函数值A=0.1+(x-2).^2;。












