matlab程序设计例题及答案

更新时间:2023-12-04 05:23:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.编写程序:计算1/3+2/5+3/7+……+10/21

法一: s=0;

for i=1:10

s=s+i/(2*i+1); end ss =

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 ss =

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)

43.532.521.510.50x 10612345678910

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.现有一组数如下: x y 1 12 2 27 3 34 4 48 5 67 6 79 7 89 8 109 但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])

14131211101110987468

本文来源:https://www.bwwdw.com/article/xswt.html

Top