Matlab7程序设计考试复习.docx
《Matlab7程序设计考试复习.docx》由会员分享,可在线阅读,更多相关《Matlab7程序设计考试复习.docx(31页珍藏版)》请在冰点文库上搜索。
![Matlab7程序设计考试复习.docx](https://file1.bingdoc.com/fileroot1/2023-8/20/5f6483fe-fb64-444b-84bb-e681e62e728b/5f6483fe-fb64-444b-84bb-e681e62e728b1.gif)
Matlab7程序设计考试复习
第一章MATLAB基础
•1.3MATLAB系统由那些部分组成?
•MATLAB系统主要由开发环境、MATLAB数学函数库、MATLAB语言、图形功能和应用程序接口五个部分组成。
•1.4MATLAB操作桌面有几个窗口?
如何使某个窗口脱离桌面成为独立窗口?
又如何将脱离出去的窗口重新放置到桌面上?
•M文件编辑/调试器、历史指令窗、当前目录浏览器、工作空间浏览器、内存数组编辑器、交互界面分类目录窗、及帮助导航/浏览器和图形窗。
•1.5如何启动M文件编辑/调试器?
•在操作桌面上选择“建立新文件”或“打开文件”操作时,M文件编辑/调试器将被启动。
在命令窗口中键入edit命令时也可以启动M文件编辑/调试器。
•MATLAB的开发环境中包括了专门的M文件编辑器,该编辑器不但提供了M文件的编辑功能,同时还与MATLAB的开发环境一起实现了MATLAB命令和函数文件的运行与调试。
第二章MATLAB运算基础
2.2有几种创建矩阵的方法?
可以用四种方法创建矩阵:
①直接输入法:
优点是输入方法方便简捷;
②通过M文件建立矩阵:
该方法适用于建立尺寸较大的矩阵,并且易于修改;
③由函数建立:
可以由MATLAB的内部函数建立一些特殊矩阵;
④通过数据文件建立:
该方法也可以调用由其他软件产生数据。
2.3建立复数矩阵,并分别提取矩阵各元素的实部和虚部组成新的矩阵,计算该矩阵的模矩阵、共轭矩阵和共轭转置矩阵。
•x=[4+8i3+5i2-7i1+4i7-5i;3+2i7-6i9+4i3-9i4+4i];
•Rx=real(x)
•Ix=imag(x)
•Ax=abs(x)
•Cx=conj(x)
•CCx=x'
•Rx=
•43217
•37934
•Ix=
•85-74-5
•2-64-94
•Ax=
•8.94435.83107.28014.12318.6023
•3.60569.21959.84899.48685.6569
•Cx=
•4.0000-8.0000i3.0000-5.0000i2.0000+7.0000i1.0000-4.0000i7.0000+5.0000i
•3.0000-2.0000i7.0000+6.0000i9.0000-4.0000i3.0000+9.0000i4.0000-4.0000i
•CCx=
•4.0000-8.0000i3.0000-2.0000i
•3.0000-5.0000i7.0000+6.0000i
•2.0000+7.0000i9.0000-4.0000i
•1.0000-4.0000i3.0000+9.0000i
•7.0000+5.0000i4.0000-4.0000i
•2.4建立向量的方法有哪些?
举例说明,并求出向量的长度,第一个元素、最后一个元素。
•方法:
两个冒号组成等增量语句;使用linspace和logspace函数生成向量。
•例:
x=-5:
2:
5%建立行向量
•length(x)%向量x的长度
•x
(1)%x的第一个元素
•x(end)%x的最后一个元素
•x'%向量转置为列向量
•y=linspace(-5,5,8)%建立行向量
•y'%向量转置为列向量
•2.5如何建立单位矩阵?
如何建立零矩阵?
•eye
(1)eye
(2)eye(3)
•zeroszeros
(2)zeros(3)
•2.6分析下列语句的功能,并给出执行结果。
•y=linspace(-5,5,10);
•ly=length(y)
•y1=y
(1)
•y15=y(1:
2:
5)
•y_ly=y(ly)
•y_end=y(end)
•y(end+1)=8
•ly=
•10
•y1=
•-5
•y15=
•-5.0000-2.7778-0.5556
•y_ly=
•5
•y_end=
•5
•y=
•Columns1through8
•-5.0000-3.8889-2.7778-1.6667-0.55560.55561.66672.7778
•Columns9through11
•3.88895.00008.0000
•2.8在进行乘法运算时,数组运算和矩阵运算各有什么要求?
•进行数组运算的两个数组必须有相同的行数和列数。
进行矩阵运算的两个矩阵必须满足矩阵运算规则,如矩阵a与b相乘(a*b)时必须满足a的列数等于b的行数。
•例计算与的乘积。
•分析:
a与b有相同的行数和列数,因此a.*b有意义,a*b没有意义。
•a=[693;275];b=[241;468];a.*b
•执行结果:
•ans=
•12027
•283016
•2.10
•A=[54-4;378;167];
•B=[1-3-1;203;-327];
•A+2*B,A+eye(size(A)),B+eye(size(B))
•ans=
•7-2-6
•7714
•-51021
•ans=
•64-4
•388
•168
•ans=
•2-3-1
•213
•-328
•A*B,A.*B,
•ans=
•25-23-21
•-7774
•-81166
•ans=
•5-124
•6024
•-31249
•A^2,A.^2,
•ans=
•3324-16
•44109100
•308893
•ans=
•251616
•94964
•13649
•A/B,B\A,
•ans=
•-2.33901.4068-1.5085
•-2.49152.3898-0.2373
•-1.96611.55930.0508
•ans=
•0.30510.93221.9153
•-1.8305-1.59321.5085
•0.79661.71191.3898
•A./B,B.\A,
•Warning:
Dividebyzero.
•ans=
•5.0000-1.33334.0000
•1.5000Inf2.6667
•-0.33333.00001.0000
•Warning:
Dividebyzero.
•ans=
•5.0000-1.33334.0000
•1.5000Inf2.6667
•-0.33333.00001.0000
•[AB].^2
•ans=
•251616191
•94964409
•136499449
•2.^[AB]
•ans=
•32.000016.00000.06252.00000.12500.5000
•8.0000128.0000256.00004.00001.00008.0000
•2.000064.0000128.00000.12504.0000128.0000
•2.13在命令窗口输入A=[715;256;315],
•B=[111;222;333],建立矩阵A和B,
•分析下列语句的功能,写出执行结果。
•A=[713;-256;-315],B=[121;-222;3-31],
•A(2,3),
•ans=
•6
•A(:
2),
•ans=
•1
•5
•1
•A(3,:
)
•ans=
•-315
•A(:
1:
2:
3)
•ans=
•73
•-26
•-35
•A(:
3).*B(:
2)
•ans=
•6
•12
•-15
•A(:
3)*B(2,:
)
•ans=
•-666
•-121212
•-101010
•A*B
•ans=
•14712
•6-1214
•10-194
•A.*B
•ans=
•723
•41012
•-9-35
•A^2
•ans=
•381542
•-422954
•-38722
•A.^2
•ans=
•4919
•42536
•9125
•B/A
•ans=
•0.09760.4634-0.4146
•-0.17070.4390-0.0244
•0.5732-0.90240.9390
•B./A
•ans=
•0.14292.00000.3333
•1.00000.40000.3333
•-1.0000-3.00000.2000
•2.14分析下列语句的关于向量的加、减、乘、除语句的执行结果。
•x=[1234];y=[4321];
•
(1)x+y,
(2)x-y,(3)x*y',(4)x.*y,(5)x.^y,(6)x.^2,(7)2.^y(8)2.^[xy]
•
(1)ans=
•5555
•ans=
•-3-113
•ans=
•20
•ans=
•4664
•ans=
•1894
•ans=
•14916
•ans=
•16842
•ans=
•2481616842
第三章MATLAB程序设计
•3.2程序1:
•x=input('请输入x的值:
');
•ifisreal(x)==0
•disp('Nodefination')
•elseifx>=-1&x<=1
•y=x.^2+1
•else
•y=x+1
•end
•程序2:
•x=input('请输入x的值:
');
•isreal_x=isreal(x);
•switchisreal_x
•case1
•ifx>1|x<-1
•y=1+x
•else
•y=x.^2+1
•end
•case0
•disp('Nodefination')
•end
•3.3
•程序:
•x=input('pleaseenterxvalue:
');
•ifx<0&x~=-3
•y=x.^2+x-6
•elseifx>=0&x~=2&x~=3&x<10
•y=x.^2-5*x+6
•else
•y=x.^2-x-1
•end
•
•
•
•
•
•3.5
•程序1:
程序2:
•y=0;y=0;n=1;
•forn=1:
100whilen<=100
•f=1/n/n/n;y=y+f;n=n+1;f=1/n/n/n;y=y+f;n=n+1;
•endend
•yy
•3.7
•程序:
•a=0;b=3;n=1000;h=(b-a)/n;
•x=a:
h:
b;
•f=x./(x.^2-1);
•fori=1:
n
•s(i)=(f(i)+f(i+1))*h/2;
•end
•s=sum(s)
•3.10一个自然数是素数,且它的各位数字位置经过任意对换后仍为素数,则称是绝对素数。
试求所有两位的绝对素数。
要求:
定义一个判断函数的函数文件。
•程序:
•fori=10:
99
•a=floor(i/10);b=mod(i,10);ii=b*10+a;
•ifsushu(i)&sushu(ii)
•i
•end
•end
•函数:
•functionflag=sushu(i)
•flag=1;
•forj=2:
i/2
•ifmod(i,j)==0
•flag=0;
•end
•end
•3.13编写矩阵输入程序。
•m=input(‘矩阵行数:
m=’);
•n=input(‘矩阵列数:
n=’);
•fori=1:
m
•forj=1:
n
•disp([‘输入第’,num2str(i),’行,第’,num2str(j),’列元素’])
•A(i,j)=input(‘’)
•end
•end
•3.15编写函数的函数文件,并计算在-5、-3、-1、1、3、5处的值。
•程序1:
程序2:
•functiony=f2(x)f=inline('x.^3+2*x.^2+1');
•y=x.^3+2*x.^2+1;f([-5-3-1135])
•y=f2([-5-3-1135])
•3.16有一组学生的考试成绩,根据规定,成绩在100分时为满分,成绩在90~99之间时为优秀,成绩在80~89分之间时为良好,成绩在60~79分之间为及格,成绩在60分以下时为不及格,编写一个根据成绩划分等级的程序。
•程序:
•name=input('Pleaseinputthename:
');
•Marks=input('Pleaseinputthemarks:
');
•n=length(Marks);
•fori=1:
n
•a{i}=89+i;
•b{i}=79+i;
•c{i}=69+i;
•d{i}=59+i;
•end;
•c=[d,c];
•fori=1:
n
•switchMarks(i)
•case100
•
•Rank(i,:
)='满分';
•casea
•Rank(i,:
)='优秀';
•caseb
•Rank(i,:
)='良好';
•casec
•Rank(i,:
)='及格';
•otherwise
•Rank(i,:
)='不及格';
•end
•end
•disp('')
•disp(['学生姓名','得分','等级']);
•disp('--------------------------')
•fori=1:
10;
•disp(['',name(i),'',num2str(Marks(i)),'',Rank(i,:
)]);
•end
第四章MATLAB数值计算
•4.2x=[107-55],y=[4-46-210],计算x的协方差、y的协方差、x与y的互协方差。
•x=[107-55],y=[4-46-210],
•cx=cov(x)
•cy=cov(y)
•cxy=cov(x,y)
•cx=
•21.8000
•cy=
•33.2000
•cxy=
•21.800020.9000
•20.900033.2000
•4.3分析下列语句的功能,并写出执行结果。
•a=invhilb(4);
•a‘
•ans=
•16-120240-140
•-1201200-27001680
•240-27006480-4200
•-1401680-42002800
•diag(a)
•ans=
•16
•1200
•6480
•2800
•flipud(a)
•ans=
•-1401680-42002800
•240-27006480-4200
•-1201200-27001680
•16-120240-140
•fliplr(a)
•ans=
•-140240-12016
•1680-27001200-120
•-42006480-2700240
•2800-42001680-140
•rot90(a)
•ans=
•-1401680-42002800
•240-27006480-4200
•-1201200-27001680
•16-120240-140
•reshape(a,1,16)
•ans=
•Columns1through6
•16-120240-140-1201200
•Columns7through12
•-27001680240-27006480-4200
•Columns13through16
•-1401680-42002800
•tril(a)
•ans=
•16000
•-120120000
•240-270064800
•-1401680-42002800
•triu(a)
•ans=
•16-120240-140
•01200-27001680
•006480-4200
•0002800
•4.4
•
(1)Rank(A)=?
•rank([1-632;3-540;-1-1124])
•
(2)B=[1210;6241;0210;3141];
•ifdet(B)~=0
•inv(B)
•else
•disp('noinverse.')
•end
•4.6求下列矩阵的行列式、特征值和特征向量,如可逆,求其逆矩阵.
•a=[1132;-11-13;5-289;-1317];
•[ii,jj]=size(a);
•det_a=det(a)
•[v,d]=eig(a)
•ifrank(a)==ii
•disp('noinverse')
•else
•disp('yes')
•inv_a=inv(a)
•end
•4.7程序1:
•A=[65-25;9-14-1;342-2;3-920];
•b=[-413111]';
•x=inv(A)*b
•程序2:
•A=[65-25;9-14-1;342-2;3-920];
•b=[-413111]';
•x=A\b
•程序3:
•A=[65-25;9-14-1;342-2;3-920];
•b=[-413111]';
•Ab=[Ab];
•rref(Ab)
•(3)判断下列向量组是否线性相关:
•a=[1132;-11-13;5-289;-1317];
•[ii,jj]=size(a);
•ifrank(a)==ii
•disp('no')
•else
•disp('yes')
•end
•4.9xA=b,求x.
•A=[11-1;210;111];
•b=[113;432;125];
•方法1:
b/A
•方法2:
b*inv(A)
•4.11用二分法计算多项式方程x^3-2x-5=0在[0,3]内的一个根。
•程序1:
程序2:
•a=0;fa=-inf;p=[10-2-5];
•b=3;fb=inf;r_p=roots(p);
•whileb-a>eps*bl=r_p>=0&r_p<=3;
•x=(a+b)/2;r_p(l)
•fx=x^3-2*x-5;
•ifsign(fx)==sign(fa)
•a=x;fa=fx;
•else
•b=x;fb=fx;
•end
•end
•x运行结果为:
•x=2.0945515148154233
•4.12已知函数,求根、和、导数。
•程序:
•pf=[3-12103];pg=[1/31-3-1];
•root_pf=roots(pf)
•rppt_pg=roots(pg)
•ps=pf+[00pg]
•pm=conv(pf,pg)
•pd=deconv(pf,pg)
•polyder(pf)
•polyder(pg)
•[p1p2]=polyder(pf,pg)
•4.14
•p=[321];polyvalm(p,[25;79])
•4.16求方程x^3-7x^2+2x+40=0的根。
•p=[1-7240];
•r=roots(p);
•4.19求矩阵[123;456;780]的特征多项式系数,并转换为多项式形式。
•a=[123;456;780];p=poly(a),poly2sym(p)
第五章符号计算
5.1下面三种表示方法有什么不同的含义?
(1)f=3*x^2+5*x+2
(2)f='3*x^2+5*x+2'
(3)x=sym('x')
f=3*x^2+5*x+2
•
(1)f=3*x^2+5*x+2
•表示在给定x时,将3*x^2+5*x+2的数值运算结果赋值给变量f,如果没有给定x则指示错误信息。
•
(2)f='3*x^2+5*x+2'
•表示将字符串'3*x^2+5*x+2'赋值给字符变量f,没有任何计算含义,因此也不对字符串中的内容做任何分析。
•(3)x=sym('x')
•f=3*x^2+5*x+2
•表示x是一个符号变量,f=3*x^2+5*x+2就具有了符号函数的意义,f也自然成为符号变量了。
•5.2用符号计算验证三角函数的和差与积的关系等式。
•symsphi1phi2;
•y=simple(sin(phi1)*cos(phi2)-cos(phi1)*sin(phi2))…
•方法1:
•functionz=