完整word版matlab练习题.docx
《完整word版matlab练习题.docx》由会员分享,可在线阅读,更多相关《完整word版matlab练习题.docx(25页珍藏版)》请在冰豆网上搜索。
![完整word版matlab练习题.docx](https://file1.bdocx.com/fileroot1/2023-1/23/0b27b49e-504b-4e70-a23c-f8daf4e10594/0b27b49e-504b-4e70-a23c-f8daf4e105941.gif)
完整word版matlab练习题
1.在命令窗口输入语句:
a=[1,2,3;4,5,6;7,8,9],
(1)按回车键,命令就被执行,在MATLAB命令窗中显示的结果。
(2)如果在上述输入语句末尾加上分号,则在命令窗口显示的结果
解:
a=
123
456
789
不显示结果
2.在命令窗口输入语句:
x=[-1.31+2+3sqrt(5)],按回车键,命令就被执行,在MATLAB命令窗中显示的结果。
解:
x=
-1.30006.00002.2361
3.在命令窗口输入下述语句,建立复数数组:
b=[1+2*i,2+3*i;2-i,3-2*i],在MATLAB命令窗中显示的结果。
解:
b=
1.0000+2.0000i2.0000+3.0000i
2.0000-1.0000i3.0000-2.0000i
4.产生2阶和3阶魔方阵。
解:
m1=magic
(2)%产生2阶魔方阵
5.求多项式的x3-7x+6的伴随矩阵,可使用语句:
解:
p=[1,0,-7,6];c=compan(p)
6.求(x+y)4的展开式。
解:
p1=pascal(4)
p1=
1111
1234
13610
141020
由执行结果可知,矩阵次对角线上的元素1,4,6,4,1即为展开式的系数。
7.建立3×4的矩阵并取子数组的方法
解:
a=[1234;5678;9101112];
a(1,:
)
a(:
end)
a24=a(2,4)%取a的第二行、第四列的元素
a(1:
2:
4,:
)
a(:
1:
2:
end)
a1=a([1,2],[2,3,4])
a2=a([1,2],[2,3,1])
a3=a([3,1],:
)
a([1,3],[2,4])=zeros
(2)%对a([1,3],[2,4])赋值
8.3×3的数组,删除第三列元素,删除第二行元素,删除一个元素,删除所有元素为空矩阵。
解:
a=[120;340;569];
a(:
3)=[]%删除第三列元素
a(2,:
)=[]%删除第二行元素
a
(1)=[]%删除一个元素,则矩阵变为行向量
a=[]%删除所有元素为空矩阵
9.设
和
求A-2B。
解:
方法1:
A=[4-31;205];B=[120;-103];
A-2*B
方法2:
A=[4-31;205];B=[120;-103];
b=uminus(2*B)%,返回2*B的相反数A+b
10.求30。
、60。
和90。
的正弦、余弦、正切和余切函数值。
解:
x=30:
30:
90;
sind(x),cosd(x),tand(x),cotd(x)
11.求0.1,0.2,0.3,0.4,0.5,0.6的反正弦、反余弦和反正切值。
解:
x=0.1:
0.1:
0.6;
asin(x),acos(x),atan(x)%返回值为弧度
asind(x),acosd(x),atand(x)%返回值为角度
12.求1到10的自然对数和常用对数。
解:
x=1:
10;
log(x)%返回值为自然对数
log10(x)%返回值为常用对数
13.建立任意的两个字符串,并查看字符串占用的字节信息。
解:
s1='NortheastForestUiversity'%赋值方式建立字符串s1
s2='HaerbinHeilongjiang‘%赋值方式建立字符串s2
whos%查看字符串占用的字节信息
14.使用赋值语句依次为各个域赋值的方法建立构架数组,存储两名学生的名字、学号、性别、班级信息。
解:
s.name='WangMing';
s.sex='man';
s.class='199901';
s
(2).name='ZhangLe';
s
(2).sex='man';
s
(2).class='199902';
15.已知A=[4,-65,-54,0,6;56,0,67,-45,0],分析下列语句的功能。
(1)find(A>4);
(2)[ij]=find(A,1);(3)[ij]=find(A,1,'first');(4)[ij]=find(A,1,'last')
解:
(1)找出大于4的元素的序号。
(2)找出一个不为零的元素的行号、列号。
(3)找出第一个不为零的元素的行号、列号。
(4)找出最后一个不为零的元素的行号、列号
16.建立任意的3×3的矩阵,并求出能被3整除的元素。
解:
A=[103;29-1;-3-90];%生成3×3的矩阵A
P=rem(A,3)==0%判断A的元素是否可以被3整除
A(P)%求出被3整除的元素
17.已知
(1) n为任意给定的整数,求y的值。
(2) y≥1.5时,求n的值
解:
%
(1)
y=0;i=1;
n=input('n=?
');
whilei<=n
f=1/i/i;y=y+f;i=i+1;
end
y
%
(2)
y=0;i=1;
while1
f=1/i/i;y=y+f;
ify>=1.5
break;
end
i=i+1;
end
i,y
18.设
,求:
解:
a=0;b=2*pi;n=1000;h=(b-a)/n;
x=a:
h:
b;y=0;
f=cos(x-pi/6).*sin(x+pi/6);
fori=1:
n
s(i)=(f(i)+f(i+1))*h/2;
y=y+s(i);
end
y
19.求[100,200]之间第一个能被13整除的整数。
解:
forn=100:
200
ifrem(n,13)~=0
continue
end
break
end
n
20.使用for循环语句逐一显示构架数组的域值。
解:
forii=1:
length(s)
disp(s(ii).name)
disp(s(ii).number)
disp(s(ii).class)
disp(s(ii).sex)
end
21.输出全部三位的水仙花数。
解:
form=100:
999
m1=fix(m/100);%求m的百位数字
m2=rem(fix(m/10),10);%求m的十位数字
m3=rem(m,10);%求m的个位数字
ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3
disp(m)
end
end
22.编程求出Fibonacci数列中第一个大于10000的元素及序号。
解:
%1
a
(1)=1;a
(2)=1;i=2;
whilea(i)<=10000
a(i+1)=a(i-1)+a(i);i=i+1;
end
i,a(i)
%2
n=100;a=ones(1,n);
fori=3:
n
a(i)=a(i-1)+a(i-2);
ifa(i)>=10000
a(i),
break;
end;
end
i
23.求某正整数范围内的全部素数。
解:
1
m=input('m=');
p=1:
m;p
(1)=0;
fori=2:
sqrt(m)
forj=2*i:
i:
m
p(j)=0;
end
end
n=find(p~=0);
p(n)
%2
m=input('m=');
p=2:
m;
fori=2:
sqrt(m)
n=find(rem(p,i)==0&p~=i);
p(n)=[];
end
p
24.求1-100的平方、平方根和立方根
解:
%方法1:
square=zeros(1,100);square_root=zeros(1,100);cube_root=zeros(1,100);
forii=1:
100
square(ii)=ii^2;square_root(ii)=ii^(1/2);cube_root(ii)=ii^(1/3);
end
%方法2:
ii=1:
100;square(ii)=ii.^2;square_root(ii)=ii.^(1/2);cube_root(ii)=ii.^(1/3);
25.编程求3阶魔方矩阵大于5的元素的平方根。
解:
%方法1:
a=magic(3);
forii=1:
size(a,1)
forjj=1:
size(a,2)
ifa(ii,jj)>5
a(ii,jj)=sqrt(a(ii,jj));
end
end
end
a
%方法2:
a=magic(3);b=a>5;%b是逻辑数组
a(b)=sqrt(a(b))
%如果要求同时对小于等于5的元素求平方呢?
修改的程序如下:
%方法1:
a=magic(3);
forii=1:
size(a,1)
forjj=1:
size(a,2)
ifa(ii,jj)>5
a(ii,jj)=sqrt(a(ii,jj));
else
a(ii,jj)=a(ii,jj)^2;
end
end
end
a
%方法2:
a=magic(3);
b=a>5;a(b)=sqrt(a(b));a(~b)=a(~b).^2;a
26.求n!
n=1,2,…,10。
解:
%定义函数文件factor:
functionf=factor(n)
ifn<=1
f=1;
else
f=factor(n-1)*n;
end
return;%返回
%编写下述的命令文件中调用函数文件factor.m:
%fori=1:
10
%fac(i)=factor(i);
%end
%fac
27.求函数f(x)=sin(x)+3在区间[25]的极小值。
解:
%方法1:
f=inline('sin(x)+3');x=fminbnd(f,2,5);
%方法2:
x=fminbnd('sin(x)+3',2,5);
sin(x)+3%f(x)在区间[25]的极小值
28.建立一数据文件,用于存放若干名学生的姓名和成绩。
解:
n=input('Pleaseinputthenumberofstudent?
');
fid=fopen('ss.txt','w');
fori=1:
n
n=input('name=?
','s');
s=input('score=?
');
fprintf(fid,'%8s%6.1f\n',n,s);
end
fclose(fid);
29.已知x=[-43,72,9,16,23,47],求向量x的最大值和最小值。
解:
x=[-43,72,9,16,23,47]
y=max(x)%求向量x中的最大值
[y,l]=max(x)%求向量x中的最大值及其该元素的位置
z=min(x)%求向量x中的最小值
[z,m]=min(x)%求向量x中的最小值及其该元素的位置
30.分别求三阶魔方矩阵中各列和各行元素中的最大值,并求整个矩阵的最大值和最小值。
解:
x=magic(3)
max(x)%矩阵x中各列元素中的最大值
max(x,[],2)%矩阵x中各行元素中的最大值
min(x)%矩阵x中各列元素中的最小值
min(x,[],2)%矩阵x中各行元素中的最小值
max(max(x))%整个矩阵的最大值
min(min(x))%整个矩阵的最小值
31.分析下列程序的功能。
x=[456;148];
y=[175;457];
p=max(x,y);
P
解:
取两个2×3的二维数组x和y同一位置上的元素值大者构成一个新矩阵p。
32.已知x=[1842;9625;3671],从不同维方向求出其平均值和中值。
解:
x=[1842;9625;3671];
median(x)
median(x,1)%按列方向,求数组的中值
median(x,2)%按行方向,求数组的中值
mean(x)
mean(x,1)%按列方向,求数组的平均值
mean(x,2)%按行方向,求数组的平均值
33.已知x=[456;148],分析矩阵x的每行、每列元素的乘积和全部元素的乘积。
解:
x=[456;148];
sum(x)
sum(x,1)%求数组各列元素的和
sum(x,2)%求数组各行元素的和
sum(sum(x))%求数组所有元素的和
prod(x)
prod(x,1)%求数组各列元素的乘积
prod(x,2)%求数组各行元素的乘积
prod(prod(x))%求数组所有元素的乘积
34.已知a=[123;396;4108;407],从不同维方向求出其标准方差。
解:
a=[123;396;4108;407];
std(a)
std(a,0,1)%按公式1按列方向求矩阵a的标准方差
std(a,1,1)%按公式2按列方向求矩阵a的标准方差
std(a,0,2)%按公式1按行方向求矩阵a的标准方差
std(a,1,2)%按公式2按列方向求矩阵a的标准方差
35.已知a=[123;396;4108;407],对矩阵排序。
解:
a=[123;396;4108;407];
sort(a,1)
sort(a,1,'ascend')%对矩阵a的各列进行升序排列
sort(a,2)%对矩阵a的各行进行排列
sort(a,2,'ascend')%对矩阵a的各行进行升序排列
sort(a,1,'descend')%对矩阵a的各列进行降序排列
sort(a,2,'descend')%对矩阵a的各行进行降序排列
36.分析下列语句的功能。
a=[1234;5678;9101112;13141516];
(1)flipud(a);
(2)fliplr(a);(3)a=[1;2;6;7;8];flipud(a)(4)a=[12678];flipud(a)。
解:
(1)上下方向翻转矩阵。
(2)水平方向翻转矩阵。
(3)列向量的上下方向翻转。
(4)行向量的上下方向翻转。
37.求矩阵a=[-211;020;-413]的特征值和特征向量
解:
a=[-211;020;-413];[X,D]=eig(a)
38.求多项式
的根。
解:
A=[1,8,0,0,-10];x=roots(A)
39.求正弦、余弦函数在区间[01]内间隔为0.25的各点的值。
解:
x=0:
1;y1=sin(x);y2=cos(x);xi=0:
.25:
1;
yi1=interp1(x,y1,xi),yi2=interp1(x,y2,xi)%线性插值方法
yi1=interp1(x,y1,xi,'nearest'),yi2=interp1(x,y2,xi,'nearest')%最邻近插值
40.已知
在[1,3]区间10个采样点的函数值,求
的4次拟合多项式p(x)。
解:
x=linspace(1,3,10);
y=exp(x);
p=polyfit(x,y,4)
41.求
解:
(1)建立被积函数文件fesin.m
functionf=fesin(x)
f=exp(-0.5*x).*sin(x+pi/6);
(2)调用数值积分函数quad求定积分
[S,n]=quad('fesin',0,3*pi)
42.求
解:
(1)被积函数文件fx.m。
functionf=fx(x)
f=x.*sin(x)./(1+cos(x).*cos(x));
(2)调用函数quad8求定积分。
I=quad8('fx',0,pi)
43.在区间
内,绘制曲线
和
。
解:
x=0:
pi/100:
2*pi;y1=2*sin(2*x);y2=3*sin(3*x);
plot(x,y1,x,y2)%在同一个坐标系分别绘制二维图形
title('Thisisfigureofthethirdexample.');%给图形加上标题
xlabel('x');%给x轴加标注
ylabel('y');
legend('2*sin(2*x)','3*sin(3*x)');%在当前图形上输出图例
44.绘制函数y=sinxcos2x的图形。
解:
x=linspace(0,2*pi,30);y=sin(x).*cos(2*x);plot(x,y,'r--')%红色虚线
title('y=sin(x)*cos(2*x)');xlabel('x');ylabel('y=sinxcos2x');grid
text(5.5,0,'y=sinxcos2x')%在点(5.5,0)处放置文本y=sinxcos2x
45.绘制正弦、余弦、双曲正弦和双曲余弦三角函数的图形。
解:
subplot(2,2,1);ezplot('sin(x)');title('sin(x)');
subplot(2,2,2);ezplot('cos(x)');title('cos(x)');
subplot(2,2,3);ezplot('sinh(x)');title('sinh(x)');
subplot(2,2,4);ezplot('cosh(x)');title('cosh(x)');
46.绘制向量(268785)的直方图
解:
x=[123456];y=[268785];bar(x,y,0.5);
title('ExampleofaBarPlot');xlabel('x');ylabel('y');axis([07010]);
47.绘制向量(1037566)的饼图。
解:
data=[1037566];explode=[01000];pie(data,explode);
title('ExampleofaPiePlot');legend('One','Two','Three','Four','Five');
48.绘制向量(268785)的离散杆状图。
解:
x=[123456];y=[268785];stem(x,y,'filled');
title('ExampleofaStemPlot');xlabel('x');ylabel('y');axis([07010]);
49.绘制三维网面
的图形。
解:
%方法1:
x=-1:
0.05:
1;y=x;[x,y]=meshgrid(x,y);z=x.^2+2*y.^2;surf(x,y,z)
%方法2:
symsxy;f=x^2+y^2;ezsurf(f)%-2≤x≤2,-2≤y≤2
%方法3:
ezsurf('x','y','x^2+y^2',[-1,1,-1,1])%-1≤x≤1,-1≤y≤1
50.绘制z=sinxcosx的三维网格曲面图。
解:
x=0:
0.15:
2*pi;y=0:
0.15:
2*pi;z=sin(y')*cos(x);
mesh(x,y,z);
xlabel('x-axis'),ylabel('y-axis'),zlabel('z-label');title('3-Dmesh');
51.求下列极限。
解:
极限1:
symsamx;
f=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(x+a);
limit(f,x,a)
ans=
(1/2*a*exp(sin(a))+1/2*a-exp(tan(a))+1)/a
极限2:
symsxt;
limit((1+2*t/x)^(3*x),x,inf)
ans=
exp(6*t)
极限3:
symsx;
f=x*(sqrt(x^2+1)-x);
limit(f,x,inf,'left')
ans=
1/2
极限4:
symsx;
f=(sqrt(x)-sqrt
(2)-sqrt(x-2))/sqrt(x*x-4);
limit(f,x,2,'right')
ans=
-1/2
52.生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。
解:
X=randn(10000,5);
M=mean(X)
D=std(X)
R=corrcoef(X)
53.某观测站测得某日6:
00时至18:
00时之间每隔2小时的室内外温度(℃),用3次样条插值分别求得该日室内外6:
30至17:
30时之间每隔2小时各点的近似温度(℃)。
解:
设时间变量h为一行向量,温度变量t为一个两列矩阵,其中第一列存放室内温度,第二列储存室外温度。
命令如下:
h=6:
2:
18;
t=[18,20,22,25,30,28,24;15,19,24,28,34,32,30]';
XI=6.5:
2:
17.5
YI=interp1(h,t,XI,'spline')%用3次样条插值计算
54.某实验对一根长10米的钢轨进行热源的温度传播测试。
用x表示测量点0:
2.5:
10(米),用h表示测量时间0:
30:
60(秒),用T表示测试所得各点的温度(℃)。
试用线性插值求出在一分钟内每隔20秒、钢轨每隔1米处的温度TI。
解:
命令如下:
x=0:
2.5:
10;
h=[0:
30:
60]';
T=[95,14,0,0,0;88,48,32,12,6;67,64,54,48,41];
xi=[0:
10];
hi=[0:
20:
60]';
TI=interp2(x,h,T,xi,hi)
55.函数x(t)=12sin(2π×10t+π/4)+5cos(2π×40t),取N=128,试对t从0~1秒采样,用fft作快速傅立叶变换,绘制相应的振幅-频率图。
解:
N=128;%采样点数
T=1;%采样时间终点
t=linspace(0,T,N);%给出N个采样时间ti(I=1:
N)
x=12*sin(2*pi*10*t+pi/4)+5*cos(2*pi*40*t);%求各采样点样本值x
dt=t
(2)-t
(1);%采样周期
f=1/dt;%采样频率(Hz)
X=fft(x);%计算x的快速傅立叶变换X
F=X(1:
N/2+1);%F(k)=X(k)(k=1:
N/2+1)
f=f*(0:
N/2)/N;%使频率轴f从零开始
plot(f,abs(F),'-*')%绘制振幅-频率图
xlabel('Frequency');
ylabel('|F(k)|')
56.分别用Jacobi迭代和Gauss-Serdel迭代法求解下列线性方程组,看是否收敛。
解:
a=[1,2,-2;1,1,1;2,