matlab课后习题答案1到6章
习题二
1.如何理解“矩阵是MATLAB最
基本的数据对象”
答:因为向量可以看成是仅有一行或一列的矩阵,单个数据(标量)可以看成是仅含一个元素的矩阵,故向量和单个数据都可以作为矩阵的特例来处理。
因此,矩阵是MATLAB最基本、最重要的数据对象。
2.设A和B是两个同维同大小的
矩阵,问:
(1)A*B和A.*B的值是否相
等
答:不相等。
(2) A./B和B.\A的值是否
相等
答:相等。
(3)A/B和B\A的值是否相
等
答:不相等。
(4)A/B和B\A所代表的数
学含义是什么
答:A/B等效于B的逆右乘A
矩阵,即A*inv(B),而B\A
等效于B矩阵的逆左乘A矩
阵,即inv(B)*A。
3.写出完成下列操作的命令。
(1)将矩阵A第2~5行中第
1, 3, 5列元素赋给矩
阵B。
答:B=A(2:5,1:2:5); 或
B=A(2:5,[1 3 5])
(2)删除矩阵A的第7号元
素。
答:A(7)=[]
(3)将矩阵A的每个元素值
加30。
答:A=A+30;
(4)求矩阵A的大小和维
数。
答:size(A);
ndims(A);
(5)将向量t的0元素用
机器零来代替。
答:t(find(t==0))=eps;
(6)将含有12个元素的向
量x转换成34
?矩
阵。
答:reshape(x,3,4);
(7)求一个字符串的ASCII
码。
答:abs(‘123’); 或
double(‘123’);
(8)求一个ASCII码所对应
的字符。
答:char(49);
4.下列命令执行后,L1、L2、L3、
L4的值分别是多少
A=1:9;B=10-A;...
L1=A==B;
L2=A<=5;
L3=A>3&A<7;
L4=find(A>3&A<7);
答:L1的值为[0, 0, 0, 0, 1,
0, 0, 0, 0]
L2的值为[1, 1, 1, 1,
1, 0, 0, 0, 0]
L3的值为[0, 0, 0, 1,
1, 1, 0, 0, 0]
L4的值为[4, 5, 6]
5.已知
23100.7780
4145655
325032
69.5454 3.14
A
-
??
??
-
??
=
??
??
-
??
完成下列操作:
(1)取出A的前3行构成矩
阵B,前两列构成矩阵
C,右下角32
?子矩
阵构成矩阵D,B与C
的乘积构成矩阵E。
答:B=A(1:3,:);
C=A(:,1:2);
D=A(2:4,3:4);
E=B*C;
(2)分别求E ~E|~D和 find(A>=10&A<25)。 答:E 01 00 01 ?? ?? ?? ?? ?? , E&D= 11 01 11 ?? ?? ?? ?? ?? , E|D= 11 11 11 ?? ?? ?? ?? ?? , ~E|~D= 00 10 00 ?? ?? ?? ?? ?? find(A>=10&A<25)=[1; 5]。 6.当A=[34, NaN, Inf, -Inf, -pi, eps, 0]时,分析下列函 数的执行结果:all(A), any(A),isnan(A),isinf(A), isfinite(A)。 答:all(A)的值为0 any(A) 的值为1 isnan(A) 的值为[ 0, 1, 0, 0, 0, 0, 0] isinf(A) 的值为[ 0, 0, 1, 1, 0, 0, 0] isfinite(A) 的值为[1, 0, 0, 0, 1, 1, 1] 7.用结构体矩阵来存储5名学生 的基本情况数据,每名学生的 数据包括学号、姓名、专业和 6门课程的成绩。 答:student(1).id='0001'; student(1).name='Tom'; student(1).major='comput er'; student(1).grade=[89,78,67,90,86,85]; 8. 建立单元矩阵B 并回答有关问题。 B{1,1}=1; B{1,2}='Brenden'; B{2,1}=reshape(1:9,3,3); B{2,2}={12,34,2;54,21,3;4,23,67}; (1) size(B)和ndims(B)的 值分别是多少 答:size(B) 的值为2, 2。 ndims(B) 的值为2。 (2) B(2)和B(4)的值分别是 多少 答:B(2)=147258369?? ???????? ,B(4)= [12][34][2][54][21][3][4][23][67]?????????? (3) B(3)=[]和B{3}=[]执行 后,B 的值分别是多少 答:当执行B(3)=[]后, B={1, [1, 4, 7; 2, 5, 8; 3, 6, 9], {12, 34, 2; 54, 21, 3; 4, 23, 67}} 当执行B{3}=[]后, B={1,[]; [1, 4, 7; 2, 5, 8; 3, 6, 9], {12, 34, 2; 54, 21, 3; 4, 23, 67}} 习题三 1. 写出完成下列操作的命令。 (1) 建立3阶单位矩阵A 。 答:A=eye(3); (2) 建立5×6随机矩阵A , 其元素为[100,200]范围内的随机整数。 答 : round(100+(200-100)*rand (5,6)); (3) 产生均值为1,方差为 的500个正态分布的随机数。 答:1+sqrt*randn(5,100); (4) 产生和A 同样大小的幺 矩阵。 答:ones(size(A)); (5) 将矩阵A 对角线的元素 加30。 答:A+eye(size(A))*30; (6) 从矩阵A 提取主对角线 元素,并以这些元素构成对角阵B 。 答:B=diag(diag(A)); 2. 使用函数,实现方阵左旋90 o 或右旋90o 的功能。例如,原矩阵为A ,A 左旋后得到B ,右旋后得到C 。 147102581136912A ?? ??=?? ???? 101112789456123B ?? ?? ? ?=?????? 321654987121110C ?? ?? ? ?=?????? 答: B=rot90(A); C=rot90(A,-1); 3. 建立一个方阵A ,求A 的逆矩阵和A 的行列式的值,并验证 A 与A -1是互逆的。 答:A=rand(3)*10; B=inv(A); C=det(A); 先计算B*A ,再计算 A*B ,由计算可知B*A=A*B ,即 A ·A -1= A -1·A 是互逆。 4. 求下面线性方程组的解。 1231231 242232101238 x x x x x x x x +-=?? -+=??+=? 答: A=[4,2,-1;3,-1, ;12,3,0]; b=[2;10;8]; x=inv(A)*b 方程组的解为 x= 6.000026.666727.3333-?? ???????? 5. 求下列矩阵的主对角线元素、上三角阵、下三角阵、秩、范数、条件数和迹。 (1) 112 35142305211150 9A -????-? ?=??? ??? (2) 0.434328.9421B ?? =??-?? 答: (1) 取主对角线元 素: diag(A); 上三角阵: triu(A); 下三角阵: tril(A); 秩: rank(A); 范数: norm(A,1); 或 norm(A); 或 norm(A,inf); 条件数: cond(A,1); 或 cond(A,2); 或 cond(A,inf) 迹: trace(A); (2)【请参考(1)】。 6. 求矩阵A 的特征值和相应的特征向量。 1 10.5110.250.50.252A ????=?????? 答: [V,D]=eig(A); 习题四 1. 从键盘输入一个4位整数,按如下规则加密后输出。加密规则:每位数字都加上7,然后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。 答: a=input('请输入4位整数: '); A=[a/1000,a/100,a/10,a]; A=fix(rem(A,10)); A=rem(A+7,10); b=A(3)*1000+A(4)*100+A(1)*10+A(2); disp(['加密后的值为: ',num2str(b)]); 2. 分别用if 语句和switch 语句实现以下计算,其中a 、b 、c 的值从键盘输入。 2, 0.5 1.5sin , 1.5 3.5 ln , 3.5 5.5 c ax bx c x y a b x x c b x x ? ?++≤? =+≤??+≤? 答:(1) 用if 语句实现计算: a=input('请输入a 的值:'); b=input('请输入b 的值:'); c=input('请输入c 的值:'); x=input('请输入x 的值:'); if x>= & x< y=a*x^2+b*x+c; end if x>= & x< y=a*((sin(b))^c)+x; end if x>= & x< y=log(abs(b+c/x)); end disp(['y=',num2str(y)]); (2) 用switch 语句实现计 算: a=input('请输入a 的值:'); b=input('请输入b 的值:'); c=input('请输入c 的值:'); x=input('请输入x 的值:'); switch fix(x/ case {1,2} y=a*x^2+b*x+c; case num2cell(3:6) y=a*((sin(b))^c)+x; case num2cell(7:10) y=log(abs(b+c/x)); end disp(['y=',num2str(y)]); 3. 产生20个两位随机整数,输出其中小于平均值的偶数。 答: A=fix(10+89*rand(1,20)); sum=0; for i=1:20 sum=sum+A(i); end B=A(find(A<(sum/20))); C=B(find(rem(B,2)==0)); disp(C); 4. 输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB 的max 函数、min 函数来实现。 答: (1) 用循环结构实现: v_max=0; v_min=0; for i=1:20 x=input(['请输入第', num2str(i), '数:']); if x> v_max v_max=x; end; if x< v_min v_min=x; end; end disp(['最大数为:', num2str(v_max)]); disp(['最小数为:', num2str(v_min)]); (2) 用max 函数、min 函数 实现: for i=1:5 A(i)=input(['请输入 第', num2str(i), '数:']); end disp(['最大数为:', num2str(max(A))]); disp(['最小数为:', num2str(min(A))]); 5. 已 知: 2363 12222s =+++++L ,分别用循环结构和调用MATLAB 的sum 函数求s 的值。 答: (1) 用循环结构实现: s=0; for i=0:63 s=s+2^i; end s (2) 调用sum 函数实现: s=0:63; s=2.^s; sum(s) 6. 当n 分别取100、1000、10000时,求下列各式的值。 (1) 111111(1)(ln 2) 234n n +-+-++-+=L L (2) 1111()3574 π -+-+=L (3) 1111 1() 4166443n +++++=L L (4) 224466(2)(2)133557(21)(21)2n n n n π???????????? ?? = ? ????? ????-?+?????? ????L L 要求分别用循环结构和向量 运算(使用sum 或prod 函数)来实现。 答: (1) 用循环结构实现: sum=0; for k=1:100 sum=sum+(-1)^(k+1)/k; end sum 使用sum 函数: x=[]; for k=1:10000 x=[x, (-1)^(k+1)/k]; end sum(x) (2) 用循环结构实现: sum=0; for k=1:100 sum=sum+(-1)^(k+1)/(2*k-1); end sum 使用sum 函数: x=[]; for k=1:100 x=[x, (-1)^(k+1)/(2*k-1)]; end sum(x) (3) 用循环结构实现: sum=0; for k=1:100 sum=sum+1/(4^k); end sum 使用sum 函数实现: x=[]; for k=1:100 x=[x, 1/(4^k)]; end sum(x) (4) 用循环结构实现: t=1; for k=1:100 t=t*(((2*k)*(2*k))/ ((2*k-1)*(2*k+1))); end t 使用prod 函数实现: x=[]; for k=1:100 x=[x, ((2*k)*(2*k))/((2*k-1)*(2*k+1) )]; end prod(x) 7. 编写一个函数文件,求小于任意自然数n 的斐波那契(Fibnacci )数列各项。斐波那契数列定义如下: 12121, 11, 2, 2 n n n f n f n f f f n --==?? ==??=+>? 答: function x=fibnacci(n) for i=1:n if i<=2 x(i)=1; else x(i)=x(i-1)+x(i-2); end end 8. 编写一个函数文件,用于求两个矩阵的乘积和点乘,然后在命令文件中调用该函数。 答: 函数文件: function [x, y]= myfnc(A, B) try x=A*B; catch x=[]; end y=A.*B; 命令文件: A=input('请输入矩阵A :'); B=input('请输入矩阵B :'); [x, y]=myfnc(A, B); if length(x)==0 display('两矩阵的维数不匹配,无法进行乘积运算!'); else disp('矩阵A 和矩阵B 的乘积为:'); x end disp('矩阵A 和矩阵B 的点乘为:'); y 9. 先用函数的递归调用定义一 个函数文件求 1 n m i i =∑,然后 调用该函数文件求 1005010 2 1111k k k k k k ===++∑∑∑。 答: 函数文件: function sum=myfnc(n, m) if n<=1 sum=1; else sum= myfnc (n-1, m)+n^m; end 在命令窗口中调用文件,计 算 100 5010 2 1 1 1 1 k k k k k k ===++∑∑∑: sum=myfnc(100, 1)+ myfnc(50, 2)+myfnc(10,-1) 10. 写出下列程序的输出结果。 ① s=0; a=[12,13,14;15,16,17;18,19,20;21,22,23]; for k=a for j=1:4 if rem(k(j),2)~=0 s=s+k(j); end end end s 答:执行结果为 s=108 ② 命令文件执行后的结果为: x = 4 12 20 y= 2 4 6 第五章 1. (1) x=-10::10; y=100./(1+x.^2); plot(x,y) (2) x=-10::10; y=1/(2*pi)*exp(-x.^2/2); plot(x,y) (3) ezplot('x^2+y^2=1') (4) t=-10::10; x=t.^2; y=5*t.^3; plot(x,y) 2. (1) theta=0::2*pi; rho=5*cos(theta)+4; polar(theta,rho) (2) theta=::2*pi; rho=12./sqrt(theta); polar(theta,rho) (3) theta=::2*pi; rho=5./cos(theta)-7; polar(theta,rho) (4) theta=::2*pi; rho=pi/3.*theta.^2; polar(theta,rho) 3. (1) t=0:pi/100:2*pi; x=cos(t); y=sin(t); z=t; plot3(x,y,z) (2) u=0:pi/100:2*pi; v=0:pi/100:2*pi; x=(1+cos(u)).*cos(v); y=(1+cos(u)).*sin(v); z=sin(u); plot3(x,y,z) (3) (4) 5. plot 函数: >> x=linspace(-10,10,200); >> y=[]; >> for x0=x if x0>0 y=[y,x0.^2+(1+x0).^(1/4)+5]; elseif x0==0 y=[y,0]; elseif x0<0 y=[y,x0.^3+sqrt(1-x0)-5]; end end >> plot(x,y) fplot 函数: fplot('(x<0).*(x.^3+sqrt(1-x)-5)+(x==0).*0+(x>0).*(x.^2+(1+x ).^(1/4)+5)',[-10,10]) 第六章 1. A=randn(10,5) (1)mean(A) ;均值std(A) ;标准方差 (2)max(max(A)) ;最大元素min(min(A)) ;最小元素 (3)B=sum(A,2) ;A每行元素的和 sum(B) ;A全部元素之和 (4)sort(A) ;A的每列元素按升序排列 sort(A,2,’descend’) ;A的每行元素按将序排列 2. (1) (2) X=[1 4 9 16 25 36 49 64 81 100]; Y=1:10; X1=1:100; Y1=interp1(X,Y,X1,'cubic') 3. x=[165 123 150 123 141]; y=[187 126 172 125 148]; P=polyfit(x,y,3) P = +003 * 所以它的线性拟合曲线为:p(x)=—+8433 4. (1)P1=[0 3 2];P2=[5 -1 2];P3=[1 0 ]; P=conv(conv(P1,P2),P3) P = 0 所以P(x)=15x5++ (2) roots(P) ans = + - (3) i=0:10; xi=*i; polyval(P,xi) ans = 5. (1) 建立函数文件: function f=fxy(u) x=u(1);y=u(2); f=3.*x.^2+2*x.*y+y.^2 在命令窗口中输入以下命令: [U,fmin]=fminsearch('fxy',[1,1 ]) 结果: U = * fmin = (2) f=inline('-sin(x)-cos(x.^2)'); fmax=fminbnd(f,0,pi) fmax = 6. (1)x=[pi/6 pi/4 pi/3]; f=inline('sin(x).^2+cos(x).^2' ); dx=diff(f([x,5*pi/12]))/(pi/12) 可参见第157页例题 dx = 0 0 0 x=pi/2时单独计算: x=pi/2; f=inline('sin(x).^2+cos(x).^2' ); diff(f([x,pi]))/(pi/2) ans = (2) x=1:3; f=inline('sqrt(x.^2+1)'); dx=diff(f([x,4])) 结果: dx = 7.(1) f=inline('sin(x).^5.*sin(5*x)' ); quad(f,0,pi) ans = (2) f=inline('(1+x.^2)./(1+x.^4)') ; quad(f,-1,1) ans = (3) f=inline('x.*sin(x)./(1+cos(x) .^2)'); quad(f,0,pi) ans = (4) f=inline('abs(cos(x+y))'); dblquad(f,0,pi,0,pi) ans = 8. N=64; %采样点数 T=5; %采样时间终点 t=linspace(0,T,N); %给出N个采 样时间ti(i=1:N) y=exp(-t); %求各采样点样 本值y dt=t(2)-t(1); %采样 周期 f=1/dt; % 采样频 率 Y=fft(y); %计算y的 快速傅里叶变换Y F=Y(1:N/2+1); %F(k)=Y(k ) f=f*(0:N/2)/N; %使频率轴f从0开始 plot(f,abs(F)) %绘制振幅-频率图 9. (1) 矩阵求逆法: A=[2 3 5;3 7 4;1 -7 1]; b=[10;3;5]; x=inv(A)*b x = 矩阵除法法: A=[2 3 5;3 7 4;1 -7 1]; b=[10;3;5]; x=A\b x = 矩阵分解法: A=[2 3 5;3 7 4;1 -7 1]; b=[10;3;5]; [L,U]=lu(A); x=U\(L\b) x = (2)方法同(1) 10. 函数文件:line_solution(A,b) function [x,y]=line_solution(A,b) [m,n]=size(A); y=[]; if norm(b)>0 if rank(A)==rank([A,b]) if rank(A)==n disp('原方程组有唯一解x'); x=A\b; else disp('原方程组有无穷个解,特解 为x,齐次方程组的基础解系为y'); x=A\b; y=null(A,'r'); end disp('方程组无解'); x=[]; end else disp('原方程组有零解x'); x=zeros(n,1); if rank(A) disp('方程组有无穷个解,基础解 系为y'); y=null(A,'r'); end end 程序: A=[2 1 -1 1;4 2 -2 1;2 1 -1 -1]; b=[1;2;1]; [x,y]=line_solution(A,b) 结果: 原方程组有无穷个解,特解为x,齐 次方程组的基础解系为y Warning: Rank deficient, rank = 2, tol = . > In line_solution at 11 方程组无解 x = [] y = 0 0 11. (1) f=inline('x-sin(x)./x'); x=fzero(f, x = (2) f=inline('(sin(x).^2).*e xp.*x).*abs(x)'); x=fzero(f, x = 12. 函数文件: function f=fxy(u) x=u(1) y=u(2) f(1)=*sin(x)*cos(y) f(2)=*cos(x)+*sin(y) 在命令窗口输入以下命令: x=fsolve('fxy',[,],optimset('D isplay','off')) 结果: x = 15. A=[-1 2 0;-1 2 -1;-1 2 -1;-1 2 -1;0 2 -1]; d=[-1;0;1]; B=spdiags(A,d,5,5); b=[1 0 0 0 0]'; x=(inv(B)*b)' x = 习题2 1. 说出以下四条指令产生的结果各属于哪种数据类型,是“双精度”对象,还是“符号” 对象? 3/7+0.1, sym(3/7+0.1), vpa(sym(3/7+0.1)) a=class(3/7+0.1)%双精度 b=class(sym(3/7+0.1))%符号 c=class(vpa(sym(3/7+0.1),4))%符号 d=class(vpa(sym(3/7+0.1)))%符号 2. 在不加专门指定的情况下,以下符号表达式中的哪一个变量被认为是独立自由变量。 sym('sin(w*t)') , sym('a*exp(-X)' ) , sym('z*exp(j*th)') a=sym('sin(w*t)'); symvar(a) b=sym('a*exp(-X)'); symvar(b) c=sym('z*exp(j*th)'); symvar(c) 3. 求以下两个方程的解: (提示:关于符号变量的假设要注意) (1)试写出求三阶方程05.443 =-x 正实根的程序。注意:只要正实根,不要出现其他根。 x=sym('x','positive'); f=x^3-44.5; x=solve(f,x) (2)试求二阶方程02 2=+-a ax x 在0>a 时的根。 a=sym('a','positive'); syms x; f=x^2-a*x+a^a; x=solve(f,x) 4. 观察一个数(在此用@记述)在以下四条不同指令作用下的异同: a = @ , b = sym( @ ), c = sym( @ ,' d ' ), d = sym( '@ ' ) 在此,@ 分别代表具体数值 7/3 , pi/3 , pi*3^(1/3) ;而异同通过vpa(abs(a-d)) , vpa(abs(b-d)) , vpa(abs(c-d))等来观察。 a=7/3 b=sym(7/3) c=sym(7/3,'d') d=sym('7/3') vpa(abs(a-d)) vpa(abs(b-d)) vpa(abs(c-d)) a=pi/3 b=sym(pi/3) c=sym(pi/3,'d') a=input('type in the first sequence ='); b=input('type in the second sequence ='); c=conv(a,b); M=length(c)-1; n=0:1:M; disp('output sequence =');disp(c) stem(n,c) xlabel('Time index n');ylabel('Amplitude'); type in the first sequence =[2 4 6 4 2 0 0 0] type in the second sequence =[3 -1 2 1] output sequence = Columns 1 through 9 6 10 18 16 18 12 8 2 0 Columns 10 through 11 0 0 ??? Undefined function or variable 'ylable'. Error in ==> E:\Matlab6p5FULL\bin\win32\Untitled.m On line 8 ==> xlabel('Time index n');ylabel('Amplitude'); type in the first sequence =[2 4 6 4 2 0 0 0] type in the second sequence =[3 -1 2 1] output sequence = Columns 1 through 9 6 10 18 16 18 12 8 2 0 Columns 10 through 11 第二章 1 求下列表达式的值。 (1) w=sqrt(2)*(1+0.34245*10^(-6)) (2) a=3.5; b=5; c=-9.8; x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/tan(b+c)+a (3) a=3.32; b=-7.9; y=2*pi*a^(2)*[(1-pi/4)*b-(0.8333-pi/4)*a] (4) t=[2,1-3*i;5,-0.65]; z=1/2*exp(2*t)*log(t+sqrt(1+t^(2))) 2 求下列表达式 A=[-1,5,-4;0,7,8;3,61,7]; B=[8,3,-1;2,5,3;-3,2,0]; (1) A+6*B A^2-B+eye (2) A*B A.*B B.*A (3) A/B B\A (4) [A,B] [A([1,3],:);B^2] 3 根据已知,完成下列操作 (1) A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14]; K=find(A>10&A<25); A(K) (2) A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14]; B=A(1:3,:) C=A(:,1:2) D=A(2:4,3:4) E=B*C (3) E 2 用if语句 score=input('请输入成绩:'); if score>=90&&score<=100 disp('A'); elseif score>=80&&score<=89 disp('B'); elseif score>=70&&score<=79 disp('C'); elseif score>=60&&score<=69; disp('D'); elseif score<60&&score>=0; disp('E'); else disp('出错'); end 用switch语句 score=input('请输入成绩:'); switch fix(score/10) case {9,10} disp('A'); case {8} disp('B'); case {7} disp('C'); case {6} disp('D'); case {0,1,2,3,4,5} disp('E'); otherwise disp('出错'); end 第四章1题 1) X=0:10; Y=x-x.^3/6; P lot(x,y) 2) t=0:0.01:2*pi; x=8.*cos(t); y=4*sqrt(2).*sin(t); plot(x,y) 2题 ones表示1矩阵 zeros表示0矩阵 ones(4)表示4x4的1矩阵 zeros(4)表示4x4的0矩阵 zeros(4,5)表示4x5的矩阵 eye(10,10)表示10x10的单位矩阵rand(4,5)表示4x5的伴随矩阵 det(a)表示计算a的行列式 inv(a)表示计算a的逆矩阵 Jordan(a)表示求a矩阵的约当标准块rank(a)表示求矩阵a的秩 [v,d]=eig(a)对角矩阵 b=a’表示求a矩阵的转置矩阵 sqrt表示求平方根 exp表示自然指数函数 log自然对数函数 abs绝对值 第一章 一、5(1) b=[97 67 34 10;-78 75 65 5;32 5 -23 -59]; >> c=[97 67;-78 75;32 5;0 -12]; >> d=[65 5;-23 -59;54 7]; >> e=b*c e = 5271 11574 -11336 664 1978 3112 (2)a=50:1:100 二、1 、x=-74; y=-27; z=(sin(x.^2+y.^2))/(sqrt(tan(abs(x+y)))+pi) z = 2、a=::; >> b=exp*a).*sin(a+ 3、x=[2 4; 5]; y=log(x+sqrt(1+x.^2))/2 y =4、a*b表示a矩阵和b矩阵相乘 a.*b表示a矩阵和b矩阵单个元素相乘A(m,n)表示取a矩阵第m行,第n列 A(m,:)表示取a矩阵第m行的全部元素 A(:,n)表示取a矩阵的第n列全部元素 A./B表示a矩阵除以b矩阵的对应元素, B.\A等价于A./B A.^B表示两个矩阵对应元素进行乘方运算A.^2表示a中的每个元素的平方 A^2表示A*A 例:x=[1,2,3]; y=[4,5,6]; z=x.^y z= 1 3 2 729 指数可以是标量(如y=2).底数也可以是标量(如x=2) 5、a=1+2i; >> b=3+4i; >> c=exp((pi*i)/6) c = + d=c+a*b/(a+b) d = + 第二章 二、4、(1) y=0;k=0; >> while y<3 k=k+1; y=y+1/(2*k-1); end >> display([k-1,y-1/(2*k-1)]) ans = 第三章 二1(1) P16 Q2: 计算表达式()2 tan arccos x x -在0.25x =和0.78x π =时的函数值。 function y=jie(x) y=tan(-x.^2)*acos(x); >> jie(0.25) ans = -0.0825 >> jie(0.78*pi) ans = 0 + 0.4418i Q3:编写M 命令文件,求5010 2 1 1 1k k k k ==+ ∑∑ 的值。 a=0;b=0; for i=1:50 a=a+i*i; end for j=1:10 b=b+1/j; end c=a+b; >> c c = 4.2928e+004 P27 Q2:矩阵1234567 8 9A ????=??????,4 685563 2 2B ?? ?? =? ????? ,计算A B *,.A B *,并比较两者的区别。 >> A=[1 2 3;4 5 6;7 8 9]; >> B=[4 6 8;5 5 6;3 2 2]; >> A*B ans = 23 22 26 59 61 74 95 100 122 >> A.*B ans = 4 12 24 20 25 36 21 16 18 A*B表示A与B两矩阵相乘。 A.*B表示A与B对应元素相乘。 P34 Q2:编写一个转换成绩等级的程序,其中成绩等级转换标准为:考试分数在[] 90,100显示为优秀;分数在[) 0,60的 60,80的显示为及格;分数在[) 80,90的显示为良好;分数在[) 显示为不及格。 if x>=90 disp('优秀'); elseif x>=80 disp('良好'); elseif x>=60 disp('及格'); else disp('不及格'); end >> x=85 x = 85 良好 第2章符号运算 习题2及解答 1 说出以下四条指令产生的结果各属于哪种数据类型,是“双精度” 对象,还是“符号”符号对象 3/7+; sym(3/7+; sym('3/7+'); vpa(sym(3/7+) 〖目的〗 不能从显示形式判断数据类型,而必须依靠class指令。 〖解答〗 c1=3/7+ c2=sym(3/7+ c3=sym('3/7+') c4=vpa(sym(3/7+) Cs1=class(c1) Cs2=class(c2) Cs3=class(c3) Cs4=class(c4) c1 = c2 = 37/70 c3 = c4 = Cs1 = double Cs2 = sym Cs3 = sym Cs4 = sym 2 在不加专门指定的情况下,以下符号表达式中的哪一个变量被认 为是自由符号变量. sym('sin(w*t)'),sym('a*exp(-X)'),sym('z*exp(j*th)') 〖目的〗 理解自由符号变量的确认规则。 〖解答〗 symvar(sym('sin(w*t)'),1) ans = w symvar(sym('a*exp(-X)'),1) ans = a symvar(sym('z*exp(j*th)'),1) ans = z 5求符号矩阵???? ??????=3332 31 232221 131211 a a a a a a a a a A 的行列式值和逆,所得结果应采用“子表达式置换”简洁化。 〖目的〗 理解subexpr 指令。 〖解答〗 A=sym('[a11 a12 a13;a21 a22 a23;a31 a32 a33]') DA=det(A) IA=inv(A); [IAs,d]=subexpr(IA,d) A = [ a11, a12, a13] [ a21, a22, a23] [ a31, a32, a33] DA = a11*a22*a33 - a11*a23*a32 - a12*a21*a33 + a12*a23*a31 + a13*a21*a32 - a13*a22*a31 IAs = [ d*(a22*a33 - a23*a32), -d*(a12*a33 - a13*a32), d*(a12*a23 - a13*a22)] [ -d*(a21*a33 - a23*a31), d*(a11*a33 - a13*a31), -d*(a11*a23 - a13*a21)] [ d*(a21*a32 - a22*a31), -d*(a11*a32 - a12*a31), d*(a11*a22 - a12*a21)] d = 1/(a11*a22*a33 - a11*a23*a32 - a12*a21*a33 + a12*a23*a31 + a13*a21*a32 - a13*a22*a31) 8(1)通过符号计算求t t y sin )(=的导数 dt dy 。(2)然后根据此结果,求- =0t dt dy 和2 π = t dt dy 。 〖目的〗 diff, limit 指令的应用。 如何理解运行结果。 〖解答〗 syms t 第五章 MATLAB 的绘画与图形处理 MATLAB 具有非常强大的二维和三维绘图功能,尤其擅长于各种科学运算结果的优秀可视化。 5.1二维曲线的绘制 5.1.1基本绘图命令plot plot 命令是MATLAB 中最简单而且使用最广泛的一个绘图命令,用来绘制二维曲线。 1. plot(x,y) 语法: plot(x,y) %绘制以x 为横坐标y 为纵坐标的二维曲线 【例5.1】绘制正弦曲线y=sin(x)和方波曲线,如图5.1所示。 >> x1=0:0.1:2*pi; >> y1=sin(x1); %y1为x1的正弦函数 >> plot(x1,y1); >> x2=[0 1 1 2 2 3 ]; >> y2=[1 1 0 0 1 1 ]; >> plot(x2,y2); >> axis([0 4,0 2]) %将坐标轴范围设定为0-4和0-2 2. plot(x1,y1,x2,y2,…)绘制多条曲线 plot 命令还可以同时绘制多条曲线,用多个矩阵对为参数,MATLAB 自动以不同的颜色绘制不同曲线。 【例5.2】绘制三条曲线,如图5.2所示。 图5.1 (a) 正弦曲线 (b) 方波曲线 >> x=0:0.1:2*pi; >> plot(x,sin(x),x,cos(x),x,sin(3*x)) %画三条曲线 图5.2 三条曲线 5.1.2绘制曲线的一般步骤 表5.1为绘制二维、三维图形一般步骤的归纳。 表5.1绘制二维、三维图形的一般步骤 内容 曲线数据准备: 对于二维曲线,横坐标和纵坐标数据变量; 说明: ?步骤1和3是最基本的绘图步骤,如果利用MA TLAB的默认设置通常只需要这两个基本步骤就可以基本绘制出图形,而其他步骤并不完全必需。 ?步骤2一般在图形较多的情况下,需要指定图形窗口、子图时使用。 第1章 MATLAB概论 1.1与其他计算机语言相比较,MATLAB语言突出的特点是什么? MATLAB具有功能强大、使用方便、输入简捷、库函数丰富、开放性强等特点。 1.2 MATLAB系统由那些部分组成? MATLAB系统主要由开发环境、MATLAB数学函数库、MATLAB语言、图形功能和应用程序接口五个部分组成。 1.3 安装MATLAB时,在选择组件窗口中哪些部分必须勾选,没有勾选的部分以后如何补安装? 在安装MATLAB时,安装内容由选择组件窗口中个复选框是否被勾选来决定,可以根据自己的需要选择安装内容,但基本平台(即MATLAB选项)必须安装。第一次安装没有选择的内容在补安装时只需按照安装的过程进行,只是在选择组件时只勾选要补装的组件或工具箱即可。 1.4 MATLAB操作桌面有几个窗口?如何使某个窗口脱离桌面成为独立窗口?又如何将脱离出去的窗口重新放置到桌面上? 在MATLAB操作桌面上有五个窗口,在每个窗口的右上角有两个小按钮,一个是关闭窗口的Close按钮,一个是可以使窗口成为独立窗口的Undock按钮,点击Undock按钮就可以使该窗口脱离桌面成为独立窗口,在独立窗口的view菜单中选择Dock ……菜单项就可以将独立的窗口重新防止的桌面上。 1.5 如何启动M文件编辑/调试器? 在操作桌面上选择“建立新文件”或“打开文件”操作时,M文件编辑/调试器将被启动。在命令窗口中键入edit命令时也可以启动M文件编辑/调试器。 1.6 存储在工作空间中的数组能编辑吗?如何操作? 存储在工作空间的数组可以通过数组编辑器进行编辑:在工作空间浏览器中双击要编辑的数组名打开数组编辑器,再选中要修改的数据单元,输入修改内容即可。 1.7 命令历史窗口除了可以观察前面键入的命令外,还有什么用途? 命令历史窗口除了用于查询以前键入的命令外,还可以直接执行命令历史窗口中选定的内容、将选定的内容拷贝到剪贴板中、将选定内容直接拷贝到M文件中。 1.8 如何设置当前目录和搜索路径,在当前目录上的文件和在搜索路径上的文件有什么区别? 当前目录可以在当前目录浏览器窗口左上方的输入栏中设置,搜索路径可以通过选择操作桌面的file 菜单中的Set Path菜单项来完成。在没有特别说明的情况下,只有当前目录和搜索路径上的函数和文件能够被MATLAB运行和调用,如果在当前目录上有与搜索路径上相同文件名的文件时则优先执行当前目录上的文件,如果没有特别说明,数据文件将存储在当前目录上。 1.9 在MATLAB中有几种获得帮助的途径? 【例1.3-5】图示复数i z i z 21,3421+=+=的和。 z1=4+3*i;z2=1+2i; z12=z1+z2 clf,hold on plot([0,z1,z12],'-b','LineWidth',3) plot([0,z12],'-r','LineWidth',3) plot([z1,z12],'ob','MarkerSize',8) hold off,grid on axis equal axis ([0,6,0,6]) text(3.5,2.3,'z1') text(5,4.5,'z2') text(2.5,3.5,'z12') xlabel('real') ylabel('image') shg z12 = a=-8; r_a=a^(1/3) p=[1,0,0,-a]; R=roots(p) MR=abs(R(1)); t=0:pi/20:2*pi; x=MR*sin(t); y=MR*cos(t); plot(x,y,'b:'),grid on hold on plot(R(2),'.','MarkerSize',30,'Color','r') plot(R([1,3]),'o','MarkerSize',15,'Color','b') axis([-3,3,-3,3]),axis square hold off r_a = 1.0000 + 1.7321i R = -2.0000 1.0000 + 1.7321i 【例1.3-10】画出衰减振荡曲线t e y t 3sin 3-=,t 的取值范围是]4,0[π。 t=0:pi/50:4*pi; y=exp(-t/3).*sin(3*t); plot(t,y,'r','LineWidth',2) axis([0,4*pi,-1,1]) xlabel('t'),ylabel('y') 第五章 1.绘制下列曲线。 (1)2 1100 x y += (2)22 21x e y -=π (3)12 2 =+y x (4)? ??==3 2 5t y t x 答: (1) x=-10::10; y=100./(1+x.^2); plot(x,y) (2) x=-10::10; y=1/(2*pi)*exp(-x.^2/2); plot(x,y) (3) ezplot('x^2+y^2=1') (4) t=-10::10; x=t.^2; y=5*t.^3; plot(x,y) 2. 绘制下列三维图形。 (1)?? ? ??===t z t y t x sin cos (2)?? ? ??=+=+=u z v u y v u x sin sin )cos 1(cos )cos 1( (3)5=z (4)半径为10的球面(提示:用sphere 函数 答: (1) t=0:pi/100:2*pi; x=cos(t); y=sin(t); z=t; plot3(x,y,z) (2) u=0:pi/100:2*pi; v=0:pi/100:2*pi; x=(1+cos(u)).*cos(v); y=(1+cos(u)).*sin(v); z=sin(u); plot3(x,y,z) (3) [x,y]=meshgrid(-100:100); z=5*ones(size(x)); mesh(x,y,z) (4) [x,y,z] = sphere; %等价于sphere(20) 20是画出来的球面的经纬分面数...20的话就是20个经度, 20个纬度,或者说“就是划出20╳20面的单位球体,把球的表面分成400个小网格” surf(x,y,z); %绘制单位球面 x = 10*x; y = 10*y; z = 10*z; surf(x,y,z); %绘制半径为10的球面 axis equal 第1章MATLAB概论 1.1与其他计算机语言相比较,MA TLAB语言突出的特点是什么? MATLAB具有功能强大、使用方便、输入简捷、库函数丰富、开放性强等特点。 1.2 MA TLAB系统由那些部分组成? MATLAB系统主要由开发环境、MA TLAB数学函数库、MATLAB语言、图形功能和应用程序接口五个部分组成。 1.3 安装MATLAB时,在选择组件窗口中哪些部分必须勾选,没有勾选的部分以后如何补安装? 在安装MA TLAB时,安装内容由选择组件窗口中个复选框是否被勾选来决定,可以根据自己的需要选择安装内容,但基本平台(即MATLAB选项)必须安装。第一次安装没有选择的内容在补安装时只需按照安装的过程进行,只是在选择组件时只勾选要补装的组件或工具箱即可。 1.4 MA TLAB操作桌面有几个窗口?如何使某个窗口脱离桌面成为独立窗口?又如何将脱离出去的窗口重新放置到桌面上? 在MA TLAB操作桌面上有五个窗口,在每个窗口的右上角有两个小按钮,一个是关闭窗口的Close按钮,一个是可以使窗口成为独立窗口的Undock按钮,点击Undock按钮就可以使该窗口脱离桌面成为独立窗口,在独立窗口的view菜单中选择Dock ……菜单项就可以将独立的窗口重新防止的桌面上。 1.5 如何启动M文件编辑/调试器? 在操作桌面上选择“建立新文件”或“打开文件”操作时,M文件编辑/调试器将被启动。在命令窗口中键入edit命令时也可以启动M文件编辑/调试器。 1.6 存储在工作空间中的数组能编辑吗?如何操作? 存储在工作空间的数组可以通过数组编辑器进行编辑:在工作空间浏览器中双击要编辑的数组名打开数组编辑器,再选中要修改的数据单元,输入修改内容即可。 1.7 命令历史窗口除了可以观察前面键入的命令外,还有什么用途? 命令历史窗口除了用于查询以前键入的命令外,还可以直接执行命令历史窗口中选定的内容、将选定的内容拷贝到剪贴板中、将选定内容直接拷贝到M文件中。 《及应用》实验指导书 《及应用》实验指导书 班级: T1243-7 姓名:柏元强 学号: 20120430724 总评成绩: 汽车工程学院 电测与汽车数字应用中心 目录 实验04051001 语言基础..................... 错误!未指定书签。实验04051002 科学计算及绘图............. 1错误!未指定书签。实验04051003 综合实例编程.. (31) 实验04051001 语言基础 1实验目的 1) 熟悉的运行环境 2) 掌握的矩阵和数组的运算 3) 掌握符号表达式的创建 4) 熟悉符号方程的求解 2实验内容 第二章 1. 创建的变量,并进行计算。 (1) 87,190,计算 、、a*b 。 (87); (190); *b (2) 创建 8 类型的变量,数值与(1)中相同,进行相同的计算。 8(87); 8(190); *b 2.计算: (1) 操作成绩 报告成绩 (2) e3 (3) (60) (3) (3*4) 3.设,,计算: (1) (2) (3) 23; (4*u*v)(v) (((u))^2)/(v^2) ((3*v))/(u*v) 4.计算如下表达式: (1) (2) (3-5*i)*(4+2*i) (2-8*i) 5.判断下面语句的运算结果。 (1) 4 < 20 (2) 4 <= 20 (3) 4 20 (4) 4 20 (5) 'b'<'B' 4 < 20 , 4 <= 20,4 20,4 20,'b'<'B' 6.设,,,,判断下面表达式的值。 (1) (2) (3) (4) (5) (6) 395837; a><>>> 7.编写脚本,计算上面第2题中的表达式。 ('(60)='); ((60)) ('(3)='); ((3)) ('(3*4)='); ((3*4)) 8.编写脚本,输出上面第6题中的表达式的值。395837; Matlab 基础练习题 常量、变量、表达式 1、 MATLAB 中,下面哪些变量名是合法的?( ) (A )_num (B )num_ (C )num- (D )-num 2、 在MA TLAB 中,要给出一个复数z 的模,应该使用( )函数。 (A )mod(z) (B )abs(z) (C )double(z) (D )angle(z) 3、 下面属于MATLAB 的预定义特殊变量的是?( ) (A )eps (B )none (C )zero (D )exp 4、 判断:在MA TLAB 的内存工作区中,存放一个英文字符 'a' 需要占用1个字节,存放 一个中文字符‘啊’需要占用2个字节。( 错,都是2个字节 ) 5、 判断:MA TLAB 中,i 和j ( 对 ) 6、 判断:MA TLAB 中,pi 代表圆周率,它等于3.14。( 错,后面还有很多位小数 ) 7、 在MA TLAB 中,若想计算的5 1)3.0sin(21+= πy 值,那么应该在MA TLAB 的指令窗中 输入的MA TLAB 指令是__y1=2*sin(0.3*pi)/(1+sqrt(5))_。 8、 在MA TLAB 中,a = 1,b = i ,则a 占_8__个字节,b 占_16_个字节,c 占________字 节。 9、 在MA TLAB 中,inf 的含义是__无穷大__,nan 的含义是__非数(结果不定)___。 数组 1、 在MA TLAB 中,X 是一个一维数值数组,现在要把数组X 中的所有元素按原来次序 的逆序排列输出,应该使用下面的( )指令。 (A )X[end:1] (B )X[end:-1:1] (C )X (end:-1:1) (D )X(end:1) 2、 在MA TLAB 中,A 是一个字二维数组,要获取A 的行数和列数,应该使用的MATLAB 的命令是( )。 (A )class(A) (B )sizeof(A) (C )size(A) (D )isa(A) 3、 在MATLAB 中,用指令x=1:9生成数组x 。现在要把x 数组的第二和第七个元素都 赋值为0,应该在指令窗中输入( ) (A )x([2 7])=(0 0) (B )x([2,7])=[0,0] (C )x[(2,7)]=[0 0] (D )x[(2 7)]=(0 0) 4、 在MA TLAB 中,依次执行以下指令:clear;A=ones(3,4); A(:)=[-6:5];这时, 若在指令窗中输入指令b=A(:,2)',那么,MATLAB 输出的结果应该是( ) (A )b = -3 -2 -1 (B )b = -2 -1 0 1 (C )b = -5 -1 3 (D )b = -5 -2 1 4 5、 在MA TLAB 中,A = 1:9,现在执行如下指令L1 = ~(A>5),则MATLAB 的执行结果应 该是L1 =___ 1 1 1 1 1 0 0 0 0___。 目录 第一章 (1) 第二章 (5) 第三章 (12) 第四章 (32) 第五章 (47) 第六章 (54) 补充题欧拉法,龙格库塔法解方程,黑板上的题 (57) 第一章 1.创建表达式 %可以用syms先符号运算再带入值 x=1; y=2; z=(sqrt(4*x^2+1)+0.5457*exp(-0.75*x^2-3.75*y^2-1.5*x))/(2*sin(3*y)-1) z = -1.4345 2.计算复数 x=(-1+sqrt(-5))/4; y=x+8+10j y = 7.7500 +10.5590i 3.help命令学三维曲线 x=-5:0.1:5; y=x; [X,Y]=meshgrid(x,y); Z=(sin(sqrt(X.^2+Y.^2)))./(sqrt(X.^2+Y.^2)); subplot(221); surf(X,Y,Z); colormap(cool); subplot(222); plot3(X,Y,Z,'linewidth',4); %绘制三维曲线,也可以随意给定一个三维曲线的函数。如果画这个曲面,那么将绘出一族三维曲线 grid on; subplot(223); meshz(X,Y,Z); %地毯绘图 subplot(224); meshc(X,Y,Z); %等高线绘图 4.peaks等高线(更改原函数) subplot(221); contour(peaks1,20); subplot(222); contour3(peaks1,10); %可以定义等高线条数 subplot(223); contourf(peaks1,10); subplot(224); peaks1; z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2) 第5章 MATLAB绘图 习题5 一、选择题 1.如果x、y均为4×3矩阵,则执行plot(x,y)命令后在图形窗口中绘制()条曲线。D A.12 B.7 C.4 D.3 2.下列程序的运行结果是()。A x=0:pi/100:2*pi; for n=1:2:10 plot(n*sin(x),n*cos(x)) hold on end axis square A.5个同心圆 B.5根平行线 C.一根正弦曲线和一根余弦曲线 D.5根正弦曲线和5根余弦曲线3.命令text(1,1,'{\alpha}+{\beta}')执行后,得到的标注效果是()。C A.{\alpha}+{\beta} B.{\α}+{\β} C.α+β D.\α+\β4.subplot(2,2,3)是指()的子图。A A.两行两列的左下图 B.两行两列的右下图 C.两行两列的左上图 D.两行两列的右上图 5.要使函数y=2e x的曲线绘制成直线,应采用的绘图函数是()。C A.polar B.semilogx C.semilogy D.loglog 6.下列程序的运行结果是()。B [x,y]=meshgrid(1:5); surf(x,y,5*ones(size(x))); A.z=x+y平面 B.与xy平面平行的平面 C.与xy平面垂直的平面 D.z=5x平面 7.下列函数中不能用于隐函数绘图的是()。D A.ezmesh B.ezsurf C.ezplot D.plot3 8.下列程序运行后,看到的图形()。C t=0:pi/20:2*pi; [x,y]=meshgrid(-8:0.5:8); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps); 第4章数值运算 习题 4 及解答 1 根据题给的模拟实际测量数据的一组t和)(t y试用数值差分diff 或数值梯度gradient指令计算)(t y'曲线绘制 y',然后把)(t y和)(t 在同一张图上,观察数值求导的后果。(模拟数据从prob_data401.mat获得) 〖目的〗 ●强调:要非常慎用数值导数计算。 ●练习mat数据文件中数据的获取。 ●实验数据求导的后果 ●把两条曲线绘制在同一图上的一种方法。 〖解答〗 (1)从数据文件获得数据的指令 假如prob_data401.mat文件在当前目录或搜索路径上 clear load prob_data401.mat (2)用diff求导的指令 dt=t(2)-t(1); yc=diff(y)/dt; %注意yc的长度将比y短1 plot(t,y,'b',t(2:end),yc,'r') (3)用gradent求导的指令(图形与上相似) dt=t(2)-t(1); yc=gradient(y)/dt; plot(t,y,'b',t,yc,'r') grid on 〖说明〗 ● 不到万不得已,不要进行数值求导。 ● 假若一定要计算数值导数,自变量增量dt 要取得比原有数据相对误差高1、2个量级 以上。 ● 求导会使数据中原有的噪声放大。 2 采用数值计算方法,画出dt t t x y x ? =0 sin )(在]10 ,0[区间曲线,并计算)5.4(y 。 〖提示〗 ● 指定区间内的积分函数可用cumtrapz 指令给出。 ● )5.4(y 在计算要求不太高的地方可用find 指令算得。 〖目的〗 ● 指定区间内的积分函数的数值计算法和cumtrapz 指令。 ● find 指令的应用。 〖解答〗 dt=1e-4; t=0:dt:10; t=t+(t==0)*eps; f=sin(t)./t; s=cumtrapz(f)*dt; plot(t,s,'LineWidth',3) ii=find(t==4.5); s45=s(ii) s45 = 习题二 1.如何理解“矩阵是MATLAB最基本的数据对象”? 答:因为向量可以看成是仅有一行或一列的矩阵,单个数据(标量)可以看成是仅含一个元素的矩阵,故向量和单个数据都可以作为矩阵的特例来处理。 因此,矩阵是MATLAB最基本、最重要的数据对象。 2.设A和B是两个同维同大小的矩阵,问: (1)A*B和A.*B的值是否相等? 答:不相等。 (2)A./B和B.\A的值是否相等? 答:相等。 (3)A/B和B\A的值是否相等? 答:不相等。 (4)A/B和B\A所代表的数学含义是什么? 答:A/B等效于B的逆右乘A矩阵,即A*inv(B),而B\A等效于B矩阵的逆左乘A矩阵,即inv(B)*A。 3.写出完成下列操作的命令。 (1)将矩阵A第2~5行中第1, 3, 5列元素赋给矩阵B。 答:B=A(2:5,1:2:5); 或B=A(2:5,[1 3 5]) (2)删除矩阵A的第7号元素。 答:A(7)=[] (3)将矩阵A的每个元素值加30。 答:A=A+30; (4)求矩阵A的大小和维数。 答:size(A); ndims(A); (5)将向量t的0元素用机器零来代替。 答:t(find(t==0))=eps; (6)将含有12个元素的向量x转换成34 矩阵。 答:reshape(x,3,4); (7)求一个字符串的ASCII码。 答:abs(‘123’); 或double(‘123’); (8)求一个ASCII码所对应的字符。 答:char(49); 4. 下列命令执行后,L1、L2、L3、L4的值分别是多少? A=1:9;B=10-A;... L1=A==B; L2=A<=5; L3=A>3&A<7; L4=find(A>3&A<7); 答:L1的值为[0, 0, 0, 0, 1, 0, 0, 0, 0] L2的值为[1, 1, 1, 1, 1, 0, 0, 0, 0] L3的值为[0, 0, 0, 1, 1, 1, 0, 0, 0] L4的值为[4, 5, 6] 5. 已知 23100.7780414565532503269.5454 3.14A -????-??=????-?? 完成下列操作: (1) 取出A 的前3行构成矩阵B ,前两列构成矩阵C ,右下角32?子矩阵构 成矩阵D ,B 与C 的乘积构成矩阵E 。 答:B=A(1:3,:); C=A(:,1:2); D=A(2:4,3:4); E=B*C; (2) 分别求E 5.6 控制系统的时域响应MATLAB 仿真实训 5.6.1实训目的 1. 学会利用MATLAB 绘制系统的单位阶跃响应曲线,掌握读取系统动态性能指标的方法; 2. 学会利用MATLAB 绘制系统的单位脉冲响应曲线的方法; 3. 掌握利用MATLAB 绘制系统的零输入响应曲线的方法; 4. 掌握利用MATLAB 绘制系统的一般输入响应曲线的方法; 5. 学会通过仿真曲线读取相关信息,并依据有关信息进行系统的时域分析。 5.6.2实训内容 1.编写程序求取下列各系统的单位阶跃响应,完成表5-5并记录相关曲线。 162.316)(21++= s s s G 16 4.216 )(22 ++=s s s G 166.116)(2 3++=s s s G 1616 )(24++=s s s G 解:>> n1=16; >> d1=[1,3.2,16]; >> sys1=tf(n1,d1); >> step(sys1) >> n2=16; >> d2=[1,2.4,16]; >> sys2=tf(n2,d2); >> step(sys2) >> n3=16; >> d3=[1,1.6,16]; >> sys3=tf(n3,d3); >> step(sys3) >> n4=16; >> d4=[1,1,16]; >> sys4=tf(n4,d4); >> step(sys4) w=4; cmax1=1+exp(-z1*pi/sqrt(1-z1^2)); tp1=pi/(w*sqrt(1-z1^2)); ts1=3.5/(z1*w); [cmax1,tp1,ts1] ans = 1.2538 0.8569 2.1875 >> z2=0.3; w=4; cmax2=1+exp(-z2*pi/sqrt(1-z2^2)); tp2=pi/(w*sqrt(1-z2^2)); ts2=3.5/(z2*w); [cmax2,tp2,ts2] 汽车理论作业MA TLAB过程 汽车驱动力与阻力平衡图 加速度倒数-速度曲线图 0 10 20 30 40 50 60 70 80 90 100 u 汽车功率平衡图 u/(km/h)最高档等速百公里油耗曲线 Ua/(km/h) 燃油积极性-加速时间曲线 源程序: 《第一章》 m=3880; g=9.8; r=0.367; x=0.85; f=0.013; io=5.83; CdA=2.77; lf=0.218; Iw1=1.798; Iw2=3.598; Iw=lw1+lw2; ig=[6.09 3.09 1.71 1.00]; %变速器传动比 L=3.2; a=1.947; hg=0.9; n=600:1:4000; T=-19.313+295.27* n/1000-165.44*(门/1000)人2+40.874*(门/1000)人3-3.8445*( n/IOOO).%; Ft1=T*ig(1)*io*x/r; %计算各档对应转速下的驱动力 Ft2=T*ig(2)*io*x/r; Ft3=T*ig(3)*io*x/r; Ft4=T*ig(4)*io*x/r; u1=0.377*r*n/(io*ig(1)); u2=0.377*r*n/(io*ig(2)); u3=0.377*r*n/(io*ig(3)); u4=0.377*r*n/(io*ig(4)); u=0:130/3400:130; F仁m*g*f+CdA*u”2/21.15;%计算各档对应转速下的驱动阻力 F2=m*g*f+CdA*u2.A2/21.15; F3=m*g*f+CdA*u3.A2/21.15; F4=m*g*f+CdA*u4.A2/21.15; figure(1); plot(u1,Ft1, '-r' ,u2,Ft2, '-m' ,u3,Ft3, '-k' ,u4,Ft4, '-b' ,u1,F1, '-r' ,u2,F2, '-m' ,u3,F3, ' k' ,u4,F4, '-b' , 'LineWidth' ,2) title( ' 汽车驱动力与阻力平衡图' ); xlabel( 'u_{a}/km.hA{-1}' ) ylabel( 'F/N' ) gtext( 'F_{t1}' ) gtext( 'F_{t2}' ) gtext( 'F_{t3}' ) gtext( 'F_{t4}' ) gtext( 'F_{f}+F_{w}' ) %由汽车驱动力与阻力平衡图知,他们无交点,u4在最大转速时达到最大 umax=u4(3401) Ft1max=max(Ft1); imax=(Ft1max-m*g*f)/(m*g) disp( ' 假设是后轮驱动' ); C=imax/(a/L+hg*imax/L) % 附着率 delta1=1+(Iw1+Iw2)/(m*rA2)+If*ig(1)*rA2*ioA2*x/(m*rA2); delta2=1+(Iw1+Iw2)/(m*rA2)+If*ig(2)*rA2*ioA2*x/(m*rA2); delta3=1+(Iw1+Iw2)/(m*rA2)+If*ig(3)*rA2*ioA2*x/(m*rA2); delta4=1+(Iw1+Iw2)/(m*rA2)+If*ig(4)*rA2*ioA2*x/(m*rA2); a1=(Ft1-F1)/(delta1*m); %加速度 a2=(Ft2-F2)/(delta2*m); a3=(Ft3-F3)/(delta3*m); a4=(Ft4-F4)/(delta4*m); h1=1./a1; %加速度倒数 h2=1./a2; h3=1./a3; h4=1./a4; figure(2);北航Matlab教程(R2011a)习题2解答 2
信号处理引论第五章及matlab作业答案
Matlab程序设计教程第二版刘卫国课后参考答案(供参考)
matlab课后答案完整版
Matlab课后习题解答
matlab课后习题解答第二章
第五章MATLAB的绘画与图形处理
matlab课后习题及答案详解
matlab教程课后作业
matlab答案第五章
(完整版)matlab习题及答案(2)
MATLAB基础教程薛山第二版课后习题答案讲解
matlab基础练习题(带答案)
MATLAB教程 R2014a 答案 全 张志涌
第5章--MATLAB绘图-习题答案
matlab课后习题答案
matlab课后习题与答案
MATLAB语言与控制系统仿真-参考答案-第5章
汽车理论课后作业答案MATLAB