实验3循环结构程序设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三 循环结构程序设计

1.根据n 32122222

11116+⋯+++=π,求π的近似值。当n 分别取100、1000、10000时,结果是多少?

1)for 语句:

s=0;

n=input('请输入n 的值:');

for i=1:n

s=s+1/i^2;

end

p=sqrt(6*s);

p

2)while 语句:

s=0;

i=1;

n=input('请输入n 的值:');

while i<=n

s=s+1/i^2;

i=i+1;

end

p=sqrt(6*s);

P

运行结果:

请输入n 的值:100

p =

3.1321

>> shiyan31

请输入n 的值:1000

p =

3.1406

>> shiyan31

请输入n 的值:10000

p =

3.1415

2.根据y=1+1

-n 215131+⋯++,求: (1)y<3时的最大n 值。

(2)与(1)的n 值对应的y 值。

命令语句:

n=1;

y=0;

while y<3

y=y+1/(2*n-1);

n=n+1;

end

y=y-1/(2*(n-1)-1);

n=n-2;

disp(['满足条件的n 的值是:',num2str(n),',','对应的

y 的值是:',num2str(y)])

运行结果:

满足条件的n 的值是:56,对应的y 的值是:2.9944

3.考虑以下迭代公式: x x n n b a +=

+1 其中a 、b 为正的常数。

(1)编写程序求迭代的结果,迭代的终止条件为

1051-+≤-x x n n ,迭代初值=1.0,迭代次数不超过500次。

(2)如果迭代过程收敛于r ,那么r 的准确值是242a b b

+±-,当(a,b )的值

取(1,1)、(8,3)、(10,0.1)时,分别对迭代结果的准确值进行比较。 命令语句:

a=input('请输入一个正数a:');

b=input('请输入一个正输b:');

x=1.0;

n=0;

while abs(x-(a/x-b))>10e-5 & n<=500

x=a/(b+x);

n=n+1;

end

x

r1=(-b+sqrt(b^2+4*a))/2

r2=(-b-sqrt(b^2+4*a))/2

运行结果:

>> shiyan4

请输入一个正数a:1

请输入一个正输b:1

x =

0.6181

r1 =

0.6180

r2 =

-1.6180

>> shiyan4

请输入一个正数a:8

请输入一个正输b:3

x =

1.7016

r1 =

1.7016

r2 =

-4.7016

>> shiyan4

请输入一个正数a:10

请输入一个正输b:0.1

x =

3.1127

r1 =

3.1127

r2 =

-3.2127

实验结论:

✓ x 总是收敛于r1(

242a b b ++-)

✓ r2= -r1-b 4.已知⎪⎪⎩⎪⎪⎨⎧>+-=======---3,23,12,01,1321321

n n n n f f f

f f f f n n n n 求f f 100

1~中: (1)最大值、最小值、各数之和。

命令语句:

f(1)=1;

f(2)=0;

f(3)=1;

max=f(3);

min=f(2);

sum=2;

for i=4:100

f(i)=f(i-1)-2*f(i-2)+f(i-3);

sum=sum+f(i);

if f(i)>max

max=f(i);

elseif f(i)

min=f(i);

end

sum

max

min

运行结果:

>> shiyan44

sum =

-7.4275e+011

max =

4.3776e+011

min =

-8.9941e+011

(2)正数、零、负数的个数。

命令语句:

f(1)=1;

f(2)=0;

f(3)=1;

pn=2;

nn=0;

zn=1;

for i=4:100

f(i)=f(i-1)-2*f(i-2)+f(i-3);

if f(i)>0

pn=pn+1;

elseif f(i)<0

nn=nn+1;

else

zn=zn+1;

end

end

disp(['正数的个数:',num2str(pn)])

disp(['负数的个数:',num2str(nn)])

disp(['零的个数:',num2str(zn)])

运行结果:

正数的个数:49

负数的个数:49

零的个数:2

5.若两个连续自然数的乘积减1是素数,则称这两个连续自然数是亲密数对,该素数是亲密素数。例如,2 3-1=5,由于5是素数,所以2和3是亲密数对,5是亲密素数。求[2,50]区间内:

(1)亲密数对的对数。

(2)与上述亲密数对对应的所有亲密素数之和。

命令语句:

相关文档
最新文档