MATLAB程序设计例题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.编写程序:计算1/3+2/5+3/7+……+10/21
法一:
s=0;
for i=1:10
s=s+i/(2*i+1);
end
s
s=
4.4096
法二:
sum((1:10)./(3:2:21))
ans=
4.4096
2.编写程序:计算1~100中即能被3整除,又能被7整除的所有数之和。
s=0;
for i=1:100
if mod(i,3)==0&&mod(i,7)==0
s=s+i;
end,end
s
s=
210
3.画出y=n!的图(1<=n<=10),阶乘的函数自己编写,禁用MATLAB自带的阶乘函数。
x=1:10;
for i=1:10
try y(i)=y(i-1)*i;
catch y(i)=1;
end,end
plot(x,y)
12345678910
00.5
1
1.5
2
2.5
3
3.5
4
64.一个数恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1,2,3,而6=1+2+3,因此6就是一个完数。编程找出2000以内的所有完数。
g=[];for n=2:2000s=0;for r=1:n-1if mod(n,r)==0s=s+r;end end if s==n g=[g n];end end g g =628496
5.编写一个函数,模拟numel函数的功能,函数中调用size函数。
function y=numelnumel(x)
m=size(x);
y=m(1)*m(2);
numelnumel([123;456])
ans=
6
6.编写一个函数,模拟length函数的功能,函数中调用size函数。
function y=lengthlength(x)
m=size(x);
y=max(m(1),m(2));
lengthlength([123;456])
ans=
3
7.求矩阵rand(5)的所有元素和及各行平均值,各列平均值。
s=rand(5);
sum=sum(sum(s))
mean2=mean(s,2)
mean1=mean(s)
sum=
13.8469
mean2=
0.5583
0.5536
0.6554
0.4931
0.5090
mean1=
0.63310.50060.64870.71240.2745
8.编程判断1001,1003,1007,1009,1011是否为素数,若不是,输出其约数。
function sushupd(x)
s=fix(sqrt(x));
p=1;
for i=2:s
if mod(x,i)==0
p=0;
break
end
end
if p==1
disp('该数是素数')
else g=[];
for i=1:x
if mod(x,i)==0
g=[g i];
end
end
disp('该数不是素数')
g
end
sushupd(1001)
该数不是素数
g=
17111377 911431001
>>sushupd(1003)
该数不是素数
g=
117591003
>>sushupd(1007)
该数不是素数
g=
119531007
>>sushupd(1009)
该数是素数
>>sushupd(1011)
该数不是素数
g=
133371011
9.将[15633541236512123335657;
122354343231323454531]从小到大排序,
排成一列,禁用sort函数。
s=[15633541236512123335657;122354343231323454531]; s=[s(1,:)s(2,:)];
for i=1:length(s)-1
for i=1:length(s)-1
if s(i)>s(i+1)
a=s(i);
s(i)=s(i+1)
s(i+1)=a;
end
end,end
s
s=
Columns1through8
2331354345 5765132
Columns9through14
34535615634123121233 1223543
10.两个整数a和b,如果a的因子和等于b,b 的因子和也等于a,且a不等于b,则称a,b为一对亲密数。请寻找并输出2000以内的所有亲密数对。
g=[];
for a=1:2000
s1=0;
s2=0;
for r=1:a-1
if mod(a,r)==0
s1=s1+r;
end
end
if a==s1
continue
end
if find(g==a)~=0
continue
end
for r=1:s1-1
if mod(s1,r)==0
s2=s2+r;