第一轮上机练习答案Word文档格式.docx
《第一轮上机练习答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《第一轮上机练习答案Word文档格式.docx(39页珍藏版)》请在冰点文库上搜索。
![第一轮上机练习答案Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/3c311182-9541-4541-93e4-5f6fd5f83bf2/3c311182-9541-4541-93e4-5f6fd5f83bf21.gif)
-0.9803-0.59470.0833-0.31760.7603-0.87040.3617-0.1227
(5)normrnd(1,2,3,3),normrnd(1,2,15,8)
2.61153.67923.2761
1.46331.5790-0.3683
-0.97953.9578-1.5839
0.85410.70074.1859-1.7146-1.23240.77360.49764.7268
0.33880.13053.0368-1.04522.27051.75841.9603-0.0451
-0.68730.8413-2.16083.0757-0.20282.88842.33631.2068
1.99554.07030.84270.22042.1024-3.24090.8434-0.6153
3.9770-0.2130-0.3633-1.7625-1.1997-0.28942.77832.3609
-0.0930-1.6947-1.04911.63111.1720-0.40865.6186-3.7292
-0.69351.9388-1.46874.1065-3.0091-1.03632.04932.9802
0.5073-0.80711.57762.41580.01380.63580.97641.4378
2.32601.07180.14144.91481.92414.04202.82631.5233
-0.7084-0.25511.11162.00910.35800.92311.11193.4269
-1.40262.07080.26434.72913.47313.4549-1.21410.4507
0.76032.10580.07010.3204-0.2626-0.39241.97100.7337
0.86940.59261.7419-1.2796-3.65041.01500.9900-1.5410
1.9706-3.10862.45660.5778-1.4633-0.56580.4476-2.3272
-0.19101.26515.22433.38053.11132.17393.5529-0.4071
2.利用fix及rand函数生成[0,10]上的均匀分布的10×
10的整数随机矩阵a,然后统计a中大于等于5的元素个数。
a=fix((10+1)*rand(10))
b=sum(sum(a>
=5))
a=
510667691090
27460124101
7200442329
3900470314
10632390499
7106137428
4240722677
86747991103
2616821071
4407581591
b=
45
3.在给定的矩阵中删除含有整行内容全为0的行,删除整列内容全为0的列。
a=[0,0,0;
0,1,0;
0,0,1],
a(find(sum(abs(a),1)==0),:
)=[],
a(:
find(sum(abs(a),1)==0))=[]
10
01
二、绘图:
4.在同一图形窗口画出下列两条曲线图像:
y1=2x+5;
y2=x^2-3x+1,
并且用legend标注。
x=0:
0.01:
100;
y1=2*x+5;
y2=x.^2-3*x+1;
plot(x,y1,'
-.^'
x,y2,'
:
*'
),
legend('
y1'
'
y2'
)
5.画出下列函数的曲面及等高线:
z=x^2+y^2+sin(xy).
x=-8:
.01:
8;
y=-8:
[X,Y]=meshgrid(x,y);
Z=X.^2+Y.^2+sin(X*Y);
mesh(X,Y,Z);
meshc(X,Y,Z);
三、程序设计:
6.编写程序计算(x在[-3,3],间隔0.01)
x=-3:
3;
y=[];
forx0=x;
ifx0>
=-3&
x0<
-1
y=[y,(-x0.^2-4.*x0-3)/2];
elseifx0>
=-1&
1
y=[y,-x0.^2+1];
=1&
=3
y=[y,(-x0.^2+4.*x0-3)/2];
else
y=[y,[]];
end
end
y
7.有一列分数序列:
求前15项的和。
a=1;
b=2;
sum=0;
fork=1:
15;
c=b/a;
sum=sum+c;
t=b;
b=a+b;
a=t;
sum
sum=
24.5701
8.用至少三种方法编写函数实现求任意整数n的阶乘。
1)m=1
whilen>
m=m*n;
n=n-1;
m
2)functionresult=fa(n)
n=input('
pleaseinputn:
'
);
result=1;
fori=1:
n
result=result*i;
end
3)n=input('
x=1:
n;
prod(x)
9.将任意大于6的偶数m写成两个素数p1、p2的和(试着写出所有的m=p1+p2的可能形式)。
functiony=f(n);
请输入n的值:
ifmod(n,2);
error('
n不是素数.请重新运行程序.'
)
elseifn<
=6;
n必须大于6.请重新运行程序.'
else
form=1:
fork=m:
if(isprime(m))&
(isprime(k))&
(m+k==n);
disp([num2str(n),'
='
num2str(m),'
+'
num2str(k)]);
break;
end;
end;
10.是否任意3的倍数m可以写成两个素数p1、p2、p3的和(试着写出所有的m=p1+p2+p3
的可能形式)?
functiony=fg(n);
ifmod(n,3);
n不是3的倍数.请重新运行.'
6;
n必须不小于6.'
forp=k:
f(isprime(m))&
(isprime(p))&
(m+k+p==n);
num2str(k),'
num2str(p)]);
四、数据处理与拟合初步:
11.通过测量得到一组数据:
t
1
2
3
4
5
6
7
8
9
10
4.842
4.362
3.754
3.368
3.169
3.038
3.034
3.016
3.012
3.005
分别采用y=c1+c2e^(-t)和y=d1+d2te^(-t)进行拟合,并画出拟合曲线进行对比。
t=1:
10;
y=[4.842,4.362,3.754,3.368,3.169,3.038,3.034,3.016,3.012,3.005];
x1=exp(-t),
x2=t.*exp(-t),
y1=polyfit(x1,y,1),
y2=polyfit(x2,y,1)
x1=
0.36790.13530.04980.01830.00670.00250.00090.00030.00010.0000
x2=
0.36790.27070.14940.07330.03370.01490.00640.00270.00110.0005
y1=
5.21653.1564
y2=
5.02732.9973
>
y1=5.2165*exp(-t)+3.1564,
y2=5.0273*t.*exp(-t)+2.9973,
plot(t,y,t,y1,'
r--'
t,y2,'
gx'
5.07543.86243.41613.25193.19153.16933.16123.15813.15703.1566
4.84674.35803.74823.36563.16673.07213.02943.01083.00292.9996
12.计算下列定积分:
(2)x=0:
2;
z2=exp(2*x);
trapz(x,z2)
26.8000
(3)t=-1:
1;
z3=x.^2-3*x+0.5;
trapz(x,z3)
-2.3333
13.微分方程组
当t=0时,x1(0)=1,x2(0)=-0.5,求微分方程t在[0,25]上的解,并画出相空间轨道图像。
t=0:
25;
[x,y]=dsolve('
Dx=0.5-x'
Dy=x-4*y'
x(0)=1'
y(0)=-0.5'
t'
x=
1/2+1/2*exp(-t)
y=
1/8+1/6*exp(-t)-19/24*exp(-4*t)
>
x=1/2+1/2*exp(-t);
y=1/8+1/6*exp(-t)-19/24*exp(-4*t);
plot(t,x,t,y)
14.设通过测量得到时间t与变量y的数据:
t=[00.30.81.11.62.3];
y=[0.50.821.141.251.351.41];
分别采用多项式:
y=a0+a1t+a2t2
和指数函数
y=b0+b1e^t+b2te^t
进行拟合,并计算均方误差、画出拟合效果图进行比较。
t=[00.30.81.11.62.3];
tt=0:
2.3;
a=polyfit(t,y,2)
yy1=polyval(a,tt);
z1=polyval(a,t);
-0.23460.91340.5326
wucha1=sqrt(sum((z1-y).^2))
wucha1=
0.0720
B=[ones(size(t'
))exp(-t)'
(t.*exp(-t))'
];
b=B\y'
1.4132
-0.9136
0.3808
yy2=b
(1)+b
(2)*exp(-tt)+b(3)*tt.*exp(-tt);
z2=b
(1)+b
(2)*exp(-t)+b(3)*t.*exp(-t);
wucha2=sqrt(sum((z2-y).^2))
wucha2=
0.0026
plot(t,y,'
tt,yy1,t,z1,'
o'
plot(t,y,'
tt,yy2,t,z2,'
15.观察函数:
y=e^x-1.5cos(2*pi*x)
在区间[-1,1]上的函数图像,完成下列两题:
(1)用函数fzero求解上述函数在[-1,1]的所有根,验证你的结果;
(2)用函数fminbnd求解上述函数在[-1,1]上的极小、极大、最小和最大值,在函数图像
上标出你求得的最小值点作出验证。
注:
可以用helpfzero命令查看fzero的调用格式,fzero典型的调用方法是:
fzero(@myfun,x0)%返回函数myfun在x0附近的根;
fminbnd典型的调用方法是:
fminbnd(@myfun,x1,x2)%返回函数myfun在区间[x1,x2]上的最小值。
x=-1:
y=exp(x)-1.5*cos(2*pi*x);
plot(x,y,'
g'
holdon
y0=0
y0=
0
plot(x,y0,'
k'
z=fzero('
f'
-0.8)
z=
-0.7985
z=fzero('
-0.1)
-0.1531
-0.9)
0.1)
0.1154
x=fminsearch('
-0.2,0.2)
-0.0166
-1,1)
-1.0062
x=fminsearch('
f1'
0.4,0.6)
0.5288
-0.6,-0.4)
-0.4897
x1=-1.0062
y1=exp(x1)-1.5*cos(2*pi*x1)
-1.1333
plot(x1,y1,'
练习2编程练习
1.题目:
判断101-200之间有多少个素数,并输出所有素数。
编写以fun1为名的脚本文件。
程序分析:
判断素数的方法:
用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
====================================================
函数文件Checkprime.m
functionm=checkprime(a)%函数文件;
判断某个数是否是素数;
ifa==1
m=0;
elseifa==2||3
m=1;
fori=2:
fix(sqrt(a))
ifrem(a,i)==0
程序:
qd=input('
请输入起点:
%计算任意两数之间的素数
zd=input('
请输入终点:
shu=[];
fori=qd:
zd
ifcheckprime(i)
shu=[shu,i];
fprintf('
%d到%d之间的素数为:
\n'
qd,zd);
fori=1:
length(shu)
fprintf('
%d'
shu(i));
ifrem(i,20)==0
101
200
101到200之间的素数为:
101103107109113127131137139149151157163167173179181191193197
199179181191193197199
2.题目:
打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:
153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
编写以fun2为名的脚本文件。
利用for循环控制100-999个数,每个数分解出个位,十位,百位。
form=100:
999
m1=fix(m/100);
%求m的百位数字
m2=rem(fix(m/10),10);
%求m的十位数字
m3=rem(m,10);
%求m的个位数字
ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3
disp(m)
end
153
370
371
407
3.题目:
将一个正整数分解质因数。
输入90,打印出90=2*3*3*5。
编写以fun3为名的函数文件。
对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<
k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
方法一:
factor(n)%输入n值
方法二:
4.题目:
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
编写以fun4为名的函数文件。
==========================================================
s=input('
请输入字符