matlab基础与应用部分习题答案.docx
- 文档编号:15426077
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:34
- 大小:108.44KB
matlab基础与应用部分习题答案.docx
《matlab基础与应用部分习题答案.docx》由会员分享,可在线阅读,更多相关《matlab基础与应用部分习题答案.docx(34页珍藏版)》请在冰点文库上搜索。
matlab基础与应用部分习题答案
作业一
4、写出完成下列操作的命令。
(1)将矩阵A第2~5行中第1,3,5列元素赋给矩阵B。
>>M=[0:
1:
48];
>>A=reshape(M,7,7)
A=
071421283542
181522293643
291623303744
3101724313845
4111825323946
5121926334047
6132027344148
>>B=A(2:
5,1:
2:
5)
B=
11529
21630
31731
41832
(2)删除矩阵A的第七行元素。
>>A(7,:
)=[]
A=
071421283542
181522293643
291623303744
3101724313845
4111825323946
5121926334047
(3)将矩阵A的每个元素值加30。
>>A=A+30
A=
30374451586572
31384552596673
32394653606774
33404754616875
34414855626976
35424956637077
(4求矩阵A的大小和维素。
sizeA=size(A)
dA=ndims(A)
sizeA=
67
dA=
2
(5)将向量t的0元素用机器零来代替。
>>t=[123405];
t=
123405
>>find(t==0)
ans=
5
>>t(5)=eps
t=
(6)将含有12个元素的向量x转换成3*4矩阵。
>>x=[0:
11]
x=
01234567891011
>>y=reshape(x,3,4)
y=
0369
14710
25811
(7)求一个字符串的ASCII。
>>abs('a')
ans=
97
(8)求一个ASCII所对应的字符。
>>char(99)
ans=
c
5、已知A[97673410
-7875655
325-23-59
0=-12547]
写出完成下列操作的命令。
(1)取出A的前3列构成矩阵B,前两列构成矩阵C,右下角3*2子矩阵构成矩阵D,B与C的乘积构成矩阵E。
>>B=A(1:
3,:
)
B=
97673410
-7875655
325-23-59
>>C=A(:
1:
2)
C=
9767
-7875
325
0-12
>>D=A(2:
4,3:
4)
D=
655
-23-59
547
>>E=B*C
E=
527111574
-11336664
19783112
(2)输出【50,100】范围的全部元素。
>>find(A>=50&A<=100)
ans=
1
5
6
10
12
>>output=[A
(1)A(5)A(6)A(10)A(12)]
output=
9767756554
二、实验题
>>x=-74*pi/180;y=-27*pi/180;
sin((x*x+y*y))/(sqrt(tan((abs(x+y))))+pi)
ans=
-
>>a=:
:
exp.*a).*sin(a+
>>x=[24;5];
*log(x+sqrt(1+x.*x))
ans=
>>A=[3542;34-457;879015],
B=[1-267;2874;930]
>>A*B
A.*B
ans=
1294324197
7-407-1052
40259112489
ans=
3-108134
68-360518
7832700
>>A^3
A.^3
>>A/B
B\A
>>[A,B]
[A([1,3],:
);B^2]
>>a=1+2i,b=3+4i,c=exp(pi/6*i)
c+a*b/(a+b)
作业二
1、从键盘输入一个4位整数,按如下规则加密后输出。
加密规则:
每位数字都加上7,然后用和除以10的余数取代该数字;然后将第1位数和第3位数交换,第2位数和第4位数交换。
M文件名为:
程序:
x=input('输入一个四位整数:
');
y=[fix(x/1000),mod(fix(x/100),10),mod(fix(x/10),10),mod(x,10)]
z=mod((y+7),10)
x=z(3)*1000+z(4)*100+z
(1)*10+z
(2)
结果:
输入一个四位整数:
1234
y=
1234
z=
8901
x=
189
2、硅谷公司员工的工资计算方法如下。
(1)工作时数超过120h者,超过部分加发15%。
(2)工作时数低于60h者,扣发700元。
(3)其余按每小时84元计发。
试编程按输入的工号和该号员工的工时数,计算应发工资。
程序:
gonghao=input('输入工号');
hour=input('输入工时');
every=84;
ifhour>120
gongzi=every*120+*every*(hour-120);
elseifhour<60
gongzi=every*hour-700;
else
gongzi=devery*hour;
end
formatbank;
display([gonghao,gongzi])
(1)结果:
输入工号12
输入工时130
ans=
(2)结果:
输入工号12
输入工时56
ans=
(3)结果:
输入工号12
输入工时80
ans=
3、根据
,求π的近似值。
当n分别取100、1000、10000时,结果是多少
要求:
分别用循环结构和向量运算(使用sun函数)来实现。
(1)程序:
(循环结构):
n=input('inputn:
');
s=0;
fori=1:
n
s=s+1/i^2;
pai=sqrt(s*6);
end
display(pai)
inputn:
100
pai=
(2)程序:
(向量结构):
n=input('inputn:
');
i=1:
n;
pai=sqrt(sum(1./i.^2)*6);
display(pai);
结果:
inputn:
100
pai=
4、根据
,求:
(1)y﹤3时的最大n值;
(2)与
(1)的n值对应的y值。
y=0;k=0;
whiley<3
k=k+1;
y=y+1/(2*k-1);
end
display([k-1,y-1/(2*k-1)])
结果:
ans=
5、考虑一下迭代公式:
其中,a、b为正的常数。
(1)编写程序求迭代的结果,迭代的终止条件为|
|
,迭代初值
,迭代次数不超过500次。
程序:
x0=;
a=input('a=');
b=input('b=');
x=a/(b+x0);m=1;
whileabs(x-x0)>1e-5&m<500
x0=x;
x=a/(b+x0);
m=m+1;
end
display([m,x]);
display([(-b+sqrt(b^2+4*a))/2,(-b-sqrt(b^2+4*a))/2]);
结果:
a=5
b=5
ans=
ans=
(2)如果迭代过程收敛于r,那么r的准确值是
,当(a,b)的值取(1,1)、(8,3)、(10,)时,分别对迭代结果和准确值进行比较。
a=1
b=1
ans=
ans=
a=8
b=3
ans=
ans=
a=10
b=
ans=
ans=
3.1127
6、已知
(1)当
时,y的值是多少
程序:
该题使用了function的调用。
函数文件
functionb=f(n);
b=n+10*log(n^2+5);
结果:
y=f(40)/(f(30)+f(20))
y=
(2)当
时,y的值是多少
程序:
函数文件
functionf=fun(n)
f=sum([1:
n].*([1:
n]+1));
结果:
y=fun(40)/(fun(30)+fun(20))
y=
作业三
1、绘制下列曲线。
(1)
(2)
(3)
(4)
解:
(1)程序:
x=-5:
:
5;
y=x-x.^3/(3*2*1);
plot(x,y);
(2)程序:
x=-10:
:
10;
y=exp(-x.*x/2)/(2*pi);
>>plot(x,y);
(3)程序:
f='x.^2+2*y.^2-64';ezplot(f,[-10,10,-10,10]);
ezplot('x.^2+2*y.^2-64',[-10,10,-10,10]);
(4)程序:
t=0:
:
8*pi;
>>x=t.*sin(t);
>>y=t.*cos(t);
>>plot(x,y);
已知
,
,完成下列操作:
(1)在同一坐标系下用不同的颜色和线型绘制两条曲线,给曲线添加文字说明;
解:
程序:
x1=linspace(0,1,100);
>>y1=2*;
>>t=linspace(0,pi,100);
>>x=sin(3*t).*cos(t);
>>y=sin(3*t).*sin(t);
>>plot(x1,y1,'k:
',x,y,'bp');
>>text,1,'y=');
>>text,,'x=sin(3t)cos(t)');
>>text,,'x=sin(3t)sin(t)');
(2)以子图形式,分别用条形图和散点图绘制两条曲线,并为各子图添加函数标题。
程序:
subplot(1,2,1);
bar(x1,'group');
title('y1=');
subplot(1,2,2);
barh(t,'stack');
title('stack');
subplot(1,2,1);
>>scatter(x1,y1,10);
>>title('y=');
>>subplot(1,2,2);
>>scatter(x,y,10);
>>title('x=sin(3t)cos(t),y=sin(3t)cos(t)');
2、分别用plot和fplot函数绘制函数
的曲线,分别分析两条曲线的差别。
解:
程序:
subplot(1,2,1);
x=1:
1:
100;
y=sin(1./x);
plot(x,y);
subplot(1,2,2);
>>fplot('sin(1/x)',[1,100]);
3、设
,
,在同一图形窗口采用子图的形式绘制条形图、阶梯图、杆图和对数坐标图。
解:
程序:
t=-pi:
:
pi;
>>y=1./(1+exp(-t));
>>bar(t,y);
>>subplot(2,2,2);
>>stairs(t,y);
>>subplot(2,2,3);
>>stem(t,y);
>>subplot(2,2,4);
>>semilogy(t,y);
结果:
4、绘制下列极坐标图。
(1)
(2)
,
解:
(1)程序:
theta=linspace(-pi,pi,100);
ro=5.*cos(theta)+4;
polar(theta,ro);
(2)程序:
fi=linspace(0,2*pi,100);a=1
r=a.*(1+cos(fi));
polar(fi,r);
6、绘制下列三维图线。
(1)
(2)
解:
(1)程序:
t=0:
pi/20:
2*pi;
x=exp(-t./20).*cos(t);
y=exp(-t./20).*sin(t);z=t;
plot3(x,y,z);
结果:
(3)程序:
t=0:
:
1;
x=t;y=t.^2;
z=t.^3;
plot3(x,y,z);
结果:
7、已知
,绘制其在
范围内的曲面图和等高线。
解:
程序:
x=-30:
:
0;
y=0:
:
30;
[x,y]=meshgrid(x,y);
z=10.*sin(sqrt(x.^2+y.^2))./sqrt(1+x.^2+y.^2);
meshc(x,y,z);
结果:
8、已知
,绘制其曲面图,并将
部分镂空。
解:
程序:
x=linspace(-3,3,100);
y=linspace(-3,3,100);
[xy]=meshgrid(x,y);
fxy=-5./(1+x.^2+y.^2);
i=find(abs(x)<=&abs(y)<=;
fxy(i)=NaN;
surf(x,y,fxy)
9、绘制
曲面图形,应用插值着色处理,并设置光照效果。
解:
程序:
u=linspace(1,,100);
v=linspace(-pi,pi,1000);
[u,v]=meshgrid(u,v);
x=3.*u.*sin(v);y=2.*u.*cos(v);
z=4*u.^2;x=3*u.*sin(v);y=2*u.*cos(v);
z=4*u.^2;surf(x,y,z);
shadinginterp;
light('position',[1,1,1]);
10、设计一个蓝色球体沿正弦曲线运动的动画。
解:
程序:
t=0:
pi/250:
10*pi;
y=sin(t);
plot(t,y,'m');
h=line('color',[0,0,1],'marker','.','markersize',50);
fori=1:
length(t);
set(h,'xdata',t(i),'ydata',y(i));
M(i)=getframe;
end
movie(M);
第四次作业
P103思考题
5、写出完成下列操作的命令。
(1)建立3阶单位矩阵A。
A=eye(3)
A=
100
010
001
(2)建立5*6随机矩阵A,其元素为[100,200]范围内的随机整数。
a=100;
b=200;
A=fix(a+(b-a)*rand(5,6))
A=
195176161140105120
123145179193135119
160101192191181160
148182173141100127
189144117189113119
(3)产生均值为1、方差为的500个正态分布的随机数。
y=1+sqrt*randn(25,20)
(4)产生和A同样大小的幺矩阵。
B=ones(size(A))
(5)将矩阵A的对角线的元素加30。
A=[1,2,3,4,5,6;5,6,2,1,3,5;7,8,9,4,5,6]
A=
123456
562135
789456
>>A=A+30*eye(size(A))
A=
3123456
5362135
7839456
(6)从矩阵A提取主对角线元素,并以这些元素构成对角阵B。
C=diag(diag(A))
C=
3100
0360
0039
实验题:
4、分别用矩阵求逆、左除运算符、矩阵分解等方法求下列对角方程组
,并分析程序的执行时间。
其中
A=
2-1000
-12-100
0-12-10
00-12-1
000-12
>>b=[1;0;0;0;0]
b=
1
0
0
0
0
解:
程序:
%矩阵求逆
tic
x1=inv(A)*b
toc
%左除运算
tic
x2=A\b
toc
%矩阵分解
%Q、R分解
tic
[Q,R]=qr(A);
x4=R\(Q\b);
toc
%L、U分解
tic
[L,U]=lu(A);
x3=U\(L\b)
toc
%Cholesky分解
tic
R=chol(A);
x5=R\(R'\b)
toc
结果:
P121第五章实验题
1、利用,MATLAB提供的rand函数生成30000个符合均匀的随机数,然后检验随机数的性质。
(1)均值和标准方差。
解:
A=rand(1,30000);
>>mean(A)
std(A)
(2)最大元素和最小元素。
max(A)
min(A)
(3)大于的随机数个数占总数的百分比。
size(find(A>)/size(A)
ans=
2、在某处测的海洋不同深部处水温度数据如表。
用插值法求出水深500m,900m和1500m处的水温(℃)。
水深(m)
466
715
950
422
1635
水温(℃)
解:
程序:
m=[466,715,950,1422,1635];
w=[,,,,];
h=[500,900,1500];
wi=interp1(没,w,h,'spline')
3、用5次多项式p(x)在区间【1,10】区间内逼近函数lgx,并绘制出lgx和p(x)在【1,101】区间的函数曲线。
解:
x=1:
:
101;
y=log(x);
f=polyfit(x,y,5);
yi=polyval(f,x);
plot(x,y,'bp',x,yi,'k-p')
4、已知
,取N=64,对t从0~5s采样,用fft作快速傅立叶变换,并绘制相应的振幅--频率图。
解:
N=64;
T=5;
t=linspace(0,T,N);
x=exp(-t);
dt=t
(2)-t
(1);
f=1/dt;
X=fft(x);
F=X(1:
N/2+1);
f=f*(0:
N/2)/N;
plot(f,abs(F),'r-+')
xlabel('Frequency')
ylabel('|F(k)|')
5、有3个多项式
,
,
,试进行下列操作。
(1)求
。
解、程序:
p1=[1,2,0,7];
p2=[0,0,1,-2];
p3=[1,0,5,1];
p12=conv(p1,p2);
p=p12+[zeros(1,size(p12,2)-size(p3,2)),p3]
结果:
p=
0011-412-13
(2)求p(x)的根。
程序:
roots(p)
结果:
ans=
+
-
(3)设A矩阵,当以矩阵A的每一元素为自变量时,求
的值,当以矩阵A为自变量时,求
的根。
程序:
A=[-1,4,3;2,1,5;0,5,6];
px=polyval(p,A)
pxm=polyvalm(p,A)
结果:
px=
-2929195
19-3697
-136971427
pxm=
39120843273
50226934207
72037755892
6、求非线性方程的数值解。
(1)、求
在
附近的根。
解:
程序:
z=fzero('3*x-sin(x)+1',0)
(2)、
,初值
。
建立函数文件:
functionF=fun(X)
x=X
(1);
y=X
(2);
F
(1)=x*x+y*y-9;
F
(2)=x+y-1;
在命令窗口输入:
x=fsolve(@fun,[3,0]',optimset('Display','off'))
第7章符号与计算课后实验题
1、已知A=
求矩阵的秩、逆矩阵和行列式的值。
(这里的A是符号矩阵)
解:
程序及结果:
A=sym('[1,2,3;x,y,z;3,2,1]');
>>rank(A)%矩阵秩的值
ans=
3
>>inv(A)%逆矩阵的值
ans=
[1/4*(y-2*z)/(-2*y+z+x),1/(-2*y+z+x),-1/4*(-2*z+3*y)/(-2*y+z+x)]
[-1/4*(x-3*z)/(-2*y+z+x),-2/(-2*y+z+x),1/4*(-z+3*x)/(-2*y+z+x)]
[1/4*(2*x-3*y)/(-2*y+z+x),1/(-2*y+z+x),-1/4*(-y+2*x)/(-2*y+z+x)]
>>det(A)%矩阵的行列值
ans=
-8*y+4*z+4*x
2、求函数的符号导数。
(1)
求
。
解:
程序及结果:
symsx;
>>y=sqrt(‘x+sqrt(x+sqrt(x’)));
>>diff(y)%一阶导数
ans=
1/2/(x+(x+x^(1/2))^(1/2))^(1/2)*(1+1/2/(x+x^(1/2))^(1/2)*(1+1/2/x^(1/2)))
>>diff(y,x,2)%二阶导数
ans=
-1/4/(x+(x+x^(1/2))^(1/2))^(3/2)*(1+1/2/(x+x^(1/2))^(1/2)*(1+1/2/x^(1/2)))^2+1/2/(x+(x+x^(1/2))^(1/2))^(1/2)*(-1/4/(x+x^(1/2))^(3/2)*(1+1/2/x^(1/2))^2-1/8/(x+x^(1/2))^(1/2)/x^(3/2))
(2)已知
,求
。
解:
程序:
symsxy;
>>fxy=sin(x^2*y)*exp(-x^2-y);
>>c=diff(diff(fxy,x),y)
结果:
c=
-2*sin(x^2*y)*x^3*y*exp(-x^2-y)+2*cos(x^2*y)*x*exp(-x^2-y)-2*cos(x^2*y)*x*y*exp(-x^2-y)-2*cos(x^2*y)*x^3*exp(-x^2-y)+2*sin(x^2*y)*x*exp(-x^2-y)
3、求积分。
(1)
(2)
(1)解:
程序:
f=sym('1/(x^4+1)');
>>s1=int(f)
(2)解:
程序:
symsxt;
>>f=sym('(-2*x^2+1)/(2*x^2-3*x+1)^2');
>>int(f,cos(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 基础 应用 部分 习题 答案