matlab大作业Word文档格式.docx
《matlab大作业Word文档格式.docx》由会员分享,可在线阅读,更多相关《matlab大作业Word文档格式.docx(26页珍藏版)》请在冰点文库上搜索。
控件对象类型。
(3)Tag:
控件表示(用户定义)。
(4)TooltipString属性:
提示信息显示。
当鼠标指针位于此控件上时,显示提示信息。
(5)UserData:
用户指定数据。
(6)Position:
控件对象的尺寸和位置。
(7)Units:
设置控件的位置及大小的单位
(8)有关字体的属性,如FontAngle,FontName等。
三、控件回调函数的执行
(1)BusyAction:
处理回调函数的中断。
有两种选项:
即Cancel:
取消中断事件,queue:
排队(默认设置)。
(2)ButtonDownFcn属性:
按钮按下时的处理函数。
(3)CallBack属性:
是连接程序界面整个程序系统的实质性功能的纽带。
该属性值应该为一个可以直接求值的字符串,在该对象被选中和改变时,系统将自动地对字符串进行求值。
(4)CreateFcn:
在对象产生过程中执行的回调函数。
(5)DeleteFcn:
删除对象过程中执行的回调函数。
(6)Interruptible属性:
指定当前的回调函数在执行时是否允许中断,去执行其他的函数。
四、控件当前状态信息
(1)ListboxTop:
在列表框中显示的最顶层的字符串的索引。
(2)Max:
最大值。
(3)Min:
最小值。
(4)Value:
控件的当前值。
4.建立不同数据类型的变量:
包括双精度的数值型(numeric)、符号型(sym)、结构体(structure)、单元型(cell)、字符串型(char),函数句柄(functionhandle)、逻辑型(logical),并且采用whos列出各变量名,变量的数组维数,占用字节数,变量的类别。
(4分)
pp=3.14;
b=sym('
sdlfkjj'
);
d={[],[1];
'
cv'
linspace(1,5,5)};
e='
e'
;
fhandle=@sin;
g=rand(5);
g(g>
0)=0;
whos
NameSizeBytesClassAttributes
pp1x18double
b1x162sym
d2x2320cell
e1x612char
fhandle1x116function_handle
g5x5200double
5.求
矩阵的秩,迹,特征值和特征向量,并且对矩阵进行LU分解、QR分解及Chollesky分解(3分)。
>
a=[912;
563;
827];
z=rank(a)
j=trace(a)
[cd]=eig(a)
[lu]=lu(a)
[qr]=qr(a)
[rrp]=chol(a)
z=
3
j=
22
c=
-0.4330-0.2543-0.1744
-0.56570.9660-0.6091
-0.70180.04720.7736
d=
13.548200
04.83030
003.6216
l=
1.000000
0.55561.00000
0.88890.20411.0000
u=
9.00001.00002.0000
05.44441.8889
004.8367
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
rr=
3.00000.33330.6667
02.42671.1447
002.2903
p=
0
6.执行矩阵A和B
下列的运算:
A+5*cos(B)、A.*B、A*B、A./B、B.\A、A/B,B\A,分别解释数组运算和矩阵运算的区别。
A=[41220;
124578;
2078136];
B=[123;
456;
789];
A+5*cos(B)
A.*B
A*B
A./B
B.\A
A/B
B\A
ans=
6.70159.919315.0500
8.731846.418382.8009
23.769577.2725131.4443
42460
48225468
1406241224
192228264
7388731008
128415181752
4.00006.00006.6667
3.00009.000013.0000
2.85719.750015.1111
Warning:
Matrixissingulartoworkingprecision.
NaN-InfInf
NaNNaNNaN
Matrixisclosetosingularorbadlyscaled.
Resultsmaybeinaccurate.RCOND=1.541976e-018.
11.333324.500065.6667
-18.6667-28.0000-93.3333
10.000014.500047.0000
一维数组相当于向量,二维数组相当于矩阵.所以矩阵是数组的子集
●数组的运算是指数组对应元素之间的运算,也称点运算;
●矩阵是一个二维数组,所以矩阵的加、减、数乘等运算与数组运算是一致的;
●矩阵的乘法、乘方和除法有特殊的数学含义,并不是数组对应元素的运算。
7.求半径为r的圆的面积和周长,分别采用脚本文件和函数文件进行编写,r值由input指令从键盘给出,数据的输出采用disp指令;
并且说明脚本式文件和函数文件的特点。
脚本文件:
r=input('
PleaseInputr:
\n'
A=pi*r^2;
s=2*pi*r;
disp(A);
disp(s)
4
50.2655
25.1327
函数:
[as]=zm(r);
disp(a);
disp(s);
50.2655
25.1327
函数文件:
function[as]=zm(r)
a=r^2*pi;
end
脚本式M文件
函数式M文件
不接受输入参数,没有返回值。
可以接受输入参数,可以有返回值。
基于matlab基本工作空间中的数据进行操作,存储在工作空间,属于全局变量。
默认时,文件中参数的作用范围只限于函数临时工作空间内部,属于局部变量。
自动完成需要花费很多时间的多步操作时使用。
扩展MATLAB语言功能时使用。
8.级数求和:
(1)分别用
for和while循环结构编写程序求和,并且说明for和while区别;
for循环:
ss=0;
fork=1:
64
ss=ss+1/(k*(k+1));
ss
ss=
0.9846
while循环:
k=1;
whilek<
65
k=k+1;
0.9846
●for循环语句一般适用于已知到循环次数,而不知道循环运算目标的问题;
●while循环语句则一般适用于已知循环运算目标,而循环次数未知的问题;
●为了提高代码的运行效率,应尽可能提高代码的向量化程度,避免for循环的使用。
(2)分别采用sum和symsum求和。
sum求和:
n=1:
64;
s=1./(n.*(n+1));
sum(s)
symsum求和:
ss=sym('
1/(n*(n+1))'
s=symsum(ss,1,64)
s=
64/65
9.表1给出x0,y0的一组数据,
x0
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数据,并且分析是不是阶数越高拟合效果越好;
x0=0:
0.1:
1;
y0=[-0.4471.9783.115.255.024.664.014.583.455.359.22];
x=0:
0.001:
p1=polyfit(x0,y0,3);
y1=polyval(p1,x);
p2=polyfit(x0,y0,11);
y2=polyval(p2,x);
plot(x0,y0,'
p'
holdon;
plot(x,y1,'
-'
plot(x,y2,'
--'
z=0:
0.25:
y3=interp1(x0,y0,z,'
spline'
plot(z,y3,'
:
)
xlabel('
x0'
ylabel('
y0'
legend('
原数据'
'
3阶多项式拟合'
11阶多项式拟合'
3次样条插值'
可见,插值次数太高会使得波动太大。
(2)根据已知表1数据组,采用3次样条插值求解x=0:
1的y值;
t=0:
y3=interp1(x,y,t,'
y3=
-0.44704.28324.66003.98269.2200
(3)图示原始数据、3阶和11阶多项式拟合以及插值结果在一个图中,并标注坐标轴和图例;
见第一问
(4)说明插值和拟合的区别。
(8分)
插值需要构造的函数正好通过已知数据点,拟合则不要求,只要均方差最小即可;
10.
采用左除和逆乘法求解两个方程组的解;
并解释求解这两个方程的区别(5分)
恰定方程:
a=[34-7-12;
5-742;
108-5;
-65-210];
b=[4494];
x1=a\b
x2=inv(a)*b
x1=
2.28113.34002.36373.6511
x2=
2.28113.34002.36373.6511
超定方程:
-65-210;
5-271];
b=[44946];
rank(a)
x=a\b'
xx=pinv(a)*b'
ans=
4
x=
1.1331
1.3810
0.7493
0.1772
xx=
超静定方程的系数矩阵不可逆,故必须用“伪逆”函数pinv
11.求解多项式
的根,分别采用
(1)多项式求根命令roots;
p=[1211];
r=roots(p)
-1.7549
-0.1226+0.7449i
-0.1226-0.7449i
(2)数值求零命令fzero;
s=fzero('
funxy'
-2)
-1.7549
(3)符号运算命令solve,并将符号变量结果转化为数值解;
symsx;
solve(x^3+2*x^2+x+1)
12.已知y=x^3-4*exp(x)-sin(x)/0.002,采用符号(diff)和数值微分(diff)和多项式拟合求导(polyfit,polyder),计算函数y在[-3,3]区间中的导数,并且图示这三种方法。
符号(diff):
symsx
y='
x^3-4*exp(x)-sin(x)/0.002'
diff(y,x)
3*x^2-4*exp(x)-500.0*cos(x)
数值微分(diff):
k=linspace(-3,3,50);
y=shuzhi(x);
rr=diff(y)
3*x^2-4*exp(x)-500*cos(x)
函数shuzhi:
functionss=shuzhi(x)
ss=x.^3-4.*exp(x)-sin(x)/0.002;
end
x=linspace(-3,3,100);
y=x.^3-4.*exp(x)-sin(x)/0.002;
p=polyfit(x,y,3);
d=polyder(p)
145.9691-7.3927-439.9788
13.求方程组
的根,分别采用数值运算fsolve和符号运算solve,数值运算的初始值为x0=[-5;
-5],要求显示符号运算得到结构体的每个元素的具体数值.(5分)
数值运算fsolve:
x=fsolve('
dzya'
[-5,-5],optimset('
Display'
off'
))
0.56710.5671
符号运算solve:
symsxy;
solve(2*x-y-exp(-x),-x+2*y-exp(-y))
x:
0.5671
y:
14.符号矩阵
(1)简化符号矩阵然后求行列式、逆矩阵和秩;
f=[(4*x^2+8*x)/ylog(x)-exp(a*(x+y));
33sin(x)*cos(y)-cos(x)*sin(y)];
[r,how]=simple(f)
[(4*x*(x+2))/y,log(x)-exp(a*(x+y))]
[33,sin(x-y)]
how=
simplify
det(r)
(33*y*exp(a*x+a*y)+4*x^2*sin(x-y)-33*y*log(x)+8*x*sin(x-y))/y
inv(r)
[(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)
2
(2)
jx=int(r)
jx=
[(4*x^2*(x+3))/(3*y),x*(log(x)-1)-exp(a*x+a*y)/a]
[33*x,-cos(x-y)]
jy=int(r,y,2,9)
jy=
[4*x*log(9/2)*(x+2),7*log(x)+(exp(a*x)*(exp(2*a)-exp(9*a)))/a]
[231,cos(x-9)-cos(2-x)]
jxy=int(r,x,y)
[-(4*(x^3+3*x^2-y^3-3*y^2))/(3*y),
y*(log(y)-1)-x*(log(x)-1)+(exp(a*x+a*y)-exp(2*a*y))/a]
[33*y-33*x,cos(x-y)-1]
(3)
(10分)
dx=diff(r,x)
dx=
[(4*(x+2))/y+(4*x)/y,1/x-a*exp(a*(x+y))]
[0,cos(x-y)]
dy2=diff(r,y,2)
dy2=
[(8*x*(x+2))/y^3,-a^2*exp(a*(x+y))]
[0,-sin(x-y)]
dxy=diff(dx,y)
dxy=
[-(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值曲线的图例。
subplot(131);
ezplot('
y^2/9+x^2/25-1'
title('
Ò
þ
Ê
½
x'
y'
symst;
subplot(132);
5*sin(t)'
[0,2*pi]);
3*cos(t)'
axis([02*pi-66]);
\theta'
xy'
²
Î
ý
·
³
Ì
subplot(133);
a´
Ó
1Ö
Á
5'
a=1;
t=linspace(-2*pi,2*pi,100);
x=a.*cos(t);
y=3.*sin(t);
plot(x,y,'
a=2;
a=3;
a=4;
-.'
a=5;
a=1'
a=2'
a=3'
a=4'
a=5'
二、选答题(必须选4道题,每题5分,总计20分)
1.符号运算
(1)分解因式
symsx
y=x^4-5*x^3+5*x^2+5*x-6;
yy=factor(y)
yy=
(x-1)*(x-2)*(x-3)*(x+1)
symsxyz;
f=x^2+y^2+z^2+2*(x*y+y*z+z*x);
ff=factor(f)
ff=
(x+y+z)^2
(2)化简表达式
symsab;
f=sqrt((a+sqrt(a^2-b))/2)+sqrt((a-sqrt(a^2-b))/2);
ff=simplify(f)
(2^(1/2)*((a+(a^2-b)^(1/2))^(1/2)+(a-(a^2-b)^(1/2))^(1/2)))/2
symsxy;
z=sin(x)*cos(y)-cos(x)*sin(y);
ff=simplify(z)