matlab练习答案整理.docx
- 文档编号:3247110
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:12
- 大小:248.33KB
matlab练习答案整理.docx
《matlab练习答案整理.docx》由会员分享,可在线阅读,更多相关《matlab练习答案整理.docx(12页珍藏版)》请在冰豆网上搜索。
matlab练习答案整理
1.将P(x)=(x−2)(x+3)(x−7)(x+1)化为降幂的形式
AR=[2-37-1];P=poly(AR);
poly2str(P,'s')
2.求一元高次方程组的根
P=[1-5-30150273-1365-8204100576-2880];
R=root(P);
3.求(s^2+2)(s+4)/(s^2+s+1)的商和余数
p1=conv([102],[14]);p2=[111];
[q,r]=deconv(p1,p2)
5.将MATLAB改写为小写字符串,并进行倒序排列
A='MATLAB';B=char(abs(A)+32);C=B(end:
-1:
1);
disp(A),disp(B),disp(C)
6.学期期末进行了4门考试,要求将一个宿舍的6个人的4门课成绩利用元胞构造的结构数组,要求结构中包含姓名、学号、科目名称和对应分数,可以根据需要自由设计数组结构。
最后计算每科的平均成绩,并按分数高低进行排名。
student.number=[01,02,03,04,05,06];
student.name=cell(1,6);
student.name{1}='John';
student.name{2}='Bill';
student.name{3}='David';
student.name{4}='Peter';
student.name{5}='Dick';
student.name{6}='Willam';
student.subject=cell(1,4);
student.subject{1}='math';
student.subject{2}='physics';
student.subject{3}='english';
student.subject{4}='chemistry';
student.test=randint(4,6,[70,100]);
[a1b1]=sort(student.test(1,:
));
[a2b2]=sort(student.test(2,:
));
[a3b3]=sort(student.test(3,:
));
[a4b4]=sort(student.test(4,:
));
student.index=[b1;b2;b3;b4];
ave1=sum(student.test(1,:
))/length(student.test(1,:
));
ave2=sum(student.test(2,:
))/length(student.test(2,:
));
ave3=sum(student.test(3,:
))/length(student.test(3,:
));
ave4=sum(student.test(4,:
))/length(student.test(4,:
));
student.ave=[ave1,ave2,ave3,ave4];
1.求下列矩阵的逆和行列式的值
A=[198;725;3-27];B=[10-75;0-2672;7435;8-3215];
A=[198;725;3-27];
a=det(A),
ifabs(a)>0
AI=inv(A);
else
disp('Noinv!
');
end;
B=[10-75;0-2672;7435;8-3215];
b=det(B),
ifabs(b)>0
BI=inv(B);
else
disp('Noinv!
');
end;
2.求解线性代数方程
1)A1=[123;225;351],b1=[11;12;31],
2)3x1+x2+5x4=2;6x2+7x3+3x4=4;4x2+3x3=7;2x1-x2+2x3+6x4=8,
A1=[123;225;351],b1=[11;12;31],
a=det(A1);x1=inv(A1)*b1;
A2=[3105;0673;0430;2-126],b2=[2;4;7;8],
a=det(A2);x2=inv(A2)*b2;
3.完成课本55页第5题与第六题
A=[1-123;51-42;3052;111509];
DA=diag(A);AUP=triu(A);ALO=tril(A);
RA=rank(A);FA=trace(A);
NA1=norm(A,1);NA2=norm(A,2);NA3=norm(A,inf);
CONA1=cond(A,1);CONA2=cond(A,2);CONA3=cond(A,inf);
B=[0.43432;-8.9421];
DB=diag(B);BUP=triu(B);BLO=tril(B);
RB=rank(B);FB=trace(B);
NB=norm(B);CONB=cond(B);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A=[110.5;110.25;0.50.252];
[V,D]=eig(A)
4.在[10,99]区间随机生成一个5阶整数阵,验证sqrt和sqrtm的区别
DD=randint(5,5,[10,99]);
sqrt(DD),sqrtm(DD)
%%%%%%%%%%%%%%%练习四%%%%%%%%%%%
1.编写程序计算x在[-10,10]上,函数f(x)的图形
f(x)=2sinxx>5
f(x)=3+x0 f(x)=x^2x<=0 clc;clear;closeall;disp('inputrange'); begin=input('beginnum[-10,10]: '); endin=input('endnum[-10,10]: ');k=1; whilek==1 ifbegin k=0; else disp('wrongnumber! '); begin=input('beginnum[-10,10]: '); endin=input('endnum[-10,10]: '); end end y=[]; fori=begin: 0.1: endin ifi<=0 temp=i^2;y=[y,temp]; elseifi>0&i<=5 temp=i+3;y=[y,temp]; else temp=2*sin(i);y=[y,temp]; end end plot(begin: 0.1: endin,y);title('f(x)'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2.编制一个程序,列出1100内所有素数 clc;clear;closeall;disp('inputrange'); endnum=input('inputnum(1 ');x=[1,2]; fori=3: endnum k=0; forj=2: round(i/2) ifmod(i,j)==0 k=1; break; end end ifk==1 continue; else x=[x,i]; end end,disp(x) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3.产生M个两位随机整数,输出其中小于平均值的偶数,M由键盘输入得到 clc;clear;closeall; M=input('inputnumberlength: '); A=randint(1,M,[10,99]);AVE=mean(A);X=[]; fori=1: M ifrem(A(i),2)==0&A(i) X=[X,A(i)]; end end,disp(X) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4.键盘输入一个百分制成绩,并把成绩归类分成5档,从60分算起,每10分 为一档,分为ABCD四档,60分以下为E。 (1)分别用if和switch语句实现 (2)显示归类的结果 (3)如果输入信息不正确要求给出错误提示,并重新输入。 clc;clear;closeall; result=input('Inputexamresult[0,100]: ','s'); NUM=find(result>='0'&result<='9'); while(length(NUM)~=length(result)) disp('Inputiswrong! ') result=input('Inputexamresult[0,100]: ','s'); NUM=find(result>='0'&result<='9'); end,score=str2num(result); switchfix(score/10) case6 level='D'; case7 level='C'; case8 level='B'; case{9,10} level='A'; otherwise{0,1,2,3,4,5}; level='E'; end,disp('rank='),disp(level) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 5.根据y=1+1/3+1/5+……+1/(2n-1),求 (1)当n取什么值的时候,y的值最接近3,此时y为多少 (2)当n取1000的时候,y的值为多少 clc;clear;closeall;n=1;SUM=0; whileSUM<3 y(n)=1/(2*n-1);SUM=sum(y);n=n+1; end,a1=SUM-y(n-1); ifabs(a1-3)>(SUM-3) disp('n='),disp(n-1) else disp('n='),disp(n-2) end fori=1: 1000 y(i)=1/(2*i-1); end,disp('sum='),disp(sum(y)) %%%%%%%%%%%%%%%%%%%练习五%%%%%%%%%%%%%%%% 1.编写输出比整数M小的所有完数的函数文件,M由键盘输入。 clc;clear;closeall;m=input('themaxnumber: '); x=wanx(m);disp('theresult: ');disp(x); functionx=wans(m) x=[]; fori=2: m temp=0; forj=1: round(i/2) ifmod(i,j)==0 temp=temp+j; end end iftemp==i x=[x,i]; end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2.编写程序,以函数调用的方式计算x在[-3,3]上,任意范围内的函数f(x)的数值。 clc;clear;closeall;disp('inputrange: '); begin=input('beginnum[-3,3]: '); endin=input('endnum[-3,3]: ');k=1; whilek==1 ifbegin k=0; else disp('wrongnumber! '); begin=input('beginnum[-3,3]: '); endin=input('endnum[-3,3]: '); end end y=hutu(begin,endin) functiony=hutu(begin,endin) y=[]; fori=begin: 0.1: endin ifi<-1 temp=(-i^2-4*i-3)/2;y=[y,temp]; elseifi>=-1&i<1 temp=-i^2+1;y=[y,temp]; else temp=(-i^2+4*i-3)/2;y=[y,temp]; end end plot(begin: 0.1: endin,y);title('f(x)'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3.编写函数文件,实现小于任意自然数N的斐波那契数列各项的值。 clc;clear;closeall; n=input('inputthemaxnumber: ');[Fn,m]=fbnc(n); disp(['n=',num2str(m)]);disp(['Fn=',num2str(Fn(end))]); function[f,m]=fbnc(n) f (1)=1;f (2)=1;i=2; whilef(i)<=n f(i+1)=f(i-1)+f(i);i=i+1; end m=length(f); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4.编写函数文件,实现求任意二维矩阵的最大值与最小值,并输出所在位置。 clc;clear;closeall; n=input('MATRIXfirstRANK: '); m=input('MATRIXsecondRANK: '); t1=input('themaxnumber: ');t2=input('theminnumber: '); A=randint(n,m,[t1,t2]); [maxv,maxs,minv,mins]=findm(A); disp('MATRIXMAXVALU: ');disp(maxv); disp('MAXSITE: ');disp(maxs); disp('MATRIXMINVALU: ');disp(maxv); disp('MINSITE: ');disp(maxs); function[maxv,maxs,minv,mins]=findm(A) [AMAXV,n1]=max(A,[],2);AMAXS=[(1: n)',n1]; [maxv,fn1]=max(AMAXV);maxs=AMAXS(fn1,: ); [AMINV,n2]=min(A,[],2);AMINS=[(1: n)',n2]; [fm2,fn2]=min(AMINV);mins=AMINS(fn2,: ); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 5.编写函数文件,实现字符串的倒序输出,字符串为键盘输入。 clc;clear;closeall; str=input('inputstrings: ','s'); [rts1,rts2,rts3,n1,n2]=DXU(str); disp(rts1);disp(rts2);disp(rts3); function[rts1,rts2,rts3,n1,n2]=DXU(str) rts1=str(end: -1: 1); [rts2,n1]=sort(str,'ascend'); [rts3,n2]=sort(str,'descend'); %%%%%%%%%%%%%%%%%%%%%练习六%%%%%%%%%%%%%%%%%%%%%%% 1.使用三种半对数坐标,分别绘制曲线y=e^(x+5)+x^3,其中x的范围为[1,10],并与直角坐标图形比较。 (要求在一个图形窗口绘制四幅图,并注释图名) x=1: 0.01: 10;y=exp(x+5)+x.^3; subplot(2,2,1);plot(x,y);title('plot'); subplot(2,2,2);semilogx(x,y);title('logx'); subplot(2,2,3);semilogy(x,y);title('logy'); subplot(2,2,4);loglog(x,y);title('logxlogy'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2.在图形窗口分别绘制y=2x+5,y=x^2-3x+1,y=x^3-2x^2+3x-1,并利用坐标参数控制横坐标的显示范围在[-3,3],使得各图形横坐标一致。 clc;clear;closeall;x=-3: 0.01: 3; subplot(2,2,1);plot(x,2*x+5);title('2x+5'); subplot(2,2,2);plot(x,x.^2-3*x+1);title('y=x^2-3x+1'); subplot('position',[0.15,0.05,0.75,0.4]); plot(x,x.^3-2*x.^2+3*x-1);title('y=x^3-2x^2+3x-1'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3.在[-10,10]范围画出z=x^2+y^2+sin(xy)的网格图、曲面图和等高线图。 clc;clear;closeall;x=-10: 1: 10;y=-10: 1: 10;[a,b]=meshgrid(x,y); z=a.^2+b.^2+sin(a.*b); subplot(1,3,2);mesh(a,b,z);title('网格图') subplot(1,3,2);surf(a,b,z);title('曲面图') subplot(1,3,3);meshc(a,b,z);title('等高线图') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4.在[-3π,3π]范围内,以0.01π为间隔,绘制二维曲线y=2sin(x)/x。 clc;clear;closeall;x=-3*pi: 0.01*pi: 3*pi; k=find(x==0);x(k)=eps*pi;y=2*sin(x)./x; plot(x,y);axis([-10,10,-1,2.5]); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 5.已知连续时间系统的系统函数为(2s^2+2s+1)/(s^3+2s^2+2s+1),在极坐标下绘制该系统函数的零极点图形。 n=[2,2,1];m=[1,2,2,1];[z,p,k]=tf2zp(n,m); zr=abs(z);za=angle(z);pr=abs(p);pa=angle(p); polar(pa,pr,'b*');hold;polar(za,zr,'ro'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 6.绘制三维图形,如下图所示。 提示: 圆柱表面为曲线3+cos(t),切面分成50块 clc;clear;closeall;t=-pi: pi/20: pi; subplot(1,2,1);[x,y,z]=cylinder(3+cos(t),50);surf(x,y,z); subplot(1,2,2);[x,y,z]=sphere(50);surf(x,y,z);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 练习 答案 整理