格雅Get 习题第13章.docx
《格雅Get 习题第13章.docx》由会员分享,可在线阅读,更多相关《格雅Get 习题第13章.docx(23页珍藏版)》请在冰点文库上搜索。
![格雅Get 习题第13章.docx](https://file1.bingdoc.com/fileroot1/2023-6/1/f0ebc777-8760-49c1-8b9b-a27897966606/f0ebc777-8760-49c1-8b9b-a278979666061.gif)
格雅Get习题第13章
习题第1-3章
1.熟悉MATLAB的环境设置和编辑工具。
参考答案:
〔略〕
2.分别用help,lookfor命令查找函数log的帮助信息,区分其不同之处。
>>helplog
>>lookforlog
其余略
参考答案:
3.执行以下指令,观察其运行结果,理解其意义:
〔1〕[12;34]+10-2i
〔2〕[12;34].*[0.10.2;0.30.4]
(3)[12;34].\[56;78]
(4)[12;34]./[56;78]
(5)[12;34].^2
(6)[12;34]^2
(1)
>>[12;34]+10i-2i
ans=
(2)
>>[12;34].*[0.10.2;0.30.4]
ans=
(3)
>>[12;34].\[56;78]
ans=
(4)
>>[12;34]./[56;78]
ans=
(5)
>>[12;34].^2
ans=
14
916
(6)
>>[12;34]^2%两个矩阵相乘,见第三章
ans=
710
1522
4.执行以下指令,观察其运行结果,理解各数学函数的意义:
〔1〕exp([12;34])
〔2〕prod([123;456])
〔3〕log([1101001000])
〔4〕log10([1101001000])
(5)[a,b]=min([102015;403025])
〔1〕
>>exp([12;34])%等于[exp
(1),exp
(2);exp(3),exp(4)]
ans=
〔2〕
>>prod([123;456])%各列数,相乘
ans=
41018
〔3〕
>>log([1101001000])%各元素求自然对数
ans=
〔4〕
>>log10([1101001000])%各元素求常用对数
ans=
0123
(5)
>>[a,b]=min([102015;403025])
a=
102015
b=
111
%a为各列最小值,b为最小值所在的行号
5.设x=23.4567;y=0.1234;z=-9.876;执行以下指令,观察其运行结果,理解各函数的意义:
〔1〕fix(x),fix(y),fix(z)
(2)floor(x),floor(y),floor(z)
(3)ceil(x),ceil(y),ceil(z)
(1)
>>fix(x),fix(y),fix(z)
ans=
23
ans=
0
ans=
-9
(2)
>>floor(x),floor(y),floor(z)
ans=
23
ans=
0
ans=
-10
(3)
>>ceil(x),ceil(y),ceil(z)
ans=
24
ans=
1
ans=
-9
6.在命令窗口键入表达式
并求x=2,y=4时,z的值。
>>x=2;y=4;
>>z=x^2+exp(x+y)-y*log(x)-3
z=
7.执行以下指令,观察其运行结果,理解其意义:
(1)[123;456]>=[321;654]
(2)find([102030;405060]>=[201030;605040])
(3)[a,b]=find([102030;405060]>=[201030;605040])
(4)all([123;456]>4)
(5)any([123;456]>4)
(1)
>>[123;456]>=[321;654]
ans=
011
011
(2)
>>find([102030;405060]>=[201030;605040])
ans=
3
4
5
6
(3)
>>[a,b]=find([102030;405060]>=[201030;605040])
a=
1
2
1
2
b=
2
2
3
3
(4)
>>all([123;456]>4)
ans=
000
(5)
>>any([123;456]>4)
ans=
011
8执行以下指令,观察其运行结果,变量类型和字节数,理解其意义。
(1)clear;a=1,b=num2str(a),c=a>0,a==b,a==c,b==c
(2)clear;fun='abs(x)',x=-2,eval(fun),double(fun)
(1)
>>clear;a=1,b=num2str(a),c=a>0,a==b,a==c,b==c
a=1
b=1
c=1
ans=
0
ans=
1
ans=
0
%a,b,c的值尽管都是1,但数据类型分别为数值,字符,逻辑,注意a与c相等,但他们不等于b
>>whos
NameSizeBytesClass
a1x18doublearray
ans1x11logicalarray
b1x12chararray
c1x11logicalarray
Grandtotalis4elementsusing12bytes
(2)
>>clear;fun='abs(x)',x=-2,eval(fun),double(fun)
fun=
abs(x)
x=
-2
ans=
2
ans=
97981154012041
%double(fun)输出的分别是字符a,b,s,(,x,)的ASCII码
9.设A=
,B=
,计算2A,A-B,A*B,A.*B,A’,A/B,B\A,AB-1和A.^B
>>A=[123;456;789];B=[0-12;357;018];
>>2*A,A-B
ans=
246
81012
141618
ans=
131
10-1
771
>>A*B,A.*B
ans=
61240
152791
2442142
ans=
0-26
122542
0872
>>A/B,B\A,A*inv(B)
ans=
ans=
ans=
>>A.^B
ans=
1.0e+007*
10.A=
,B=
,在命令窗口创立A,B矩阵并对其作如下操作:
〔1〕提取A的第1行和第3行形成C;
〔2〕交换A的第1行和第2行生成A1,交换B的第1列和第3列生成B1;
〔3〕从横向和纵向合并A和B形成C1和C2;
〔4〕构建矩阵D,C的第1,第2行由A的第1行和第2行的第1和第2列元素构成,D的第3,第4行由B的第2和第3行的第2和第列元素构成。
>>clear;A=[4-22;-305;153];B=[134;-20-3;2-11];
〔1〕
>>C=A([1,3],:
)
C=
4-22
153
>>A1=A;A1([2,1],:
)=A1([1,2],:
)
A1=
-305
4-22
153
(2)
>>B1=A;B1(:
[3,1])=B1(:
[1,3])
B1=
2-24
50-3
351
(3)
>>C1=[A,B],C2=[A;B]
C1=
4-22134
-305-20-3
1532-11
C2=
4-22
-305
153
134
-20-3
2-11
(4)
>>D=[A(1:
2,1:
2);B(2:
3,2:
3)]
D=
4-2
-30
0-3
-11
>>
11.生成一个
随机矩阵,将其对角形元素的值加1
参考答案:
>>A=rand(3)
A=
>>A=A+eye(3)
A=
12.函数
在〔-2,2〕内有两个根。
取步长h=0.05,通过计算函数值求得函数的最小值点和两个根的近似解。
〔提示:
求近似解等价于求函数绝对值的最小值点〕
>>x=-2:
0.05:
2;f=x.^4-2.^x;
>>[fmin,min_index]=min(f)
fmin=
-1.3907%最小值
min_index=
54%最小值点编址
>>x(min_index)
ans=
0.6500%最小值点
>>[f1,x1_index]=min(abs(f))%求近似根--绝对值最小的点
f1=
x1_index=
24
>>x(x1_index)
ans=
>>x(x1_index)=[];f=x.^4-2.^x;%删去绝对值最小的点以求函数绝对值次小的点
>>[f2,x2_index]=min(abs(f))%求另一近似根--函数绝对值次小的点
f2=
x2_index=
65
>>x(x2_index)
ans=
13.先不用MATLAB判断下面语句将显示什么结果?
size(B)又得什么结果?
>>B1={1:
9;'DavidBeckham'};
>>B2={180:
-10:
100;[100,80,75;77,60,92;672890;1008978]};
>>B=[B1,B2];
>>B{1,2}(8)
>>D=cell2struct(B,{'f1','f2'},2);
然后用MATLAB验证你的判断。
进一步,观察变量类型和字节数,并用Workspace工具栏显示B和D的内容。
参考答案:
〔略〕
第二章
1.作出以下函数的图形。
(1)曲线
-2≤x≤2(要求分别用plot和fplot完成)
(2)椭圆
(3)空间曲线x=sint,y=cost,z=cos(2t),0(4)三条曲线合成图y1=sinx,y2=sinxsin(10x),y3=-sinx,0%
(1)
x=-2:
0.1:
2;y=x.^2.*sin(x.^2-x-2);plot(x,y)
y=inline('x^2*sin(x^2-x-2)');fplot(y,[-22])
%
(2)参数方法
t=linspace(0,2*pi,100);
x=2*cos(t);y=3*sin(t);plot(x,y)
%(3)
t=linspace(0,2*pi);
x=sin(t);y=cos(t);z=cos(2*t);
plot3(x,y,z)
%(4)
x=linspace(0,pi,100);
y1=sin(x);y2=sin(x).*sin(10*x);y3=-sin(x);
plot(x,y1,x,y2,x,y3)
(1)
(2)
(3)r=1-cos3(7θ)
(1)
>>theta=0:
0.01:
6*pi;
>>rho=5*sin(4*theta/3);
>>polar(theta,rho)
>>
(2)
>>theta=0:
0.01:
6*pi;
>>rho=5*sin(theta/3);
>>polar(theta,rho)
(3)
>>theta=0:
0.01:
6*pi;
>>rho=1-cos(7*theta).^3;
>>polar(theta,rho)
(换!
)3.作以下分段函数的图形
3.5(6分)
3.
>>x=-2:
0.05:
2;
>>y=(-x-1).*(x<-1)+(abs(x)<=1).*sqrt(1-x.^2)+(x-1).*(x>1);
>>plot(x,y)
4.在同一个图中画出正弦函数和余弦函数在定义域的图形,然后变换它的线型和点型,并加上各种标注.
>>x=-2*pi1:
2*pi;
>>plot(x,sin(x),x,cos(x))
其余略
5.作以下曲面的图形
(1)抛物面
,|x|<3,|y|<3
(2)马鞍面
在区域
上的图形;
(3)半球面
,
(4)曲面
,|x|<3,-3%
(1)
x=-3:
0.1:
3;y=x;
[x,y]=meshgrid(x,y);
z=x.^2+y.^2;
surf(x,y,z)
%〔2〕
>>xa=-10:
0.5:
10;
>>[x,y]=meshgrid(xa);
>>z=x.^2-2*y.^2;
>>mesh(x,y,z)
%(3)
theta=linspace(0,2*pi,50);fai=linspace(0,pi/2,20);
[theta,fai]=meshgrid(theta,fai);
x=2*sin(fai).*cos(theta);
y=2*sin(fai).*sin(theta);z=2*cos(fai);
surf(x,y,z)
%(4)
x=-3:
0.1:
3;y=-3:
0.1:
13;
[x,y]=meshgrid(x,y);
z=x.^4+3*x.^2+y.^2-2*x-2*y-2*x.^2.*y+6;
surf(x,y,z)
6.用MATLAB函数表示以下函数,并作图。
clear;close;
x=-2:
0.1:
2;y=x;
[x,y]=meshgrid(x,y);
a=0.5457;b=0.7575;
p=a*exp(-0.75*y.^2-3.75*x.^2-1.5*x).*(x+y>1);
p=p+b*exp(-y.^2-6*x.^2).*(x+y>-1).*(x+y<=1);
p=p+a*exp(-0.75*y.^2-3.75*x.^2+1.5*x).*(x+y<=-1);
mesh(x,y,p)
〔此题改为第四章?
〕7.连续时间Lyapunov方程为
其中A=
,C=
。
试通过look和help的帮助用MATLAB求解。
>>lookforlyapunov
>>helplyap
>>A=[123;456;780];C=[2-5-22;-5-24-56;-22-56-16];
>>X=lyap(A,C)
X=
第三章
1〔省略!
〕设x为一个长度为n的数组,编写函数M文件求以下均值和标准差
,
,n>1
1
%Page40ex1
function[xbar,s]=ex2_1(x)
n=length(x);
xbar=sum(x)/n;
s=sqrt((sum(x.^2)-n*xbar^2)/(n-1));
例如
>>x=[81706551766690876177];
>>[xbar,s]=ex2_1(x)
xbar=
s=
2.求满足
的最小m值
%Page40ex2
s=log
(1);n=0;
whiles<=100
n=n+1;
s=s+log(1+n);
end
m=n
计算结果m=37
3.用循环语句形成Fibonacci数列:
k=3,4,5,…。
并验证极限〔提示:
计算至两边误差小于精度10-8〕
%Page40ex3
clear;
F
(1)=1;F
(2)=1;k=2;x=0;
e=1e-8;a=(1+sqrt(5))/2;
whileabs(x-a)>e
k=k+1;F(k)=F(k-1)+F(k-2);x=F(k)/F(k-1);
end
a,x,k
计算至k=21可满足精度
%Page40ex4
clear;tic;s=0;
fori=1:
1000000
s=s+sqrt(3)/2^i;
end
s,toc
tic;s=0;i=1;
whilei<=1000000
s=s+sqrt(3)/2^i;i=i+1;
end
s,toc
tic;s=0;
i=1:
1000000;
s=sqrt(3)*sum(1./2.^i);
s,toc
例3-5输入一个字符,假设为大写字母,那么输出其对应的小写字母;假设为小写字母,那么输出其对应的大写字母;假设为数字字符那么输出其对应的数值,假设为其他字符那么原样输出。
c=input('请输入一个字符','s');
ifc>='A'&c<='Z'
disp(setstr(abs(c)+abs('a')-abs('A')));
elseifc>='a'&c<='z'
disp(setstr(abs(c)-abs('a')+abs('A')));
elseifc>='0'&c<='9'
disp(abs(c)-abs('0'));
else
disp(c);
end
例3-8y=
,当n=100时,求y的值。
程序如下:
y=0;
n=100;
fori=1:
n
y=y+1/(2*i-1);
end
y
在实际MATLAB编程中,采用循环语句会降低其执行速度,所以前面的程序通常由下面的程序来代替:
n=100;
i=1:
2:
2*n-1;
y=sum(1./i);
y
6.利用循环语句计算1!
+2!
+3!
+…+n!
的值,其中n=50的值从键盘上输入。
%方法1gxcg3_8
sum=0;prd=1;
n=input('inputanumber:
n=');
fori=1:
n
prd=1;
forj=1:
i
prd=prd*j;
end
sum=sum+prd;
end
%方法2gxcg3_8b
sum=0;prd=1;
n=input('inputanumber:
n=');
fori=1:
n
sum=sum+prd(i);
end
functionprd=prud1(m)%子函数
prd=1;
forj=1:
m
prd=prd*j;
end
sum
例3-15利用函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。
函数文件:
function[rho,theta]=tran(x,y)
rho=sqrt(x*x+y*y);
theta=atan(y/x);
调用的命令文件:
x=input('Pleaseinputx=:
');
y=input('Pleaseinputy=:
');
[rho,the]=tran(x,y);
rho
the
例3-22Fibonacci数列定义如下:
f1=1
f2=1
fn=fn-1+fn-2(n>2)
求Fibonacci数列的第20项。