哈工大matlab春季学期考查题答案.docx
《哈工大matlab春季学期考查题答案.docx》由会员分享,可在线阅读,更多相关《哈工大matlab春季学期考查题答案.docx(33页珍藏版)》请在冰点文库上搜索。
哈工大matlab春季学期考查题答案
目录
2014年春季学期MATLAB课程考查题1
考试信息1
(一)必答题(80分)1
第一题1
第二题2
第三题2
第四题2
第五题3
第六题5
第七题8
第八题9
第九题11
第十题14
第十一题15
第十二题17
第十三题19
第十四题20
第十五题23
二、选答题(必须选4道题,每题5分,总计20分)25
第一题25
第二题27
第三题29
第四题31
致谢33
2014年春季学期MATLAB课程考查题
考试信息
姓名:
学号:
学院:
航天学院
专业:
工程力学
(一)必答题(80分)
第一题
如何设置当前目录和搜索路径,在当前目录上的文件和在搜索路径上的文件有何区别?
(2分)
答:
方法一:
在MATLAB命令窗口中输入editpath或pathtool命令或通过【File】/|【SetPath】菜单,进入“设置搜索路径”对话框,通过该对话框编辑搜索路径。
方法二:
在命令窗口执行“path(path,‘D:
\Study’)”,然后通过“设置搜索路径”对话查看“D:
\Study”是否在搜索路径中。
方法三:
在命令窗口执行“addpathD:
\Study-end”,将新的目录加到整个搜索路径的末尾。
如果将end改为begin,可以将新的目录加到整个搜索路径的开始。
区别:
当前文件目录是正在运行的文件的目录,显示文件及文件夹的详细信息,且只有将文件设置为当前目录才能直接调用。
搜索路径中的文件可以来自多个不同目录,在调用时不用将其都设置为当前目录,为同时调用多个文件提供方便。
第二题
创建符号变量和符号表达式有哪几种方法?
(4分)
答:
一、创建符号变量有两种方式:
1、单个符号变量用函数sym;2、多个符号变量用函数syms。
二、创建符号表达式有三种方法:
1、直接法;2、整体定义法;3、字符串符号表达式。
第三题
GUIDE提供哪些常用的控件工具,各有什么功能?
(5分)
答:
界面编辑器及其辅助设计工具,通过鼠标操作进行用户界面设置,不仅简化设计过程,而且所得的执行M文件格式规范。
第四题
建立不同数据类型的变量:
包括双精度的数值型(numeric)、符号型(sym)、结构体(structure)、单元型(cell)、字符串型(char),函数句柄(functionhandle)、逻辑型(logical),并且采用whos列出各变量名,变量的数组维数,占用字节数,变量的类别。
(4分)
答:
symsx
>>Myname='黎洪安';
>>a='lihongan';
>>b={[1,2],[1,2;3,4];'sdfg',linspace(1,5,3)};
>>c=1e-11;
>>d=c>1;
>>whos
NameSizeBytesClassAttributes
Myname1x36char
a1x816char
b2x2528cell
c1x18double
d1x11logical
x1x1112sym
第五题
求
矩阵的秩,迹,特征值和特征向量,并且对矩阵进行LU分解、QR分解及Chollesky分解(3分)。
答:
程序
clc;
a=[9,1,2;5,6,3;8,2,7];
f=rank(a);
g=trace(a);
h=eig(a);
[l,u]=lu(a);
[q,r]=qr(a);
b=chol(a);
disp('矩阵的秩');
disp(f);
disp('矩阵的迹');
disp(g);
disp('矩阵的特征值和特征向量');
disp(h);
disp('Lu分解L');
disp(l);
disp('Lu分解u');
disp(u);
disp('Qr分解q');
disp(q);
disp('qr分解r');
disp(r);
disp('Chollesky分解');
disp(b);
结果
矩阵的秩
3
矩阵的迹
22
矩阵的特征值和特征向量
13.5482
4.8303
3.6216
Lu分解L
1.000000
0.55561.00000
0.88890.20411.0000
Lu分解u
9.00001.00002.0000
05.44441.8889
004.8367
Qr分解q
-0.69030.3969-0.6050
-0.3835-0.9097-0.1592
-0.61360.12210.7801
qr分解r
-13.0384-4.2183-6.8260
0-4.8172-1.0807
003.7733
Chollesky分解
3.00000.33330.6667
02.42671.1447
002.2903
第六题
执行矩阵A和B
下列的运算:
A+5*cos(B)、A.*B、A*B、A./B、B.\A、A/B,B\A,分别解释数组运算和矩阵运算的区别。
(4分)
程序
clc;
A=[41220;124578;2078136];
B=[123;456;789];
a1=A+5*cos(B);
a2=A.*B;
a3=A*B;
a4=A./B;
a5=B./A;
a6=A/B;
a7=B\A;
disp('A+5*cos(B)');
disp(a1);
disp('A.*B');
disp(a2);
disp('A*Bq');
disp(a3);
disp('A./B');
disp(a4);
disp('B./A');
disp(a5);
disp('A/B');
disp(a6);
disp('B\A');
disp(a7);
结果
A+5*cos(B)
6.70159.919315.0500
8.731846.418382.8009
23.769577.2725131.4443
A.*B
42460
48225468
1406241224
A*Bq
192228264
7388731008
128415181752
A./B
4.00006.00006.6667
3.00009.000013.0000
2.85719.750015.1111
B./A
0.25000.16670.1500
0.33330.11110.0769
0.35000.10260.0662
A/B
8.66670-0.6667
4.500064.0000-35.5000
128.3333-128.000057.6667
B\A
11.333324.500065.6667
-18.6667-28.0000-93.3333
10.000014.500047.0000
解释数组运算和矩阵运算的区别
一维数组相当于向量,二维数组相当于矩阵.所以矩阵是数组的子集。
数组运算是指数组对应元素之间的运算,也称点运算.矩阵的乘法、乘方和除法有特殊的数学含义,并不是数组对应元素的运算,所以数组乘法、乘方和除法的运算符前特别加了一个点。
矩阵是一个二维数组,所以矩阵的加、减、数乘等运算与数组运算是一致的。
第七题
求半径为r的圆的面积和周长,分别采用脚本文件和函数文件进行编写,r值由input指令从键盘给出,数据的输出采用disp指令;并且说明脚本式文件和函数文件的特点。
(5分)
脚本文件
clc;
clear;
r=input('ÇëÊäÈë°ë¾¶r:
\n');
L=2*pi*r;
S=pi*r^2;
disp('Öܳ¤L');
disp(L);
disp('Ãæ»ýS');
disp(S);
函数文件
主程序
clc;
clear;
r=input('ÇëÊäÈë°ë¾¶r:
\n');
[L,S]=fun(r);
disp('Öܳ¤L');
disp(L);
disp('Ãæ»ýS');
disp(S);
函数
function[L,S]=fun(r)
L=2*pi*r;
S=pi*r^2;
脚本式文件和函数文件的特点
脚本文件:
M文件中最简单的一种,不需输出输入参数,用M文件可以控制工作空间的所有数据。
运行过程中产生的变量都是全局变量。
运行一个脚本文件等价于从命令窗口中顺序运行文件里的命令,程序不需要预先定义,只要依次将命令编辑在脚本文件中即可。
函数文件:
如果M文件的第一个可执行行以function开始,便是函数文件,每一个函数文件定义一个函数。
函数文件区别于脚本文件之处在于脚本文件的变量在文件执行完成后保留在工作空间中,而函数文件内定义的变量只在函数文件内起作用,文件执行完后即被清除。
第八题
级数求和:
(1)分别用 for和while循环结构编写程序求和,并且说明for和while区别;
(2)分别采用sum和symsum求和。
(5分)
(1)题
For循环
clc;
clear;
y=0;
fort=1:
64
y=y+1/(t*(t+1));
end
disp('ss的结果')
disp(y);
while循环
clc;
clear;
y=0;
t=1;
while(t<65)
y=y+1/(t*(t+1));
t=t+1;
end
disp('ss的结果')
disp(y);
(2)题
Sum(x)求和
clc;
clear;
y=zeros(64,1);
fort=1:
64
y(t)=y(t)+1/(t*(t+1));
end
ss=sum(y);
disp('ss的结果')
disp(ss);
Symsum函数求和
clc;
symst
ss=symsum(1/(t*(t+1)),t,1,64);
disp('ss的结果')
disp(ss);
结果
ss的结果
0.9846
第九题
表1给出x0,y0的一组数据,
(1)分别采用3阶和11阶多项式拟合表1数据,并且分析是不是阶数越高拟合效果越好;
(2)根据已知表1数据组,采用3次样条插值求解x=0:
0.25:
1的y值;
(3)图示原始数据、3阶和11阶多项式拟合以及插值结果在一个图中,并标注坐标轴和图例;
(4)说明插值和拟合的区别。
(8分)
程序
clc;
x0=0:
0.1:
1;
x=0:
0.025:
1;
y0=[-0.4471.97803.115.255.024.664.014.583.455.359.22];
p3=polyfit(x0,y0,3);
y3=polyval(p3,x0);
p11=polyfit(x0,y0,11);
y11=polyval(p11,x0);
y=interp1(x0,y0,x,'spline');
mm=[x0;y0;y3;y11];
disp('原数据3阶、11阶多项式拟合')
disp(mm);
disp('3次样条插值')
disp(y);
plot(x0,y0,x0,y3,x0,y11);
xlabel('x');
ylabel('y');
legend('原数据','3阶多项式拟合','11阶多项式拟合');
运行结果
3次样条插值
Columns1through18
-0.44700.51511.19531.66061.97802.21462.43752.71363.11003.66274.28324.85215.25005.39305.33965.18395.02004.9186
Columns19through36
4.85614.78564.66004.45344.22354.04954.01004.14974.37604.56174.58004.35093.98263.63053.45003.56203.95004.5630
Columns37through41
5.35006.26027.24258.24619.2200
说明
(1)虽然在越高阶插值在节点上越没有误差,但在插值节点之外插值误差变得很大,从“整体”上看,插值逼近效果变得“更差”。
所以不是越高级越好。
(3)用插值的方法对一函数进行近似,求所得到的插值多项式经过已知插值节点;在n比较大的情况下,插值多项式往往是高次多项式,这也就容易出现振荡现象(龙格现象),即虽然在插值节点上没有误差,但在插值节点之外插值误差变得很大,从“整体”上看,插值逼近效果将变得“很差”。
数据拟合是求一个简单的函数,例如是一个低次多项式,不要求通过已知的这些点,而是要求在整体上“尽量好”的逼近原函数。
第十题
采用左除和逆乘法求解两个方程组的解;并解释求解这两个方程的区别(5分)
程序
clc;
A1=[34-7-12;5-742;108-5;-65-210];
A2=[A1;5-271];
b1=[4;4;9;4];
b2=[b1;6];
x1=A1\b1;
x2=inv(A1)*b1;
x=[x1,x2];
y1=A2\b2;
y2=pinv(A2)*b2;
y=[y1,y2];
disp('恰定方程左除法、求逆法对比');
disp(x);
disp('超定方程左除法、求逆法对比');
disp(y);
运行结果
恰定方程左除法、求逆法对比
5.22265.2226
4.45704.4570
1.47181.4718
1.59941.5994
超定方程左除法、求逆法对比
1.13311.1331
1.38101.3810
0.74930.7493
0.17720.1772
说明
恰定方程:
方程组的数目于未知数的数目一定多,恰好能求出准确解。
而超定方程一般不存在解的矛盾方程。
因为其给定的条件(限制)过于严格,因此只能在无法完全满足给定的这些条件的情况下,求一个最接近的解。
第十一题
求解多项式
的根,分别采用
(1)多项式求根命令roots;
(2)数值求零命令fzero;
(3)符号运算命令solve,并将符号变量结果转化为数值解;(5分)
程序
clc;
symsabcd
a=1;
b=2;
c=1;
d=1;
p=[abcd];
r=roots(p);
f=fzero('fun1',0);
s=solve('a*x^3+b*x^2+c*x+d=0');
e=eval(s);
disp('roots求根法');
disp(r);
disp('fzero求根法');
disp(f);
disp('通解法');
disp(s);
disp('通解转换成数值解');
disp(e);
子程序
functionfx=fun1(x)
fx=x.^3+2*x.^2+x+1;
end
运行结果
roots求根法
-1.7549
-0.1226+0.7449i
-0.1226-0.7449i
fzero求根法
-1.7549
通解转换成数值解
-0.1226-0.7449i
-1.7549-0.0000i
-0.1226+0.7449i
因通解式子过长遂不全部给出,此仅给出表达较简单的一个。
通解法
(((d/(2*a)+b^3/(27*a^3)-(b*c)/(6*a^2))^2+(-b^2/(9*a^2)+c/(3*a))^3)^(1/2)-b^3/(27*a^3)-d/(2*a)+(b*c)/(6*a^2))^(1/3)-b/(3*a)-(-b^2/(9*a^2)+c/(3*a))/(((d/(2*a)+b^3/(27*a^3)-(b*c)/(6*a^2))^2+(c/(3*a)-b^2/(9*a^2))^3)^(1/2)-b^3/(27*a^3)-d/(2*a)+(b*c)/(6*a^2))^(1/3)
第十二题
已知y=x.^3-4*exp(x)-sin(x)/0.002,采用符号(diff)和数值微分(diff)和多项式拟合求导(polyfit,polyder),计算函数y在[-3,3]区间中的导数,并且图示这三种方法。
(5分)
程序
clc;
symsxyt
y=x.^3-4*exp(x)-sin(x)/0.002;
dy=diff(y,x);
x=-3:
0.1:
3;
p1=eval(dy);
p=eval(y);
p2=diff(p);
f=polyfit(x,p,5);
p3a=polyder(f);
p3=p3a
(1)*x.^4+p3a
(2)*x.^3+p3a(3)*x.^2+p3a(4)*x+p3a(5);
plot(x,p1,x,p3);
x
(1)=[];
holdon
plot(x,p2);
legend('符号微分','拟合求导','数值微分');
xlabel('x');
ylabel('dy');
grid;
运行结果
第十三题
求方程组
的根,分别采用数值运算fsolve和符号运算solve,数值运算的初始值为x0=[-5;-5],要求显示符号运算得到结构体的每个元素的具体数值.(5分)
程序
clc;
s=solve('2*x1-x2-exp(-x1)=0','-x1+2*x2-exp(-x2)=0','x1','x2');
y1=s.x1;
y2=s.x2;
x=[y1;y2];
y=fsolve('fun1',[-5;-5],optimset('Display','off'));
disp('solve求解值');
disp(x);
disp('fsolve求解值');
disp(y);
运行结果
solve求解值
0.56714329040978387299996866221036
0.56714329040978387299996866221036
fsolve求解值
0.5671
0.5671
第十四题
符号矩阵
(1)简化符号矩阵然后求行列式、逆矩阵和秩;
(2)
(3)
(10分)
程序
clc;
symsxyaf
f=[(4*x^2+8*x)/ylog(x)-exp(a*(x+y));33sin(x)*cos(y)-cos(x)*sin(y)];
a=det(f);
b=inv(f);
c=rank(f);
fx=diff(f,x);
fy2=diff(f,y,2);
fxy=diff(diff(f,x),y);
g1=int(f);
dg1=int(f,y,2,9);
g2=int(int(f),y);
disp('f的行列式');
disp(a);
disp('f的逆矩阵');
disp(b);
disp('f的秩');
disp(c);
disp('f对x一次积分');
disp(g1);
disp('f对y定积分');
disp(dg1);
disp('f对x、y积分');
disp(g2);
disp('f对x的一次偏导');
disp(fx);
disp('f对y二次偏导');
disp(fy2);
disp('f分别对x、y偏导');
disp(fxy);
运行结果
f的行列式
(33*y*exp(a*(x+y))-33*y*log(x)-8*x*cos(x)*sin(y)+8*x*cos(y)*sin(x)-4*x^2*cos(x)*sin(y)+4*x^2*cos(y)*sin(x))/y
f的逆矩阵
[-(y*(cos(x)*sin(y)-cos(y)*sin(x)))/(33*y*exp(a*(x+y))-33*y*log(x)-8*x*cos(x)*sin(y)+8*x*cos(y)*sin(x)-4*x^2*cos(x)*sin(y)+4*x^2*cos(y)*sin(x)),(y*(exp(a*(x+y))-log(x)))/(33*y*exp(a*(x+y))-33*y*log(x)-8*x*cos(x)*sin(y)+8*x*cos(y)*sin(x)-4*x^2*cos(x)*sin(y)+4*x^2*cos(y)*sin(x))]
[-(33*y)/(33*y*exp(a*(x+y))-33*y*log(x)-8*x*cos(x)*sin(y)+8*x*cos(y)*sin(x)-4*x^2*cos(x)*sin(y)+4*x^2*cos(y)*sin(x)),(4*(x^2+2*x))/(33*y*exp(a*(x+y))-33*y*log(x)-8*x*cos(x)*sin(y)+8*x*cos(y)*sin(x)-4*x^2*cos(x)*sin(y)+4*x^2*cos(y)*sin(x))]
f的秩
2
f对x一次积分
[(4*x^2*(x+3))/(3*y),x*(log(x)-1)-exp(a*x+a*y)/a]
[33*x,-cos(x-y)]
f对y定积分
[4*x*log(9/2)*(x+2),7*log(x)+(exp(a*(x+2))-exp(a*(x+9)))/a]
[231,cos(x-9)-cos(x-2)]
f对x、y积分
[(4*x^2*log(y)*(x+3))/3,x*y*log(x)-x*y-(exp(a*x)*exp(a*y))/a^2]
[33*x*y,sin(x-y)]
f对x的一次偏导
[(8*x+8)/y,1/x-a*exp(a*(x+y))]
[0,cos(x)*cos(y)+sin(x)*sin(y)]
f对y二次偏导
[(2*(4*x^2+8*x))/y^3,-a^2*exp(a*(x+y))]
[0,cos(x)*sin(y)-cos(y)*sin(x)]
f分别对x、y偏导
[-(8*x+8)/y^2,-a^2*exp(a*(x+y))]
[0,cos(y)*sin(x)-cos(x)*sin(y)]
第十五题
椭圆的隐式方程为:
,它的参数方程可以表达为:
x=a*cos(
)y=b*sin(
),其中a=5,b=3;请用subplot在三个子图区域用不同的方法绘制椭圆曲线,要求为每幅子图形加上标题title和坐标轴标注,其中
(1)采用e