matlab作业习题集.docx
《matlab作业习题集.docx》由会员分享,可在线阅读,更多相关《matlab作业习题集.docx(29页珍藏版)》请在冰豆网上搜索。
![matlab作业习题集.docx](https://file1.bdocx.com/fileroot1/2023-1/9/b9a97424-4b82-436d-97d4-5da0d68466d3/b9a97424-4b82-436d-97d4-5da0d68466d31.gif)
matlab作业习题集
习题一
1、试个MATLAB的工作空间中建立以下2个矩阵:
A=[12]
,求出矩阵A和B的乘积,并将结果赋给变量C。
>>A=[12];B=[12;34];
>>C=A*B
C=
710
2、利用MATLAB提供的帮助信息,了解inv命令的调用格式。
>>helpinv
3、使用help命令查询函数plot的功能以及调用方法,然后利用plot命令绘制函数y=sin(x)的图形,其中
.
>>helpplot
>>x=0:
pi/1000:
pi;
>>y=sin(x);
>>plot(x,y)
>>xlabel('x');
>>ylabel('y=sin(x)');
>>title('正弦函数');
4、试用不同的方法建立数组A=[1],了解怎样访问数组A的第二个元素,然后将其更换为。
建立数组①:
>>A=[1]
②>>A=1:
:
访问元素:
>>A
(2)
ans=
更换元素:
>>A
(2)=
A=
5、已知矩阵
,试用MATLAB提供的关系运算命令将B中所有大于2的元素全改为0。
第一种:
>>B=[12;34];
>>B(find(B>2))=0
B=
12
00
第二种:
>>B=[12;34];
>>form=1:
2
forn=1:
2
ifB(m,n)>2
B(m,n)=0;
end
end
end
>>B
B=
12
00
6、已知矩阵
,试求矩阵A的左右翻转矩阵,上下翻转矩阵,然后在工作空间中利用size命令查看矩阵A的大小。
(1)生成矩阵A
>>A=[1:
9];
>>A=reshape(A,3,3)
A=
147
258
369
(2)左右翻转:
>>fliplr(A)
ans=
741
852
963
(3)上下翻转:
>>flipud(A)
ans=
369
258
147
(4)查看矩阵A的大小:
>>size(A)
ans=
33
7、已知矩阵
,试求其转置、逆、迹、特征值、特征向量和B对应的行列式的值。
>>B=[1:
4];
B=reshape(B,2,2)%生成矩阵B
B=
13
24
>>B'%矩阵转置
ans=
12
34
>>inv(B)%矩阵的逆运算
ans=
=trace(B)%矩阵的迹
a=
5
>>[x,y]=eig(B)%矩阵的特征值y,特征向量x
x=
y=
0
0
>>V=det(B)%矩阵的行列式
V=
-2
8、分别建立一个
阶的单位阵、随机阵和魔方阵。
>>A=eye(3)%生成3*3阶的单位矩阵A
A=
100
010
001
>>B=rand(3)%生成3*3阶的随机矩阵B
B=
>>C=magic(3)%生成3*3阶的魔方矩阵C
C=
816
357
492
9、已知多项式
,
。
试求两个多项式的和与乘积。
>>A=[12-2];B=[11-31];
>>a=poly2sym(A),b=poly2sym(B)
a=
x^2+2*x-2
b=
x^3+x^2-3*x+1
>>c=a+b
c=
x^3+2*x^2-x-1
>>d=conv(A,B);poly2sym(d)
ans=
x^5+3*x^4-3*x^3-7*x^2+8*x-2
10.复数
表达,及计算>>
。
>>z1=3+4*i;z2=1+2*i;z3=2*exp(pi/6*i);
>>z=z1*z2/z3
z=
+
11、产生1×5的均布随机数组,进行如下操作:
1)寻访数组的第三个元素;2)寻访数组的第一、二、五个元素组成的子数组;3)寻访前三个元素组成的子数组;
4)寻访除前2个元素外的全部其他元素。
>>rand('state',0)%产生的随机数都与第一次运行产生的相同
>>A=rand(1,5)%产生1×5的均布随机数组
A=
>>A(3)%寻访数组x的第三个元素
ans=
>>A([125])%寻访数组x的第一、二、五个元素组成的子数组
ans=
>>A(1:
3)%寻访前三个元素组成的子数组
ans=
>>A(3:
end)%寻访除前2个元素外的全部其他元素
ans=
12、试用两种方法用MATLAB计算
第一种:
>>nthroot(-8,3)
ans=
-2
第二种:
>>symsx
solve('x^3+8',x)
ans=
-2
1-3^(1/2)*i
1+3^(1/2)*i
第三种:
>>x=-8;
sign(x)*abs(x).^(1/3)
ans=
-2
13、求
的“商”及“余”多项式。
>>a=[102];b=[14];c=[11];d=[1011];e=conv(a,b);f=conv(e,c);
>>a=[102];b=[14];c=[11];d=[1011];
>>e=conv(a,b);f=conv(e,c);
>>[k,r]=deconv(f,d)%k是商,r是余式
k=
15
r=
00543
14、求方程x^4+7x^3+9x-20=0的全部根。
第一种方法:
>>p=[1709-20];
roots(p)
ans=
+
-
第二种方法:
>>compan(p)
ans=
-70-920
1000
0100
0010
>>eig(ans)
ans=
+
-
15、今有多项式P1(x)=x4-2x+1,P2(x)=x2+,要求先求得P(x)=P1(x)+P2(x),然后计算xi=*i各点上的P(xi)(i=0,1,2,…,5)值。
>>a=[100-21];b=[14];
>>p1=poly2sym(a);p2=poly2sym(b);
>>p=p1+p2
p=
x^4+x^2+2*x+1/2
>>P=sym2poly(p);
>>i=0:
5;xi=*i;
>>polyval(P,xi)
ans=
16、已知一线性方程组如下所示:
,试求其结果。
>>A=[31-1;124;-145];
B=[];
B/A
ans=
习题二
1、编制一个函数,使得该函数能对输入的两个数值进行比较,并返回其中的最小值。
functiony=min(m,n)
ifmy=m;
elsey=n;
end
2、试编一个m程序,将一维数组x中的N个数按颠倒的次序重新存储。
如N=5,原来x为:
x=[13579]而经过颠倒处理后x中数据的次序应该为:
x=[97531]
functiontemp(x)
if(nargin==0)
error('没有参数');
elseif(nargin>1)
error('参数太多');
end
len=length(x);
fori=1:
len/2
tmp=x(i);
x(i)=x(len-i+1);
x(len-i+1)=tmp;
end
x
3、编制一个m程序,计算阶乘n!
=1×2×3×…×n
functiony=jiecheng(N)
ifN<0
error('Nshouldbepositiveorzero');
end
ifN==0|N==1
y=1;
else
y=N*jiecheng(N-1);
end
4.利用循环语句进行程序设计:
假设定义m×n的矩阵A。
判断矩阵A的第1列元素是否为0,若全为0,则从矩阵A中删除第1列
functionB=liu(A)
[m,n]=size(A);
b=0;
a=1;
whilea<=m
ifA(a,1)==0
b=b+1;
end
a=a+1;
end
ifb==m
A(:
1)=[];
B=A;
else
B=A;
end
5、利用循环语句进行程序设计:
在区间[-2,-]内,步长为,对函数y=f(x)=1+1/x求值,并列表。
将所得x值和y值分别存入向量r和s中。
function[r,s]=fun
a=0;
x=-2;
whilex<=
y=1+1/x;
a=a+1;
r(a)=x;
s(a)=y;
x=x+;
end
运行结果:
>>[r,s]=fun
r=
s=
0
6、编程计算
编制m程序:
functionk=fun1(x)
k=0;
fori=0:
x
k=k+2^i;
end
计算:
>>fun(63)
ans=
+019
7.写一个MATLAB小程序,求出最小的n值,使得n!
>realmax。
请问n的值是多少?
此时(n-1)!
的值又是多少?
functiony=findN01(realmax)
maxN=1000;
forn=1:
maxN
value=prod(1:
n);
ifvalue>realmax
break;
end
end
fprintf('n=%d\n',n);
fprintf('(n-1)!
=%d\n',prod(1:
n-1));
习题三
1、用subplot命令在同一图形输出窗口中绘制以下4个函数的图形:
,
,
,
。
>>clear
>>subplot(2,2,1);
>>x=1:
:
3;
>>plot(x,x,'-r*');
>>subplot(2,2,2);
>>x=-1:
:
1;
>>plot(x,x.*sin(x),'-r*');
>>subplot(2,2,3);
>>x=0:
:
;
>>plot(x,x.^2,'-r*');
>>subplot(2,2,4);
>>x=0:
:
;
>>plot(x,tan(x),'-r*');
2、绘制曲线
在
区间上的阶梯图。
>>x=0:
*pi:
5*pi;
y=exp*x).*sin(x);
plot(x,y);axis([0,*pi,0,*pi]);
holdon
stairs(x,y,'r');
3、试绘制以极坐标形式表示的图形:
,其中
的范围为
。
>>x=0:
*pi:
8*pi;
>>p=cos(5*x/4)+1/3;
>>polar(x,p,'-r')
4、画出衰减振荡曲线
及其它的包络线
。
的取值范围是
。
>>t=0:
*pi:
4*pi;
y0=exp(-t/3);
>>y=y0.*sin(3*t);
>>plot(t,y0,'-r',t,y,'-b');
>>legend('包络线','衰减振荡曲线');
5、画出
所表示的三维曲面。
的取值范围是
。
>>x=-8:
:
8;
>>y=-8:
:
8;
>>m=sqrt(x.^2+y.^2);
>>z=sin(m)./m;
>>plot3(x,y,z,'-r');
6、在[02π]范围内绘制二维曲线图y=sin(x)*cos(5x)。
>>x=0:
*pi:
2*pi;
>>y=sin(x).*cos(5*x);
>>plot(x,y,'-rx')
。
7、在[02π]范围内绘制以Y轴为对数的二维曲线图。
y=|1000sin(4x)|+1
>>x=0:
*pi:
2*pi;
>>y=abs(1000*sin(4*x))+1;
>>semilogy(x,y,'-*r')
8、绘制z=sin(x)*cos(y)的三维网格和三维曲面图,x,y变化范围均为[02π]。
>>x=[0:
:
2*pi];
>>y=[0:
:
2*pi];
>>z=sin(y')*cos(x);
>>mesh(x,y,z);
>>xlabel('x-axis'),ylabel('y-axis'),zlabel('z-label');
>>x=0:
:
2*pi;
>>y=0:
:
2*pi;
>>[x,y]=meshgrid(x,y);
>>z=sin(x).*cos(y);
>>surf(x,y,z);
>>xlabel('x-axis'),ylabel('y-axis'),zlabel('z-label');
9、用简短的MATLAB命令在一个图上绘制在0≤x≤7范围内的sin(2x)、
和
三条曲线,并将其一一标明。
>>clear
>>x=0:
*pi:
7;
>>y=sin(2*x);
>>z=sin(x.^2);
>>m=cos(x.^2);
>>plot(x,y,'-r*')
>>holdon
>>plot(x,z,'')
>>plot(x,m,'--')
>>legend('sin(2x)','sin(x^2)','cos(x^2)')
>>holdoff
10、在极坐标系中绘制曲线
>>t=0:
*pi:
8*pi;
>>r=exp(cos(t))-2*cos(4*t)+sin(t/12).^5;
>>polar(t,r,'-r')
习题四
1、求矩阵
的行列式值、逆和特征根
>>symsa11a12a21a22;
>>A=[a11a12;a21a22];
>>B=det(A)
B=
a11*a22-a12*a21
>>inv(A)
ans=
[a22/(a11*a22-a12*a21),-a12/(a11*a22-a12*a21)]
[-a21/(a11*a22-a12*a21),a11/(a11*a22-a12*a21)]
>>[x,y]=eig(A)
x=
[(a11/2+a22/2-(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)/2)/a21-a22/a21,(a11/2+a22/2+(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)/2)/a21-a22/a21]
[1,1]
y=
[a11/2+a22/2-(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)/2,0]
[0,a11/2+a22/2+(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)/2]
2、验证积分
。
用matlab计算左边的:
>>symsAwtm;
>>Y=int('A*exp(-w*t*i)',t,-1*m/2,m/2)%
不知道在matlab中如何输入在这里就用m表示
Y=
(2*A*sin((m*w)/2))/w
右边化简即得证。
3、求
,
>>symstk;
>>s=symsum([t,k^3],t,0,t-1)
s=
[(t*(t-1))/2,k^3*t]
>>symk;
>>s=symsum([1/(2*k-1)^2(-1)^k/k],k,1,inf)
s=
[pi^2/8,-log
(2)]
4、求
、
>>symsaxt;
>>A=[a,t^3;t*cos(x),log(x)];
>>diff(A,'x')%微分一次
ans=
[0,0]
[-t*sin(x),1/x]
>>diff(A,'x',2)%对表达式A微分2次
ans=
[0,0]
[-t*cos(x),-1/x^2]
5.求
>>symsabx;
>>A=[a*x,b*x.^2;1/x,sin(x)];
>>int(A,x)
ans=
[(a*x^2)/2,(b*x^3)/3]
[log(x),-cos(x)]
6、求
>>symsx
>>y=int(1/log(t)','t',1,x)
>>diff(y,x)
7、求
线性方程组的解。
>>A=[1,1/2,1/2,-1;11-11;1-1/4-11;-8-111];
>>B=[01001]';
>>A\B
ans=
8、求
的解。
>>symsx;
y=(x+2).^x-2;
S=solve(y,x)
S=
matrix([[]])
9、求方程组
,
关于
的解。
>>symsuyvzw;
>>m=u*y^2+v*z+w;
>>n=y+z+w;
>>q=solve(m,n,'y','z')
q=
y:
[2x1sym]
z:
[2x1sym]
>>
ans=
(v+2*u*w+(v^2+4*u*w*v-4*u*w)^(1/2))/(2*u)-w
(v+2*u*w-(v^2+4*u*w*v-4*u*w)^(1/2))/(2*u)-w
>>
ans=
-(v+2*u*w+(v^2+4*u*w*v-4*u*w)^(1/2))/(2*u)
-(v+2*u*w-(v^2+4*u*w*v-4*u*w)^(1/2))/(2*u)