中国海洋大学MATLAB期末复习2014_答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、计算题:
1. 设2u =,3v =,计算:(1) 4log uv
v
;(2)
()
2
2e
u
v v u
+-;(3)
参考答案: >> u=2; >> v=3; (1)
>> 4*u*v/log(v) ans =
21.8457 (2)
>> (exp(u)+v)^2/(v^2-u) ans =
15.4189 (3)
>> sqrt(u-3*v)/(u*v) ans =
0 + 0.4410i
2. 计算>> cos(pi/3)-(9-2^(1/2))^(1/3)
ans =
-1.4649
3. 计算下列积分。

(1) 1
35 1
d x x x x -++⎰
(2) 10
102
1
1
sin d d 4
x y
y
x y x ++⎰⎰
(3)
dx x x )]6
cos()3
(2[sin 20
π
π
π
+
++

参考答案: (1)
>> f = @(x)x+x.^3+x.^5; >> q = quad(f,-1,1) q =
2.2204e-016 (2)
>> f5 = @(x,y)sin(y).*(x+y)./(x.^2+4); >> q = dblquad(f5,1,10,1,10) q =
5.5254 (3)
>> f = inline('sin(2*(x+pi/3))+cos(x+pi/6)','x'); >> Q = quad(f,0,2*pi)
Q =
6.7851e-009
4. 创建一个含10000个元素的数组,其值依次为1到10000之间的整数。

用逻辑数组计算大于5000的元素的平方根。

a = 1:10000; %Declare array a b = a > 5000; %Create mask
a(b) = sqrt(a(b)); %Take square root 5. 对2
3
2
2
3a (x-y)-4b (y-x) 进行因式分解 参考答案:
>> factor(sym('3*a^2*(x-y)^3 - 4*b^2*(y-x)^2')) ans =
(x-y)^2*(3*a^2*x-4*b^2-3*a^2*y)
6. 求解线性方程组⎪⎪⎩⎪⎪
⎨⎧-=+-+-=-+-=++-=--+8
102569583
2475412743w z y x w z x w z y x w z y x
>> A=[3 4 -7 -12; 5 -7 4 2; 1 0 8 -5; -6 5 -2 10]
A =
3 4 -7 -12 5 -7 4 2 1 0 8 -5 -6 5 -2 10 >> B=[4;-3;9;-8] B = 4 -3 9 -8 >> x=A\B x =
-1.4841 -0.6816 0.5337 -1.2429
7. 计算下列各式 (1)0tan sin lim
1cos 2x x x
x
→--
(2)3
2
2sin y x x x =-+,求y '
(3)()ln y xy x y =+,求/f x ∂∂,/f y ∂∂,2
/f x y ∂∂∂
(4)ln(1)y t dx =+⎰,27
ln(1)y t dx =
+⎰
参考答案: (1)
>> limit(sym('(tan(x) - sin(x))/(1-cos(2*x))')) ans = 0 (2)
>> y = sym('x^3 - 2*x^2 + sin(x)'); >> diff(y) ans =
3*x^2-4*x+cos(x) (3)
>> f = x*y*log(x+y); >> fx = diff(f,x) fx =
y*log(x+y)+x*y/(x+y) >> fy = diff(f,y) fy =
x*log(x+y)+x*y/(x+y) >> f2xy = diff(fx,y) f2xy =
log(x+y)+y/(x+y)+x/(x+y)-x*y/(x+y)^2 (4) >> syms t
>> y = log(1+t); >> int(y) ans =
log(1+t)*(1+t)-t-1 >> int(y,0,27) ans =
56*log(2)+28*log(7)-27
8. 已知变量:A='ilovematlab';B='matlab',请找出: (1)B 在A 中的位置; (2)把B 放在A 后面。

解:Lb=strfind(A,B) Lb= 6
Le=Lb+length(B)-1 Le= 11
9. 炼钢基本上是一个氧化脱碳的过程,钢液中原含碳量多少直接影响到冶炼时间的长短,下表是某平炉的熔钢完毕碳(x )与精炼时间(y )的生产记录:
现希望从上表的数据中找出x与y变化规律的经验公式,用多项式进行曲线拟合,并给出相应的曲线。

x=[104 134 150 163 180 190 200];
>> y=[100 135 168 175 200 215 220];
>> f=polyfit(x,y,2)
f =
-0.0016 1.7666 -68.3091
x与y
y=-0.0016*x^2+1.7666*x-68.3091
10. 有如下数据:
利用本章介绍的几种插值方法对其进行插值,得到每隔0.05的结果。

编写脚本文件,文件内容为:
% Interpolation using the four methods
x=[1 1.1 1.2 1.3 1.4];
y=[1.00000 1.23368 1.55271 1.99372 2.61170];
length_of_x=length(x);
scalar_x=x(1):0.05:x(length_of_x);
length_of_sx=length(scalar_x);
y_nearest = zeros(length(scalar_x),1);
y_linear = zeros(length(scalar_x),1);
y_spline = zeros(length(scalar_x),1);
y_cubic = zeros(length(scalar_x),1);
for i=1:length_of_sx
y_nearest(i)=interp1(x,y,scalar_x(i),'nearest');
y_linear(i) =interp1(x,y,scalar_x(i),'linear');
y_spline(i) =interp1(x,y,scalar_x(i),'spline');
y_cubic(i) =interp1(x,y,scalar_x(i),'cubic');
end
subplot(2,2,1),plot(x,y,'*'),hold on,plot(scalar_x,y_nearest),title('method=nearest'); subplot(2,2,2),plot(x,y,'*'),hold on,plot(scalar_x,y_linear),title('method=linear'); subplot(2,2,3),plot(x,y,'*'),hold on,plot(scalar_x,y_spline),title('method=spline'); subplot(2,2,4),plot(x,y,'*'),hold on,plot(scalar_x,y_cubic),title('method=cubic');
得到结果为:
二、绘图题:
1. 绘制双曲抛物面:
22
164
x y
z=-,1616
x
-<<,44
y
-<<
参考答案:
>> [X,Y] = meshgrid(-16:0.4:16,-4:0.1:4); >> Z = X.^2/16 - Y.^2/4;
>> surf(X,Y,Z)
2. 绘制函数()()()
221
exp 2f x x y π
=
-+在33x -<<,33y -<<上的表面图 参考答案: >> syms x y
>> z = 1/(2*pi)*exp(-(x^2+y^2)); >> ezsurf(x,y,z,[-3,3,-3,3]);
3. 求函数cos(x)的5次拟合多项式p(x),并绘制出cos(x)和p(x)在[0,2pi]区间的函数曲线。

4. 编写MA TALAB 程序,完成下列任务:
(1)在区间[0,4*pi]上均匀地取100个点构成向量;
(2)分别计算函数y1=sin(t)与y2=2cos(2t)在向量t处于区间[0,4*pi]上的函数值;
(3)在同一图形窗口绘制曲线y1=sin(t)与y2=2cos(2t),要求y1曲线为黑色点画线,y2曲线为红色虚线圆圈;并在图中恰当位置标注两条曲线的图例;给图形加上标题“y1 and y2”。

参考答案:
(1)t=linspace(0,4*pi,100);
(2)y1=sin(t);
y2=2*cos(2*t);
(3)plot(t,y1,'k-.');
text(1.2,sin(1.2)-0.1,'y1\rightarrow','Fontsize',12);
hold on;
plot(t,y2,'r--o');
text(4.8,1.5,'y2\rightarrow','Fontsize',12);
title('y1 and y2');
5. 编写程序,实现功能为:创建图形窗口,并且设置其默认背景为黄色,默认线宽为4 个
像素,在该窗口中绘制椭圆
22
22
1
x y
a b
+=的图像,其中的a和b任选。

参考答案:
figure('Color','y');
set(gca,'DefaultLineLineWidth',4);
a = 4;
b = 3;
x = linspace(-a,a,100);
y1 = sqrt((1-x.^2/(a^2))*b^2);
y2 = -sqrt((1-x.^2/(a^2))*b^2);
h1=line(x,y1); hold on;
h2=line(x,y2);
set(h1,'LineWidth','default'); set(h2,'LineWidth','default'); 三、编程题:
1. 编写一个脚本,判断输入字符串中每个单词的首字母是否为大写,若不是则将其修改为大写,其他字母为小写。

参考答案:
脚本文件内容为:
str = 'this is the string to be converted'; nlength = length(str); for k=1:nlength
if (k==1 || isspace(str(k-1))) && (str(k)<='z' && str(k)>='a') str(k) = char(double(str(k)) - 32); end end
disp(str);
2. 在MATLAB 中使用一个循环确定:如果用户最初在一个银行帐户中存储$10000,并且在每年的年终再存储$10000(银行每年支付6%的利息),那么账户上要积累$1000000要需要多长时间。

参考答案: 33年。

n=0; z=10000; y=1+0.01*6;
while z<=1000000 z=z*y+10000; n=n+1; end disp(n)
3. 编写matlab 语句,计算)(t y 的值
⎩⎨⎧<+≥+-=0
53053)(22t t t t t y
已知t 从-9到9每隔0.5取一次值。

运用循环和选择语句进行计算。

4. 编制程序,从键盘输入一系列的测量数,计算它们的平均值
∑==N i i
x N x 11以及标准差)
1()(12
12--=
∑∑==N N x x N N i N
i i i σ。

这些数可以是正数,负数或0。

要求给出输入值的个数,然
后用for 循环读取所有数值。

% Initialize sums
sum_x = 0; sum_x2 = 0;
% Get the number of points to input.
n = input('Enter number of points: ');
% Check to see if we have enough input data.
if n < 2 % Insufficient data
disp ('At least 2 values must be entered.');
else % we will have enough data, so let's get it.
% Loop to read input values.
for ii = 1:n
% Read in next value
x = input('Enter value: ');
% Accumulate sums.
sum_x = sum_x + x;
sum_x2 = sum_x2 + x^2;
end
% Now calculate statistics.
x_bar = sum_x / n;
std_dev = sqrt((n * sum_x2 - sum_x^2) / (n * (n - 1))); % Tell user.
fprintf('The mean of this data set is: %f\n', x_bar); fprintf('The standard deviation is: %f\n', std_dev); fprintf('The number of data points is: %f\n', n);
end。

相关文档
最新文档