哈工大MATLAB选修课最终大作业.docx
- 文档编号:12057593
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:30
- 大小:186.11KB
哈工大MATLAB选修课最终大作业.docx
《哈工大MATLAB选修课最终大作业.docx》由会员分享,可在线阅读,更多相关《哈工大MATLAB选修课最终大作业.docx(30页珍藏版)》请在冰豆网上搜索。
哈工大MATLAB选修课最终大作业
2014年春季学期
MATLAB课程考查题
姓名:
学号:
*****
学院:
机电工程学院
专业:
机械设计制造及其自动化
一.必答题(80分)
1.如何设置当前目录和搜索路径,在当前目录上的文件和在搜索路径上的文件有何区别?
答:
设置当前目录和搜索路径:
在File菜单中选择SetPath选项,之后选择AddFolder增加目录。
当前工作目录是指MATLAB运行文件时的目录,只有在当前工作目录或搜索路径下的文件、函数可以被运行或调用。
2.创建符号变量和符号表达式有哪几种方法?
答:
(1)符号变量:
x=sym(‘x’)创建x为符号变量,默认复数区域
x=sym(‘x’,‘real’)创建实数的符号变量x
x=(‘x’,‘positive’)创建正数的符号变量x
x=sym('x','clear')创建一个没有额外属性的纯形式上的符号变量x
s=sym(‘ab’,’flag’)创建flag数域(复数,实数,正数)符号变量名s,内容ab
(2)符号表达式:
①直接法:
>>x=sym('x');
>>a=sym('a');
>>b=sym('b');
>>f=sin(b*x)+exp(-a*x)
②整体定义法:
f=sym(‘expression’)
③字符串符号表达式:
f=‘expression’
3.GUIDE提供哪些常用的控件工具,各有什么功能?
(5分)
答:
按钮(PushButtons):
通过鼠标单击按钮可以执行某种预定的功能或操作;
静态文本框(StaticTexts):
仅用于显示单行的说明文字.
文本编辑器(EditableTexts):
用来使用键盘输入字符串的值,可以对编辑框中的内容进行编辑、删除和替换等操作;
单选按钮(RadioButton):
单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项;
滚动条(Slider):
可输入指定范围的数量值,通过移动滚动条来改变指定范围内的数值输入,滚动条的位置代表输入数值。
复选框(CheckBoxes):
单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项;
列表框(ListBoxes):
列表框显示列表项,并能够选择其中的一项或多项。
弹出式菜单(PopupMenus):
让用户从一列菜单项中选择一项作为参数输入。
组合框(面板)panel:
组合框是图形窗口中的一个封闭区域,它把相关联的控件组合在一起。
开关按钮(ToggleButton):
产生一个一个二进制状态动作(开或关),当鼠点击它时按钮将下陷,并执行callback(回调函数)中指定的内容,再次点击,按钮复原,并再次执行callback中的内容。
坐标轴axes:
坐标轴可以设置关于外观和行为的参数。
按钮组buttongroup:
按钮组类似于组合框,但是它可以响应单选按钮以及开关按钮的高级属性。
4.建立不同数据类型的变量:
包括双精度的数值型(numeric)、符号型(sym)、结构体(structure)、单元型(cell)、字符串型(char),函数句柄(functionhandle)、逻辑型(logical),并且采用whos列出各变量名,变量的数组维数,占用字节数,变量的类别。
(4分)
答:
a=1;
x=sym('x');
b={[1,2],[1,2;3,4];'sdfg',linspace(1,5,3)};
c='abcd';
h_fun=@(x)x+1;
l=true;
whos
NameSizeBytesClassAttributes
a1x18double
b2x2528cell
c1x48char
h_fun1x132function_handle
l1x11logical
x1x1112sym
5.求
矩阵的秩,迹,特征值和特征向量,并且对矩阵进行LU分解、QR分解及Chollesky分解(3分)。
答:
秩:
rank(a)
ans=
3
迹:
trace(a)
ans=
22
特征值:
eig(a)
ans=
13.5482
4.8303
3.6216
特征向量:
[V,D]=eig(a)
V=
-0.4330-0.2543-0.1744
-0.56570.9660-0.6091
-0.70180.04720.7736
LU分解:
[L,U]=lu(a)
L=
1.000000
0.55561.00000
0.88890.20411.0000
U=
9.00001.00002.0000
05.44441.8889
004.8367
QR分解:
[Q,R]=qr(a)
Q=
-0.69030.3969-0.6050
-0.3835-0.9097-0.1592
-0.61360.12210.7801
R=
-13.0384-4.2183-6.8260
0-4.8172-1.0807
003.7733
Chollesky分解:
R=chol(a)
R=
3.00000.33330.6667
02.42671.1447
002.2903
6.执行矩阵A和B
下列的运算:
A+5*cos(B)、A.*B、A*B、A./B、B.\A、A/B,B\A,分别解释数组运算和矩阵运算的区别。
(4分)
答:
A+5*cos(B)
ans=
6.70159.919315.0500
8.731846.418382.8009
23.769577.2725131.4443
A.*B
ans=
42460
48225468
1406241224
A*B
ans=
192228264
7388731008
128415181752
A./B
ans=
4.00006.00006.6667
3.00009.000013.0000
2.85719.750015.1111
B.\A
ans=
4.00006.00006.6667
3.00009.000013.0000
2.85719.750015.1111
A/B
ans=
8.66670-0.6667
4.500064.0000-35.5000
128.3333-128.000057.6667
B\A
ans=
11.333324.500065.6667
-18.6667-28.0000-93.3333
10.000014.500047.0000
区别:
数组运算和矩阵运算的区别:
数组运算是指数组对应元素之间的运算,对于乘法、乘方和除法等三种运算,矩阵运算与数组运算的运算符及含义都不同:
矩阵运算按线性变换定义,使用通常符号;数组运算按对应元素运算定义,使用点运算符。
7.求半径为r的圆的面积和周长,分别采用脚本文件和函数文件进行编写,r值由input指令从键盘给出,数据的输出采用disp指令;并且说明脚本式文件和函数文件的特点。
(5分)
clear;
r=input('输入半径:
');
s=pi*r*r;
c=2*pi*r;
disp(['面积',num2str(s),',周长',num2str(c)]);
答:
脚本文件:
运行:
test
输入半径:
1
面积3.1416,周长6.2832
函数文件:
function[s,c]=fcircle(r)
s=pi*r*r;
c=2*pi*r;
运行:
[s,c]=fcircl(11)
s=
380.1327
c=
69.1150
脚本文件的特点:
不接受输入参数,没有返回值,基于matlab基本工作空间中的数据进行操作,存储在工作空间,属于全局变量,自动完成需要花费很多时间的多步操作时使用。
函数文件的特点:
可以接受输入参数,可以有返回值,默认时,文件中参数的作用范围只限于函数临时工作空间内部,属于局部变量,扩展MATLAB语言功能时使用。
8.级数求和:
(1)分别用 for和while循环结构编写程序求和,并且说明for和while区别;
(2)分别采用sum和symsum求和。
(5分)
clear;
ss=0;
forn=1:
64
s=1/(n*(n+1));
ss=ss+s;
end
disp(['ss=',num2str(ss)]);
答:
⑴for循环:
运行:
>>qiuhe
ss=0.98462
clear;
ss=0;
n=1;
whilen<65
s=1/(n*(n+1));
ss=ss+s;
n=n+1;
end
disp(['ss=',num2str(ss)]);
while循环:
运行:
>>qiuhe
ss=0.98462
For与while的区别:
for循环语句一般适用于已知到循环次数,而不知道循环运算目标的问题;
while循环语句则一般适用于已知循环运算目标,而循环次数未知的问题。
为了提高代码的运行效率,应尽可能提高代码的向量化程度,避免for循环的使用;
⑵sum
n=1:
1:
64;
ss=sum(1./(n.*(n+1)));
disp(['ss=',num2str(ss)]);
运行:
>>qiuhe
ss=0.98462
symsum
symsnss;
ss=symsum(1/(n*(n+1)),n,1,64);
ss
运行:
>>qiuhe
ss=
64/65
9.表1给出x0,y0的一组数据,
x0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
y0
-0.4470
1.9780
3.1100
5.2500
5.0200
4.6600
4.0100
4.5800
3.4500
5.3500
9.2200
(1)分别采用3阶和11阶多项式拟合表1数据,并且分析是不是阶数越高拟合效果越好;
(2)根据已知表1数据组,采用3次样条插值求解x=0:
0.25:
1的y值;
(3)图示原始数据、3阶和11阶多项式拟合以及插值结果在一个图中,并标注坐标轴和图例;
(4)说明插值和拟合的区别。
(8分)
x0=0:
0.1:
1;
y0=[-0.4470,1.9780,3.1100,5.2500,5.0200,4.6600,4.0100,4.5800,3.4500,5.3500,9.2200];
xx=0:
0.005:
1;
p1=polyfit(x0,y0,3);
y1=polyval(p1,xx);
p2=polyfit(x0,y0,11);
y2=polyval(p2,xx);
plot(x0,y0,'*');
holdon;
plot(xx,y1,'r-');
holdon;
plot(xx,y2,'g-');
答:
⑴
可见,阶数越高,拟合效果越好。
x0=0:
0.1:
1;
y0=[-0.4470,1.9780,3.1100,5.2500,5.0200,4.6600,4.0100,4.5800,3.4500,5.3500,9.2200];
xx=0:
0.25:
1;
yy=interp1(x0,y0,xx,’spline’)
⑵
y1=
-0.90434.53844.40634.01418.6768
⑶
⑷插值和拟合的区别:
插值需要构造的函数正好通过各插值点,拟合则不要求,只要均方差最小即可;拟合时,函数形式通常已知,仅需要拟合参数值。
10.
采用左除和逆乘法求解两个方程组的解;并解释求解这两个方程的区别(5分)
答:
11.求解多项式
的根,分别采用
(1)多项式求根命令roots;
(2)数值求零命令fzero;
(3)符号运算命令solve,并将符号变量结果转化为数值解;(5分)
>>P=[1,2,1,1];
>>x=roots(P)
x=
-1.7549+0.0000i
-0.1226+0.7449i
-0.1226-0.7449i
答:
⑴
⑵建立函数文件
运行:
>>x=solve('x^3+2*x^2+x+1','x');
>>eval(x)
ans=
-1.7549+0.0000i
-0.1226+0.7449i
-0.1226-0.7449i
⑶
12.已知y=x.^3-4*exp(x)-sin(x)/0.002,采用符号(diff)和数值微分(diff)和多项式拟合求导(polyfit,polyder),计算函数y在[-3,3]区间中的导数,并且图示这三种方法。
(5分)
答:
符号微分:
>>y=sym('x^3-4*exp(x)-sin(x)/0.002');
>>diff(y)
ans=
3*x^2-4*exp(x)-500.0*cos(x)
数值微分和多项式拟合:
>>y=inline('x.^3-4*exp(x)-sin(x)/0.002');
>>x=-3:
0.01:
3;
>>p=polyfit(x,y(x),5);
>>dp=polyder(p);
>>dpx=polyval(dp,x);
>>dx=diff(y([x,3.01]))/0.01;
>>plot(x,dpx,x,dx)
13.求方程组
的根,分别采用数值运算fsolve和符号运算solve,数值运算的初始值为x0=[-5;-5],要求显示符号运算得到结构体的每个元素的具体数值.(5分)
functionq=myfun(p)
x1=p
(1);
x2=p
(2);
q
(1)=2*x1-x2-exp(-x1);
q
(2)=-x1+2*x2-exp(-x2);
>>x=fsolve('myfun',[-5,-5]')
x=
0.5671
0.5671
答:
①数值运算:
建立函数myfun:
运行:
②符号运算:
>>s=solve('2*x1-x2-exp(-x1)=0','-x1+2*x2-exp(-x2)=0','x1','x2')
s=
x1:
[1x1sym]
x2:
[1x1sym]
>>disp(s.x1)
0.56714329040978387299996866221036
>>disp(s.x2)
0.56714329040978387299996866221036
14.符号矩阵
(1)简化符号矩阵然后求行列式、逆矩阵和秩;
(2)
(3)
(10分)
>>f=sym('[(4*x^2+8*x)/ylog(x)-exp(a*(x+y));33sin(x)*cos(y)-cos(x)*sin(y)]');
>>r=simple(f)%化简
r=
[(4*x*(x+2))/y,log(x)-exp(a*(x+y))]
[33,sin(x-y)]
>>det(r)%求行列式
ans=
(33*y*exp(a*(x+y))+4*x^2*sin(x-y)-33*y*log(x)+8*x*sin(x-y))/y
>>inv(r)%求逆
ans=
[(y*sin(x-y))/(33*y*exp(a*(x+y))+4*x^2*sin(x-y)-33*y*log(x)+8*x*sin(x-y)),(y*(exp(a*(x+y))-log(x)))/(33*y*exp(a*(x+y))+4*x^2*sin(x-y)-33*y*log(x)+8*x*sin(x-y))]
[-(33*y)/(33*y*exp(a*(x+y))+4*x^2*sin(x-y)-33*y*log(x)+8*x*sin(x-y)),(4*x*(x+2))/(33*y*exp(a*(x+y))+4*x^2*sin(x-y)-33*y*log(x)+8*x*sin(x-y))]
>>rank(r)%求秩
ans=
2
答:
(1)
(2)
>>int(r)
ans=
[(4*x^2*(x+3))/(3*y),x*(log(x)-1)-exp(a*x+a*y)/a]
[33*x,-cos(x-y)]
>>int(r,'y',2,9)
ans=
[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)]
>>int(int(r),'y')
ans=
[(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)]
(3)
>>diff(r)
ans=
[(4*(x+2))/y+(4*x)/y,1/x-a*exp(a*(x+y))]
[0,cos(x-y)]
>>diff(r,'y',2)
ans=
[(8*x*(x+2))/y^3,-a^2*exp(a*(x+y))]
[0,-sin(x-y)]
>>diff(diff(r),'y')
ans=
[-(4*(x+2))/y^2-(4*x)/y^2,-a^2*exp(a*(x+y))]
[0,sin(x-y)]
15.椭圆的隐式方程为:
,它的参数方程可以表达为:
x=a*cos(
)y=b*sin(
),其中a=5,b=3;请用subplot在三个子图区域用不同的
方法绘制椭圆曲线,要求为每幅子图形加上标题title和坐标轴标注,其中
(1)采用ezplot分别绘制椭圆隐式和参数方程在两个子图区域;
(2)当a值由1变化到5时,采用plot绘制5条椭圆曲线在另一个子图区域中,t在[-2π,2π]范围,使用linspace命令取椭圆100个点,使用legend命令来标明每一条对应的a值曲线的图例。
(10分)
答:
>>symst;
>>a=5;b=3;
>>x=a*cos(t);y=b*sin(t);
>>subplot(1,3,1)
>>ezplot(x,y)
>>axisequal
>>clearxy
>>symsxy;
>>subplot(1,3,2)
>>ezplot((x/a)^2+(y/b)^2-1)
>>axisequal
>>clearatxy;
>>a=1:
1:
5;
>>t=linspace(-2*pi,2*pi,100);
>>x=a'*cos(t);y=b*sin(t);
>>subplot(1,3,3)
>>plot(x,y)
>>axisequal
>>legend('a=5','a=4','a=3','a=2','a=1')
二、选答题(必须选4道题,每题5分,总计20分)
1.符号运算
(1)分解因式
答:
>>symsxyz;
>>factor(x^4-5*x^3+5*x^2+5*x-6)
ans=
(x-1)*(x-2)*(x-3)*(x+1)
>>factor(x^2+y^2+z^2+2*(x*y+y*z+z*x))
ans=
(x+y+z)^2
(2)化简表达式
>>symsabb1b2;
>>simplify(sqrt((a+sqrt(a^2-b))/2)+sqrt((a-sqrt(a^2-b))/2))
ans=
(2^(1/2)*((a+(a^2-b)^(1/2))^(1/2)+(a-(a^2-b)^(1/2))^(1/2)))/2
>>simplify(sin(b1)*cos(b2)-cos(b1)*sin(b2))
ans=
sin(b1-b2)
答:
(3)求
极限
答:
>>symsxk;
>>limit((1-1/x)^(k*x),x,inf)
ans=
exp(-k)
2.积分运算
(1)定积分运算:
分别采用数值和符号运算
>>I=dblquad('fun',0,1,0,1)%数值积分
I=
0.6667
>>symsxy;%符号积分
>>int(int(x^2+y^2,0,1),0,1)
ans=
2/3
答:
>>[I,n]=quad('fun',0,pi/2)%数值积分
I=
2.0000
n=
13
>>symsx;%符号积分
>>int(sqrt(1+cos(x)),0,pi/2)
ans=
2
(2)不定积分运算
答:
>>symsxy;
>>symsab;
>>int(int(sin(x/a)+b/y,x),y)
ans=
b*x*log(y)-2*a*y*cos(x/(2*a))^2
3.已知微分方程
采用数值运算ode和符号运算dsolve求解。
答:
①数值运算:
functiondy=fun(t,y)
dy=zeros(2,1);
dy
(1)=y
(2);
dy
(2)=1000*(1-y
(1)^2)*y
(2)-y
(1);
函数文件与运行:
>>[T,Y]=ode15s('fun',[03000],[20]);
>>plot(T,Y(:
1))
②符号运算:
>>y=dsolve('D2x-1000*(1-x^2)*Dx-x=0','x(0)=2,Dx(0)=0','t');
Warning:
Explicitsolutioncouldnotbefound.
>Indsolveat194
无法找到精确解。
4.采用GUIDE工具设计椭圆(x=a*cos(t)y=b*sin(t))的用户界面,a和b值由编辑框输入,实现在坐标轴上显示椭圆曲线的目的。
要求设计一个带有两个编辑框、一个坐标轴、一个按钮和相应的静态文本的图形用户界面,当用鼠标点击按钮时,在坐标轴内画出不同a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈工大 MATLAB 选修课 最终 作业