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
0.511.522.533.54
6
4.一个数恰好等于它的因子之和,这个数就称为完数。
例如,6的因子为1,2,3,而6=1+2+3,因此6就是一个完数。
编程找出2000以内的所有完数。
g=[];
for n=2:2000 s=0;
for r=1:n-1
if mod(n,r)==0 s=s+r; end end
if s==n
g=[g n]; end end g
g =6 28 496
5.编写一个函数,模拟numel函数的功能,函数中调用size函数。
function y=numelnumel(x)
m=size(x);
y=m(1)*m(2);
numelnumel([1 2 3;4 5 6])
ans =
6
6. 编写一个函数,模拟length函数的功能,函数中调用size函数。
function y=lengthlength(x)
m=size(x);
y=max(m(1),m(2));
lengthlength([1 2 3;4 5 6])
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.6331 0.5006 0.6487 0.7124 0.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 =
1 7 11 13 77 91 143 1001
>> sushupd(1003)
该数不是素数
g =
1 17 59 1003
>> sushupd(1007)
该数不是素数
g =
1 19 53 1007
>> sushupd(1009)
该数是素数
>> sushupd(1011)
该数不是素数
g =
1 3 337 1011
9.将[1563 35 4123 65 121233 356 57; 1223543 43 23 132 345 45 31]从小到大排序,排成一列,禁用sort函数。
s=[1563 35 4123 65 121233 356 57;1223543 43 23 132 345 45 31]; 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 =
Columns 1 through 8
23 31 35 43 45 57 65 132
Columns 9 through 14
345 356 1563 4123 121233 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;
end
end
if s2==a
s=[s1 s2];
g=[g;s];
end
end
g
g =
284 220
1210 1184
11.用二分法求函数y=exp(x)-10的0点,要求误差小于0.001
x1=0;
x2=10;
while x2-x1>0.001
if (exp(x1)-10)*(exp((x1+x2)/2)-10)>0
x1=(x1+x2)/2;
else x2=(x1+x2)/2;
end
end
x=[x1 x2]
x =
2.3022 2.3029
12.现有一组数如下:
但y的数据不太准确,已知其函数关系可能是y=12*x,y=12*x+1,y=12*x-1,y=12.5*x,请用matlab判断这四个函数,哪个与数据的契合度最
高?(提示:根据函数在各个点的值与原数据差异度来判断契合度)
x=1:8;
y(1,:)=12*x;
y(2,:)=12*x+1;
y(3,:)=12*x-1;
y(4,:)=12.5*x;
y(5,:)=[12 27 34 48 67 79 89 109];
t=zeros(1,4);
for i=1:4
for j=1:8
t(i)=t(i)+abs(y(i,j)-y(5,j));
end
end
[x,i]=min(t)
i =
4
即为y=12.5*x
13.已知rand函数能生成0到1之间的随机数。
而古人用抛石头的方法,根据落在在一个圆内的石子数与在园外正方形内的石子数之比来求π,请用matlab软件模拟此过程,并求出π的值,然后,分析所求π的值的误差产生于什么地方。
s=rand(2,1000);
pai=0;
for i=1:1000
if s(1,i).^2+s(2,i).^2<1
pai=pai+4/1000;
end
end
pai
pai =
3.1120
14.编写一个函数文件,函数的输入项为三维坐标的两个点,函数没有输出项,函数运行结果为画出这两个点所能确定的最小球
function qiu(x1,x2) o=(x1+x2)/2;
r=sqrt(sum((x1-x2).^2))/2; [X,Y,Z] = sphere(50); X=r*(X+o(1)); Y=r*(Y+o(2)); Z=r*(Z+o(3)); mesh(X,Y,Z) axis equal
qiu([1 2 3],[4 5 6])
10
11121314。