matlab程序设计例题及答案.docx
《matlab程序设计例题及答案.docx》由会员分享,可在线阅读,更多相关《matlab程序设计例题及答案.docx(6页珍藏版)》请在冰豆网上搜索。
matlab程序设计例题及答案
matlab程序设计例题及答案
1.编写程序:
计算1/3+2/5+3/7+……+10/21
法一:
s=0;
fori=1:
10
s=s+i/(2*i+1);endss=
法二:
sum((1:
10)./(3:
2:
21))ans=
2.编写程序:
计算1〜100中即能被3整除,又能被7整除的所有数之和。
s=0;
fori=1:
100
ifmod(i,3)==0&&mod(i,7)==0s=s+i;end,end
ss=
210
3.画出y=n!
的图,阶乘的函数自己编写,禁用MATLAB
自带的阶乘函数。
x=1:
10;fori=1:
10
tryy(i)=y(i-1)*i;catchy(i)=1;end,end
Plot(x,y)
10612345678910
4.一个数恰好等于它的因子之和,这个数就称为完数。
例如,6的因子为1,2,3,而6=1+2+3,因此6就是一个完
数。
编程找出20XX以内的所有完数。
g=;
forn=2:
20XXs=0;
forr=1:
n-1
ifmod(n,r)==0s=s+r;endend
ifs==n
g=[gn];endendg
g=628496
5.编写一个函数,模拟numel函数的功能,函数中调用
size函数。
functiony=numelnumel(x)m=size(x);y=m
(1)*m
(2);numelnumel([123;456])
ans=
6
6.编写一个函数,模拟length函数的功能,函数中调
用size函数。
functiony=lengthlength(x)m=size(x);
y=max(m
(1),m
(2));
lengthlength([123;456])
ans=
值。
s=rand(5);
sum=sum(sum(s))mean2=mean(s,2)mean1=mean(s)sum=
mean2=meanl=
8.编程判断1001,1003,1007,1009,1011为素数,若
不是,输出其约数。
functionsushupd(x)s=fix(sqrt(x));p=1;
fori=2:
s
ifmod(x,i)==0p=0;breakendend
ifp==1
disp('该数是素数')elseg=;fori=1:
x
ifmod(x,i)==0g=[gi];endend
disp('该数不是素数')gend
是否
sushupd(1001)该数不是素数g=
1711137791143
119531007
9.将[15633541236512123335657;12235434323
1323454531]从小到大排序,排成一列,禁用sort函数
s=[15633541236512123335657;12235434323132
3454531];s=[s(1,:
)s(2,:
)];fori=1:
length(s)-1for
a=s(i);
i=1:
length(s)-1ifs(i)>s(i+1)
s(i)=s(i+1)
s(i+1)=a;endend,endss=
Columns1through8
233135
43
45
57
65
132
Columns9through14
3453561563
4123
121233
1223543
10.两个整数a和b,
如果a的因子和等于
b,
b的因子
和也等于a,且a不等于b,则称a,b为一对亲密数。
请寻
找并输出20XX以内的所有亲密数对
g=;
forr=1:
a-1
ifmod(a,r)==0s1=s1+r;endend
ifa==s1continueend
iffind(g==a)〜=0continueend
forr=1:
s1-1
ifmod(s1,r)==0s2=s2+r;
endend
ifs2==a
s=[s1s2];g=[g;s];endendgg=
28422012101184
11.用二分法求函数y=exp(x)-10的0点,要求误差小于
x1=0;x2=10;
whilex2-x1>
if(exp(x1)-10)*(exp((x1+x2)/2)-10)>0
x仁(x1+x2)/2;elsex2=(x1+x2)/2;endend
x=[x1x2]x=
12.现有一组数如下:
xy112227334448567
6797898109但y的数据不太准确,已知其函数关系可能是y=12*x,y=12*x+1,y=12*x-1,y=*x,请用matlab判断这四个函数,哪个与数据的契合度最
高?
x=1:
8;
y(1,:
)=12*x;y(2,:
)=12*x+1;y(3,:
)=12*x-1;
y(4,:
)=*x;
y(5,:
)=[12273448677989109];t=zeros(1,4);
fori=1:
4
forj=1:
8
t(i)=t(i)+abs(y(i,j)-y(5,j));endend
[x,i]=min(t)i=
4即为y=*x
13.已知rand函数能生成0到1之间的随机数。
而古人用抛石头的方法,根据落在在一个圆内的石子数与在园外正方形内的石子数之比来求n,请用matlab软件模拟此过程,
并求出n的值,然后,分析所求n的值的误差产生于什么地
方。
s=rand(2,1000);pai=0;
fori=1:
1000
ifs(1,i).A2+s(2,i).A2>sushupd(1003)该数不是素
数g=
117591003
119531007
>>sushupd(1011)该数不是素数g=
133371011
9.将[15633541236512123335657;12235434323
1323454531]从小到大排序,排成一列,禁用sort函数。
s=[15633541236512123335657;12235434323132
3454531];s=[s(1,:
)s(2,:
)];fori=1:
length(s)-1for
i=1:
length(s)-1ifs(i)>s(i+1)a=s(i);